复制如何工作:
- 主库开启二进制日志,在每次准备提交事务完成数据更新之前,主库将数据更新的事件记录到二进制日志中。
- 从库将主库的二进制日志复制到本地中继日志中。
- 从库在通过中继日志读取事件在从服务器执行。
整个过程会启动三个线程。
- 从库启动i/o线程与主库建立客户端连接
- 主库启动一个二进制转储线程读取主库上二进制日志的事件,从库io线程将接收到的事件记录至中继日志中
- 从库启动一个sql线程从中继日志中读取事件在从库执行
准备工作
主服务器:
mysql版本: 5.6
host: 从服务可以访问的ip
从服务器:
mysql版本: 5.6
配置步骤
- 在主库和从库创建账号
REPLICATION SLAVE, REPLICATION CLIENT 这是权限
语法:
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '用户名'@'主机' IDENTIFIED BY '密码'
示例:
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'liuzhiqiang'@'%' IDENTIFIED BY '123456'
- 主库在mysql的my.cnf 或者 my.ini 文件中增加或修改(主库开启二进制日志)
log-bin = mysql-bin
server_id = 10
- 使用 SHOW MASTER STATUS 命令查看日志文件名
file | position |
---|---|
mysql-bin.000007 | 689 |
- 从库在mysql的my.cnf 或者 my.ini 文件中增加或修改
log-bin = mysql-bin
server_id = 2
relay_log = /liuzhiqiang/mysql/mysql-relay_log
log_slave_update = 1
read_only = 1
- 从库连接主库(从库执行)
CHANGE MASTER TO MASTER_HOST = '主库ip',
MASTER_USER='liuzhiqiang',
MASTER_PASSWORD='lzq199528',
MASTER_LOG_FILE='mysql-bin.000007',
MASTER_LOG_POS=0
- 开始复制,执行下面语句
START SLAVE
- 如果执行报错的话
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
先执行 reset slave 在执行 START SLAVE
之后再主库做的更改都会同步到备库