mysql 标签

sysbench压测MySQL性能及优化 有更新!

sysbench安装流程

下载
wget https://github.com/akopytov/sysbench/archive/master.zip
unzip安装
yum install unzip
解压
unzip master.zip
安装相关依赖
yum -y install  make automake libtool pkgconfig libaio-devel vim-common
yum -y install mysql-devel 
编译

进入之前解压后的文件夹

./autogen.sh
#如果不是yum安装的原文件地址的话,需要添加参数改
./configure 
make
make install
阅读全文 »

RR级别下update操作的是快照读还是当前读? 有更新!

我们知道在RR级别下,重复的select操作,读取的值都会是一致的。即便在两次select操作的中间,有一个事务B修改了值,但是在事务A中select读取的值还是一致的。

那么如果是update操作呢?之前在网上看到一篇博客说RR级别下,CAS操作是没有意义的。因为version值在一个事务中都是一致不变的。于是我有了疑惑打算自己来验证一下。

验证想法

RR级别下update操作的是快照读还是当前读?

准备数据

准备了以下简单的表数据结构。

sidnamesexversion
1zhangsan00
2lisi10
阅读全文 »

Mysql主从复制原理及同步延迟问题

主从复制解决的问题

  • 数据分布:通过复制将数据分布到不同地理位置
  • 负载均衡:读写分离以及将读负载到多台从库
  • 备份:可作为实时备份
  • 高可用性:利用主主复制实现高可用

复制原理

复制的原理其实很简单,仅分为以下三步:

  1. 在主库上把数据更改记录到二进制日志binary log中,具体是在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中去,Mysql会按照事务提交的顺序来记录二进制日志的。日志记录好之后,主库通知存储引擎提交事务。

  2. 从库会启动一个IO线程,该线程会连接到主库。而主库上的binlog dump线程会去读取主库本地的binlog日志文件中的更新事件。发往从库,从库接收到日志之后会将其记录到本地的中继日志relay-log当中。

  3. 从库中的SQL线程读取中继日志relay-log中的事件,将其重放到从库中。(在5.6版本之前SQL线程是单线程的,使得主从之间延迟更大)

两种复制方式

日志文件中记录的到底是什么呢?
mysql支持了两种日志格式,这两种日志格式也体现了各自的复制方式

阅读全文 »

mysql主从搭建小白教程

先准备两台Mysql数据库

  • 主数据库:192.168.0.106
  • 从数据库:192.168.0.107

如果还没创建好数据库的话可以参考我之前的mysql搭建过程。

docker安装mysql小白教程

1.在主库创建同步账户Slave

CREATE USER 'slave'@'%'  IDENTIFIED BY 'slave123456';

如果出现以下异常的话。

ERROR 3009 (HY000): Column count of mysql.user is wrong. 
Expected 45, found 43. Created with MySQL 50645, now running 50727. 
Please use mysql_upgrade to fix this error.

阅读全文 »