MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
主从过程大致有3个步骤
1)主将更改操作记录到binlog里
2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
3)从根据relaylog里面的sql语句按顺序执行
主上有一个log dump线程,用来和从的I/O线程传递binlog
从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句执行
如图:
准备工作:
准备两台机器,两台机器都需要安装好mysql,并且启动mysql服务。安装mysql请查看博主前面的文章!
配置主:
①修改配置文件/etc/my.cnf,增加server-id=129和log_bin=centos7-1;修改完成后,重启mysql服务。
②创建一个测试的zrlog库,把测试库备份出来,在从上需要导入。
③创建用作同步数据的用户
④对做主从配置的数据库进行上锁,目的是配置期间停止读写操作。
⑤查看主的状态,配置同步时修改使用到这里的File和Position数据。
主上配置完成了,接上来去从上配置。
配置从:
①修改配置文件/etc/my.cnf,增加server-id=128(不能和主一样);修改完成后,重启mysql服务。
②把主上的测试库zrlog,主上使用rsync同步到从上。然后从上进行导入
③然后进入mysql进行配置
④查看是否配置成功,查看下面的参数。
配置成功后,别忘记到主上进行解锁操作:unlock tables;
测试主从同步:
①在主上的mysql修改数据,然后去从上查看是否同步即可。
从上查看:
配置失败情况:
Slave_IO_Running:connecting
排错步骤:①网络问题,使用ping命令和telnet命令测试;如ping ip看看能不能ping通,telnet ip 3306 看看3306端口是否开启 ②密码对不对 ③file和pos有没有对应(在主上show master status;) ④还要注意防火墙是否关闭了和iptables规则等等。
mysql -urepl -p123456 -h192.168.139.129 远程连接失败,查看mysql日志:
修改配置文件/etc/my.cn,在[mysqld]下加入skip-name-resolve。 然后重启服务即可!
原文地址:http://blog.51cto.com/11924224/2084303