1、主数据库/etc/my.cnf配置增加
server-id=1
log-bin=binlog
log-bin-index=binlog.index
然后重启mysql服务
systemctl restart mysqld.service
查看配置是否正常
show variables like 'log_bin';
接着在主服务器创建一个从服务器可以登录的mysql账号
mysql>GRANT REPLICATION SLAVE ON *.*TO '用户名'@'从服务器ip' IDENTIFIED BY '密码';
mysql>FLUSH PRIVILEGES;
查看主服务器mysql二进制文件位置及名称
mysql> SHOW MASTER STATUS;
2、从数据库my.cnf配置mysql> SHOW MASTER STATUS;增加
log-bin=mysql-bin
server-id=2
接着在mysql中输入
mysql>change master to master_host='服务器ip', master_user='test', master_password='123456', master_port=3306, master_log_file='binlog.000002', master_log_pos=1886991;
查看主从配置是否成功
mysql > START SLAVE; #开启复制
mysql > SHOW SLAVE STATUS\G; #查看主从复制是否成功
(当看到Slave_IO_Running: YES、Slave_SQL_Running:YES才表明状态正常)
3、常见问题解决
(1)主服务器创建从服务器账户出现密码策略问题解决:
查看密码策略
SHOW VARIABLES LIKE 'validate_password%';
执行下面语句
set global validate_password_policy=LOW;
set global validate_password_length=6;
到此OK,重新执行GRANT REPLICATION SLAVE ON *.*TO '用户名'@'从服务器ip' IDENTIFIED BY '密码'即可
(2)Slave_SQL_Running不停变为no解决方法
在从数据库my.cnf配置
slave-skip-errors=1062,1053,1146 #跳过指定Last_Sql_Error:error no类型的错误
重启数据库服务
再重新配置Slave_SQL_Running为yes即可解决
(3)Slave_SQL_Running为no解决方法
进入主服务器执行
mysql>show master status; #查看binlog和master_log_pos
然后进入从库
mysql>stop slave;
mysql>change master to master_log_file='binlog.000002',master_log_pos=93678806;
mysql>start slave;
问题即可解决
4、取消主从复制
主数据库
reset master;
从数据库
stop slave;
reset slave all;