MySQL主从复制demo

服务器:主服务器ip 172.31.242.249 、从服务器ip 172.31.242.250 两台服务器的MySQL版本保持一致

原理:MySQL要做到主从复制,其实依靠的是二进制日志,即:假设主服务器叫A,从服务器叫B;主从复制就是 B跟着A学,A做什么,B就做什么。那么B怎么同步A的动作呢?现在A有一个日志功能,把自己所做的增删改查的动作全都记录在日志中,B只需要拿到这份日志,照着日志上面的动作施加到自己身上就可以了。

1、首先修改mysql的配置文件,使其支持二进制日志功能

打开主服务器的mysql配置文件:my.conf

vi /etc/my.cnf  

加入如下三行代码:

#将mysql二进制日志取名为mysql-bin
log-bin=/var/lib/mysql/bin-log/mysql-bin    
#二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed
binlog_format=mixed
#为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id
server-id=249

配置完成 :wq 保存,重启MySQL

 systemctl restart mysqld.serivce

同样的,进入从服务器,配置从服务器的my.cnf,重复步骤1即可。

唯一的区别是,server-id要改成从服务器的ip尾位,即server-id=250;其他两项是一样的,保存,并重启MySQL;

2、在主服务器上为从服务器分配一个账号

进入主服务器的mysql界面,

 mysql -u root -proot     #我这里mysql账号是root,密码是root

在mysql操作界面下,输入下面一行命令:

GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY 'root'; 

3、查看主服务器BIN日志的信息

进入主服务器的mysql界面,

 show master status    #记录下file、position这两个值

进入从服务器mysql

 mysql -u root -proot

关闭slave(如果你以前配置过主从的话,一定要先关闭)

stop slave;

4、开始配置主从同步

从服务器MySQL命令行下输入下面代码即可:

CHANGE MASTER TO
MASTER_HOST="172.31.242.249",
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin00001",     #show master status 中的file值
MASTER_LOG_POS=250;                   #show master status 中的position值

备注:
MASTER_HOST : 设置要连接的主服务器的ip地址
MASTER_USER : 设置要连接的主服务器的用户名
MASTER_PASSWORD : 设置要连接的主服务器的密码
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息(这里注意,最后一项不需要加引号。)

启动从服务器开始复制:

 start slave;

5、查看是否配置成功

show slave status \G    #\G可以让执行结果格式化,代替;号是个不错的选择
命令执行结果

Slave_IO_Running、Slave_SQL_Running均为Yes代表成功

特别强调。

MySQL的主从复制无法保证100%永远不出问题,主从一旦断开,程序无法及时发现将是巨大灾难,强烈建议各位程序员对从服务器加监听(死循环show slave status),一旦发现异常,直接将从切换至主,保证数据的一致性。

你可能感兴趣的:(MySQL主从复制demo)