MySQL之主从复制
概述
主从复制指主数据库的DDL和DML操作通过二进制日志传送到从库服务器,在从库上对这些日志重新执行,从而使得从库和主库的数据保持同步
MySQL支持链状复制,一个主库可以向多个从库进行复制
作用:
- 主库故障,可以快速切换到从库提供服务
- 实现读写分离,降低主库的访问压力
- 从主库执行备份,避免备份期间影响主库服务
原理
- Master将DDL/DML操作写入本地binlog
- Slave的IO线程读取Master的binlog,并将其内容写入Slave本地的Relay log
- Slave的SQL线程从中继日志Relay Log读取内容,并重做其中的时间,将改变反映到它自己的数据
搭建
主库配置
修改配置文件
1 | # 要保证id在整个集群环境唯一 |
这里read-only仅针对普通用户,super用户仍有权限对数据库进行写操作;可以使用
super-read-only=1
限制super用户进行写操作
重启服务后,主库还需要创建远程连接的账号,并赋予主从复制的权限
1 | CREATE USER 'XXX'@'XXX' IDENTIFIED WITH mysql_native_password BY 'XXX' |
查看二进制日志坐标
1 | show master status; |
字段说明:
- file:从哪个文件开始推送日志文件
- position:从哪个位置开始推送日志
- binlog_ignore_db:指定不需要同步的数据库
从库配置
修改配置文件
1 | server-id=xxx |
重启服务后,执行如下SQL语句
1 | # 8.0.23之后 |
启动主从复制:
1 | start replica; # 8.0.22之后 |
查看主从复制状态(在从库执行)
1 | show replica status; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 多巴胺の小窝!
评论