MySQL主从复制
1. MySQL主从复制原理
MySQL的主从复制中主要有三个线程:
- 主服务器:binlog dump thread
- 从服务器:I/O thread
- 从服务器:SQL thread
过程:
- master将改变记录到二进制日志(bin log)
- slave将master的bin log 拷贝到它的中继日志(relay log)
- slave重做中继日志中的事件,将改变应用到自己的数据库中
2. 主从搭建
准备:两台服务器,分别安装MySQL并启动服务
- 主库Master:192.168.131.100
- 从库Slave:191.168.131.101
配置主库Master:
修改MySQL的配置文件:
/etc/my.cnf
1
2
3
4
5
6
7[mysqld]
#启用二进制日志
log-bin=mysql-bin
# 服务唯一ID
server-id=100重启MySQL服务
1
2
3systemctl restart mysqld
# 进入MySQL查看log_bin日志是否启动成功
show variables like '%log_bin%';创建一个用户用于同步数据
1
2
3create user 'backup'@'%' IDENTIFIED BY 'backup';
grant file on *.* to 'backup'@'%';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%';查看Master的状态,执行完此步骤后不要再有任何SQL操作
1
2
3show master status;
# 记住File和Position的内容,后面配置slave要用到
配置从库Slave:
修改MySQL的配置文件:
/etc/my.cnf
1
2
3
4
5
6
7# 配置从服务器的唯一ID
server-id=101
#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。
read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE重启MySQL服务
1
systemctl restart mysqld
登陆MySQL,在Slave中添加Master的信息
1
2
3
4
5
6
7# master_host是Master的ip
# master_log_file和master_log_pos是之前查看Master状态时显示的File和Position信息
change master to master_host='192.168.131.100', master_user='backup', master_password='backup',master_log_file='mysql-bin.000002', master_log_pos=154;
# 若出现问题
stop slave;
start slave;最后查看Slave的状态
1
show slave status\G;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AngYuZh の Blog!