1.准备两台mysql服务器
192.168.56.101 A 主
192.168.56.102 B 从
2.修改配置文件my.cnf
A的my.cnf增加如下内容
slave_skip_errors = on
binlog_do_db = sxjy
binlog_do_db = test
binlog_ignore_db = mysql
log_error = /alidata/log/mysql/mysql-error.log
explicit_defaults_for_timestamp = on
B的my.cnf增加如下内容
replicate_do_db = sxjy
replicate_do_db = test
replicate_ignore_db = mysql
log_slave_updates = on
read_only = yes
log_error = /alidata/log/mysql/mysql-error.log
explicit_defaults_for_timestamp = on
3.配置主从关系
A执行
mysql>grant replication slave on *.* to 'root'@'192.168.56.102' identified by '11111111';
192.168.56.101 A 主
192.168.56.102 B 从
2.修改配置文件my.cnf
A的my.cnf增加如下内容
slave_skip_errors = on
binlog_do_db = sxjy
binlog_do_db = test
binlog_ignore_db = mysql
log_error = /alidata/log/mysql/mysql-error.log
explicit_defaults_for_timestamp = on
B的my.cnf增加如下内容
replicate_do_db = sxjy
replicate_do_db = test
replicate_ignore_db = mysql
log_slave_updates = on
read_only = yes
log_error = /alidata/log/mysql/mysql-error.log
explicit_defaults_for_timestamp = on
3.配置主从关系
A执行
mysql>grant replication slave on *.* to 'root'@'192.168.56.102' identified by '11111111';
mysql>flush privileges;
mysql>change master to master_host='192.168.56.101',master_user='root',master_password='11111111',master_log_file='mysql-bin.000012',master_log_pos=410,master_port=3306;
mysql> start slave;
同为yes说明配置成功。
当slave_io_running 为no,查看mysql错误日志,查找具体原因。我测试时两台服务器的uuid相同导致slave_io_running 为no,修改uuid的值解决。
uuid位于mysql/data/auto.cnf中。
现在可以测试结果,在A中添加数据,B中查看是否同步。
如果主数据库服务器已经存在用户数据,那么在进行主从复制时,需要做以下处理。
(1)主数据库锁表操作,不让数据再进行写入动作。
mysql>flush tables withread lock;
(2)把主服务器的数据文件复制到从服务器或通过脚本
(3)取消主数据库锁定
mysql>unlock tables;