上章讲了mysql已经把数据搬迁完成,但目前看起来理论上数据是一致的,故先把主从做上把。目的先实现吧
环境(此处ip,密码均是乱造的):
主:192.1.31.161 端口:3306 用户:vnum 密码:vnum@123
从:192.1.31.162 端口:3306
1.防火墙放出3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload #重启firewall
firewall-cmd --list-ports #查看已经开放的端口
2.主
配置:
#vim /etc/my.cnf
[mysqld]
log-bin = mylog //master必写
server-id = 1 //master必写
创建账户://主服务器上创建账户
mysql> grant replication slave,reload,super on *.* to 'slave'@'%' identified by '123';
mysql> flush privileges;
%在工作环境当中换成slave的主机名称或者IP地址 密码采用复杂密码
重启服务:
#/etc/init.d/mysqld restart //rhel6
#systemctl restart mysqld //rhel7
注意:如果不成功删除以前的binlog日志
replication slave:
拥有此权限可以查看从服务器,从主服务器读取二进制日志。
super权限:
允许用户使用修改全局变量的SET语句以及CHANGE MASTER语句
reload权限:
必须拥有reload权限,才可以执行flush [tables | logs | privileges]
3.从
安装软件
配置:
#vim /etc/my.cnf
[mysqld]
server-id = 2
log-bin=s1log //1.双主的时候必须写 2.gtid方式的ab复制必须写
启动服务:
#/etc/init.d/mysqld start /rhel5/6
#systemctl restart mysqld //rhel7
指定主服务器信息:
先去主服务器查看日志信息:
mysql > show master status \G
从服务器上指定:
mysql> CHANGE MASTER TO
MASTER_HOST='10.1.31.161', //主服务器IP
MASTER_USER='vnum', //主服务器用户
MASTER_PASSWORD='vnum@123', //用户密码
MASTER_PORT=3306, //端口
MASTER_LOG_FILE='mylog.001', //binlog日志文件名称
MASTER_LOG_POS=154, //日志位置
MASTER_CONNECT_RETRY=10; //如果同步失败的尝试次数
启动slave服务:
mysql > start slave; //关闭:stop slave
mysql > show slave status;
测试:
登录slave
mysql> show slave status \G
如果没成功:删除从的binlog重启服务
错误分析:
Slave_IO_Running: Connecting
1.网络不通
2.账户密码错误
3.防火墙
4.mysql配置文件问题
5.连接服务器时语法
6.主服务器mysql权限
Slave_IO_Running: No
1.网络不通
2.mysql配置文件问题
3.mysql权限