​ 常见的Mysql高可用策略,Master配上Slave(可多个),Slave与Master的数据进行同步,当Master宕机时可以顶上去。

原理:

​ 从节点开两个线程,I/O线程负责读取主节点中的二进制日志到本机的relay日志,SQL线程负责数据重放。

​ 有很多主从复制的方法,SBR(基于SQL语句复制)、RBR(基于行复制)、MBR(混合模式(默认使用SBR))以及现在Mysql版本的GITDs(基于事务复制)。

  • SBR优势在于记录了所有语句,日志较小且方便日后审计。但弊端也较多,有些语句无法被正确地复制,有些语句会执行大量的行级锁。

  • RBR则是记录了数据变化,是较为安全的复制方式,并且有更少的行级锁,但相对而言日志较大,不能直接进行审计。

  • GITDs的优势在于完全基于事务,大大简化了复制过程。

配置:

1.首先准备两台安装好Mysql的server,安装教程请看使用RPM安装安装Mysql。

主节点:

2.配置主节点my.cnf

1
2
3
4
5
[mysqld]

log-bin=mysql-bin #开启二进制日志

server-id=1 #配置服务器ID

3.创建用户

​ 从服务器需要账户来连接主服务器,一从一账号或者多从一账号

1
mysql > grant replication slave on *.* to 'share'@'10.1.1.%' identified by '1234';

​ 如果出现以下报错:

1
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

​ 报错内容:您设置的密码不满足当前要求。请执行以下命令调整数据库的密码级别:

1
2
mysql> set global validate_password_length=4; --设置密码的长度为4
mysql> set global validate_password_policy=0; --将策略级别设为0

从节点:

1.配置my.cnf

1
2
3
[mysqld]

server-id=2

2.配置同步参数

1
2
3
mysql> change master to
-> MASTER_HOST='10.1.1.133',
-> MASTER_USER='share';

3.执行show slave status\G;

1
2
Slave_IO_Running: connecting
Slave_SQL_Running: No

双主

​ master与slave可以做读写分离,增强读的性能,但如果从节点进行写入操作会使数据不一致,这就诞生了双主,两台mysql server互为主从,皆可读写。

​ 配置方案与上面相似,但需要两步:

  1. 执行show master status;命令查看bin日志。
  2. 在change master to 配置时需要加上MASTER_LOG_FILE=‘bin日志的名字’。