MySQL主从同步

前情提要:

本文档以Ubuntu作为主服务器,Win7作为从服务器进行测试。要保证主从服务器之间能够互相通信(即能相互ping通)。

主服务器ip地址:192.168.13.81

postgresql 查看主从状态 mysql查看主从ip_postgresql 查看主从状态

 

从服务器ip地址:192.168.13.82

postgresql 查看主从状态 mysql查看主从ip_数据_02

测试通信状况:

主可以ping通从:

postgresql 查看主从状态 mysql查看主从ip_数据_03

从可以ping通主:

postgresql 查看主从状态 mysql查看主从ip_服务器_04

主服务器配置:

1.备份主服务器的数据
 在终端执行如下命令:
 mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql
 将来会在家目录下生产一个master_db.sql的数据库文件,即备份文件

postgresql 查看主从状态 mysql查看主从ip_服务器_05

2.编辑设置mysqld的配置文件,设置log_bin和server-id
 在终端执行如下命令:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

postgresql 查看主从状态 mysql查看主从ip_数据_06

postgresql 查看主从状态 mysql查看主从ip_服务器_07

修改完毕之后保存退出,并且把MySQL服务器进行重启,如下图:

postgresql 查看主从状态 mysql查看主从ip_数据_08

3.登入主服务器Ubuntu中的mysql,创建用于从服务器同步数据使用的帐号:

mysql –uroot –pmysql

postgresql 查看主从状态 mysql查看主从ip_服务器_09

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';

postgresql 查看主从状态 mysql查看主从ip_数据_10

FLUSH PRIVILEGES;

postgresql 查看主从状态 mysql查看主从ip_postgresql 查看主从状态_11

4.获取主服务器的二进制日志信息,在MySQL服务器上输入如下命令来获取二进制日志信息:SHOW MASTER STATUS;

postgresql 查看主从状态 mysql查看主从ip_postgresql 查看主从状态_12

记录下二进制文件的名字以及position位置信息,下面同步的时候要用到

从服务器配置:

1.把主服务器上导出的master_db.sql备份文件先同步到从服务器上,保证主从数据一致。

把master_db.sql先放到从库的服务器上(注意文件位置要和你打开终端的位置保持一致,比如都在桌面),然后执行如下命令:

mysql -uroot -pmysql < master_db.sql

postgresql 查看主从状态 mysql查看主从ip_postgresql 查看主从状态_13

此时从库服务器已经拥有跟主服务器一样的数据了,如下图所示:

postgresql 查看主从状态 mysql查看主从ip_mysql_14

2.修改从服务器的配置文件my.ini

加上对应的server-id,要保证不能跟主服务器的server-id一样

postgresql 查看主从状态 mysql查看主从ip_postgresql 查看主从状态_15

保持退出之后重启从服务器,如下图:

postgresql 查看主从状态 mysql查看主从ip_mysql_16

3.连接到从服务器,进行同步工作

postgresql 查看主从状态 mysql查看主从ip_数据_17

输入如下指令:
change master to master_host='192.168.13.81', master_user='slave', master_password='slave',master_log_file='mysql-bin.000008', master_log_pos=582;
注意:需要修改的地方有3处,第一个ip地址改成自己主服务器的ip地址,第二个二进制文件要跟主服务器的一致,第三个是pos位置也要与主服务器一致。具体的值参见主服务器配置的第4步

4.开始同步

输入命令:start slave;

postgresql 查看主从状态 mysql查看主从ip_数据_18

5.查看同步状态

输入指令:show slave status \G;

postgresql 查看主从状态 mysql查看主从ip_数据_19

当看到两个yes意味着同步成功。如果没有成功先检查一下主从是否可以ping通,如果主从可以正常通信的话,则从文档的“主服务器配置”的第4步开始把步骤再走一遍。

测试同步

在主服务器创建一个新的数据库“test_slave”

create database test_slave charset=utf8;

postgresql 查看主从状态 mysql查看主从ip_数据_20

此时进入到从服务器已经可以查看到效果:

postgresql 查看主从状态 mysql查看主从ip_服务器_21

恭喜!此致主从同步大功告成!!!