MySql 主从复制
MySql 主从复制
主要介绍
mysql 主从复制是一个异步的复制过程,底层是基于mysql数据库自带的二进制日志功能。就是一台或多台Mysql数据库(slave从库)从另一台(master主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库数据与主库数据保持一致。mysql主从复制是mysql自带功能,无需借助第三方工具
mysql复制过程主要分三步:
1.master将改变记录到二进制日志(binary log)
2.slave 将master的二进制日志 拷贝到它的中继日志(relay log)文件中
3.slave重做中继日志中的事件,将改变应用到自己的数据库中

配置过程:
1.准备两个服务器
master: 192.168.31.128
slave: 192.168.31.127
2.配置主服务器master
1.进入my.cnf文件, vim /etc/my.cnf 添加以下内容:
log-bin=mysql-bin # 启用二进制日志
server-id=128 # 服务器唯一ID,可以任意设置,但必须唯一
binlog-ignore-db=mysql # 不要复制的数据库
binlog-do-db=test01 # 要复制的数据库名
binlog_format=STATEMENT
ps aux | grep mysql #查看mysql服务名
2.重启mysql服务
systemctl restart mysql; (你的可能是systemctl restart mysqld )#重启mysql服务
3.查看mysql是否启动成功systemctl status mysql ; // 成功状态,绿色的active(running)
4.检查防火墙是否关闭
systemctl status firewalld;
防火墙开放指定端口
firewall-cmd –zone=public –add-port=3306/tcp –permanent
5.进入数据库 授权
进入mysql
mysql -uroot -proot
1 |
|
6.查看主服务器状态
show master status;
如:
+——————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000001 | 663 | | | |
+——————+———-+————–+——————+——————-+
3.配置从库slave
(1)进入my.cnf文件 vim /etc/my.cnf
添加以下内容:
server-id=127 # id唯一
relay-log=mysql-relay
(2)重启mysql
systemctl restart mysqld;
(3)查看mysql是否启动成功
systemctl status mysqld; // 出现绿色 active(running)
(4)查看防火墙是否关闭
systemctl status firewalld;
(5)进入mysql
mysql -uroot -proot
(6)设置主从同步
change master to
master_host=’192.168.31.128’, master_user=’zhangkejiu’,master_password=’123456’,
master_log_file=’mysql-bin.000001’,master_log_pos=663;
#启动从库
start slave;
注意:master_log_file 和master_log_pos的值要和主服务器显示的状态一致
(7)查看从服务器状态
show slave status\G
如下显示 表示配置成功
1 | Slave_IO_Running: Yes |
遇见失败问题:
Fatal error:The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
由于我的是虚拟机克隆过来的,两个mysqlUUID 值相同冲突了
修改 auto.cnf 下server-uuid值(随便改成不同值就行)
从根路径查找文件
find / -name auto.cnf
修改后重启mysql服务,再重新配置从库配置
1 | stop slave; |




