返回列表 发帖

MySQL5.6主从/主主同步

MySQL主从同步

让mysql-1成为主,mysql-2成为从,也就是让mysql-2可以自动同步mysql-1的指定数据库,反之不行。

mysql-1:192.168.168.130
mysql-2:192.168.168.131

服务器的版本信息:
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@localhost ~]#
[root@localhost ~]# uname -r
2.6.32-696.el6.x86_64


MySQL主从服务器都要在防火墙打开TCP 3306端口:
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
iptables-save > /etc/sysconfig/iptables


MySQL主从服务器都要关闭SELinux:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config


MySQL5.6的安装可参考:Apache2.2+MySQL5.6+PHP5.6+phpMyAdmin+GLPI



mysql-1

创建测试用的库和表:

create database data1;
use data1;
create table class1 (id int,name varchar(6));

create database data2;
use data2;
create table class2 (id int,name varchar(6));

如下图:
图片1.png
2021-3-15 23:59




修改MySQL的主配置文件:
[root@mysql-1 ~]# vi /etc/my.cnf

#在[mysqld]下面修改:(如果没有就手动添加)
server-id=1   # 每台MySQL服务器的ID必须是唯一的
log-bin=binlog   # 启用日志

#在[mysqld]下面追加:
binlog-do-db=data1   # 指明同步的库
binlog-do-db=data2

如下图:
图片2.png
2021-3-16 00:00



修改完配置文件后,MySQL服务必须可以重启成功:
图片3.png
2021-3-16 00:01



mysql-1赋予mysql-2可使用的权限账号 ( 用户名:happy,远程客户端可访问IP:192.168.168.131,密码:888 ):
mysql> grant replication slave on *.* to happy@192.168.168.131 identified by '888';

显示mysql-1的master信息:
mysql> show master status;
图片4.png
2021-3-16 00:01

注释:mysql-2进行同步时要用到的数据信息(binlog.000001333



只备份data1和data2这两个库,备份出来的文件名为/backup.sql
[root@mysql-1 ~]# mysqldump -u"root" -p"888" --master-data=1 --databases data1 data2 > /backup.sql

注释:加上 --master-data=1 就不用锁表。



在mysql-1将/backup.sql,通过scp命令传到mysql-2的目录/root下:
[root@mysql-1 ~]# scp
-bash: scp: command not found

笺注:两台服务器都要安装scp命令:
[root@mysql-1 ~]# yum -y install openssh-clients

[root@mysql-1 ~]# scp -rp /backup.sql root@192.168.168.131:/root
root@192.168.168.131's password:  #输入192.168.168.131的系统用户root的密码
backup.sql     100% 2628     2.6KB/s   00:00





mysql-2

修改MySQL的主配置文件:
[root@mysql-2 ~]# vi /etc/my.cnf
#在[mysqld]下面修改:(如果没有就手动添加)
server-id=2   # 每台MySQL服务器的ID必须是唯一的

如下图:
图片5.png
2021-3-16 00:03



修改完配置文件后,MySQL服务必须可以重启成功:
图片6.png
2021-3-16 00:04



导入数据库:
[root@mysql-2 ~]# mysql -u"root" -p"888" < /root/backup.sql


在从数据库上进行同步:(mysql-2)
stop slave;

change master to master_host='192.168.168.130',
master_user='happy',
master_password='888',
master_log_file='binlog.000001',master_log_pos=333;

start slave;

如下图:
图片7.png
2021-3-16 00:04



在mysql-2上查看从库状态,确认以下两项的参数都为Yesshow slave status\G;
     Slave_IO_Running: Yes
     Slave_SQL_Running: Yes
图片8.png
2021-3-16 00:05



######

主从测试

mysql-1:
mysql> use data1;
mysql> create table class11 (id int,name varchar(6));

mysql> use data2;
mysql> create table class22 (id int,name varchar(6));


mysql-2:
图片9.png
2021-3-16 00:05


图片10.png
2021-3-16 00:06


笺注:
实验中,主从同步成功;
实验中,两台MySQL服务器不论顺序重启后,同步都是正常的;


主服务器(mysql-1)重启后,其master信息会自动改变的:
图片11.png
2021-3-16 00:06


从服务器(mysql-2)理应会自动同步主服务器(mysql-1)的master信息:
图片12.png
2021-3-16 00:06














#########

MySQL主主同步(让mysql-2也成为mysql-1的主,让mysql-1可以自动同步mysql-2的指定数据库)


mysql-2

修改MySQL的主配置文件:
[root@mysql-2 ~]# vi /etc/my.cnf

#在[mysqld]下面修改:(如果没有就手动添加)
server-id=2   # 每台MySQL服务器的ID必须是唯一的
log-bin=binlog   # 启用日志

#在[mysqld]下面追加:
binlog-do-db=data1   # 指明同步的库
binlog-do-db=data2

如下图:
图片13.png
2021-3-16 00:07



修改完配置文件后,MySQL服务必须可以重启成功:
图片14.png
2021-3-16 00:08



mysql-2赋予mysql-1可使用的权限账号 ( 用户名:happy,远程客户端可访问IP:192.168.168.130,密码:888 ):
mysql> grant replication slave on *.* to happy@192.168.168.130 identified by '888';


显示mysql-2的master信息:
mysql> show master status;
图片15.png
2021-3-16 00:08




######
回到mysql-1:(这次在mysql-1上进行同步;总之就是在MySQL从服务器上进行同步)
stop slave;

change master to master_host='192.168.168.131',
master_user='happy',
master_password='888',
master_log_file='binlog.000001',master_log_pos=333;

start slave;

如下图:
图片16.png
2021-3-16 00:09



在mysql-1上查看从库状态,确认以下两项的参数都为Yesshow slave status\G;
图片17.png
2021-3-16 00:09




######

主主测试

mysql-2:
mysql> use data2;
mysql> create table class28 (id int,name varchar(6));


mysql-1:
图片18.png
2021-3-16 00:10



###

mysql-1:
mysql> use data1;
mysql> create table class18 (id int,name varchar(6));

mysql-2:
图片19.png
2021-3-16 00:10



笺注:
实验中,主主同步成功;
实验中,两台MySQL服务器不论顺序重启后,同步都是正常的;





######

假如,有某台从服务器的MySQL同步失败:
mysql> show slave status\G;
图片20.png
2021-3-16 00:10


解决方法:
1. 先到对应的MySQL主服务器,查看master信息;
2. 再到MySQL从服务器重新再做一次同步;




相关文章:
Zabbix使用Agent监控MySQL(主从同步状态)
Zabbix调用Python3脚本监控MySQL(主从同步状态)

CentOS8_Mycat实现MySQL的读写分离
Keepalived双机热备+MySQL

MySQL5.5主从同步
MariaDB主从同步

返回列表