CentOS7 64位 mysql主从同步配置(2020.5.18)
一、主从主机IP
主库主机IP:192.168.30.130
从库主机IP:192.168.30.129
二、主库主机配置
1.进入主服务器,停止主服务mysql服务: systemctl stop mysqld;
主节点编辑配置文件
vim /etc/my.cnf 的 [mysqld] 下面
添加如下配置:
server-id=1 log-bin=master-bin log-bin-index=master-bin.index
注: 多台节点的server-id必须不同,否则会出现异常。
重启数据库,使得配置生效:
然后启动mysql服务:
systemctl start mysqld;
2. 进入主节点mysql,创建用户:
create user 'xiaomi'@'192.168.30.129' identified by '123456';
注:ip即允许连接的ip地址,安全起见可以写slave从节点的ip(192.168.30.129),或者直接写%代表所有ip均可以连接。
3. 对用户进行权限设置:
格式:
grant replication slave on *.* to 'username'@'ip';
操作:
grant replication slave on *.* to 'xiaomi'@'192.168.30.129';
注: 表示从ip使用username连接过来的请求,允许复制。所以,ip为从节点的ip,username为上面创建的username
使配置生效:
flush privileges;
4. 进入从节点服务器,停止mysql服务:
systemctl stop mysqld;
从节点slave编辑配置文件
vim /etc/my.cnf 的[mysqld] 下面添加如下配置:
server-id=2 relay-log=slave-relay-bin relay-log-index=slave-relay-bin
重启mysql服务,使配置生效:
service mysqld restart
二、从库主机配置
CHANGE MASTER TO MASTER_HOST='192.168.30.130', -- 主库ip MASTER_USER='xiaomi', -- 用户名 MASTER_PORT=3306, -- 端口号 MASTER_PASSWORD='123456', -- 密码 MASTER_LOG_FILE='mysql-bin.000007', -- 开始文件 MASTER_LOG_POS=619; -- 开始位置
注: master_host是主节点的ip地址,master_user 和master_password是前面步骤2主服务器创建的用于连接主服务器的帐号和密码,master_log_file和master_log_pos需要从master节点,进入Mysql数据库后进行查询,命令如下:
进入主服务器登录 mysql: mysql -uroot -p ,输入密码后进入mysql,输入如下指令:
show master STATUS;
1. 在从节点上启动主从复制
start slave;
如需要关闭,使用如下命令:
stop slave;
查看从节点状态:
show slave status \G;
如果没有异常信息,则说明启动成功。
2.从库需要一个单独的只读权限账号登录,否则可以修改从库数据容易引起主从不一致,创建从库只读用户:
GRANT SELECT ON *.* TO 'slave_user'@'%' IDENTIFIED BY "ygW_2018";
注意:从库在设置时start slave报错,解决办法如下:
查询MySQL日志:
图片中标红的日志记录,由于使用的是冷备份文件恢复的实例,在mysql库中的slave_relay_bin.index表中依然保留之前relay_log的信息,所以导致启动slave报错。
mysql提供了工具用来删除记录:
slave reset;
slave reset执行候做了这样几件事:
1、删除slave_master_info ,slave_relay_log_info两个表中数据;
2、删除所有relay log文件,并重新创建新的relay log文件;
3、不会改变gtid_executed 或者 gtid_purged的值
————————————————
参考原文链接:https://blog.csdn.net/liubo_2016/article/details/82379115
问题参考原文:https://blog.csdn.net/weixin_37998647/article/details/79950133