Mysql主从
2021年3月10日
常见的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 | [mysqld] |
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 | mysql> set global validate_password_length=4; --设置密码的长度为4 |
从节点:
1.配置my.cnf
1 | [mysqld] |
2.配置同步参数
1 | mysql> change master to |
3.执行show slave status\G;
1 | Slave_IO_Running: connecting |
双主
master与slave可以做读写分离,增强读的性能,但如果从节点进行写入操作会使数据不一致,这就诞生了双主,两台mysql server互为主从,皆可读写。
配置方案与上面相似,但需要两步:
- 执行show master status;命令查看bin日志。
- 在change master to 配置时需要加上MASTER_LOG_FILE=‘bin日志的名字’。