Linux下配置MySQL主从自动备份

环境:
centos7,使用yum在线安装mysql5.7.31,主服务器为自行搭建的centos7.8,从服务器为虚拟机,Centos7.3。
主服务器IP:172.168.2.221
从服务器IP:172.168.1.174
主从设备之间要能够互相ping通,此处不作介绍,自行配置。

现在需要将主服务器中名为zabbix的数据库做主从同步,自动同步到从服务器上。
工具:MobaXterm/Xshell/CRT均可

一、复制数据库

1、首先要将主服务器的数据库复制到从服务器中。
用MobaXterm连接主服务器,导出数据库:

mysqldump -uroot -p img >/root/img.sql
---输入数据库密码---

然后ls看下,可以看到一个 img.sql的文件。
在这里插入图片描述
2、用MobaXterm连接从服务器,使用sftp命令远程到主服务器(有提示输入yes):

sftp root@主服务器IP地址
---输入ssh密码---

然后ls看下,可以看到主服务器的目录,里面有个img.sql的文件,执行:

get img.sql

这样数据库文件就被复制到从服务器上了。 exit 退出sftp。
在这里插入图片描述
3、接下来在从服务器上建立一个名为img的数据库,排序规则设为uft8

mysql -uroot -p
---输入数据库密码---
create database img;
use img;
set names utf8;
source img.sql

这样就成功导入了,exit退出回到linux命令行。

二、主服务器配置

1、切回主服务器,用vim 编辑 /etc下的my.cnf,如图
在这里插入图片描述
这里主要配置的是server-id和log-bin。server-id用于区分不同主机上的数据库,log-bin是二进制文件的名字(可以随意命名)。同时,为了保证只同步需要的数据库,我们需要加上:

binlog-do-db=zabbix
binlog-ignore-db=mysql

然后 :wq 保存退出,重启mysql:

service mysqld restart

2、连接数据库进行如下操作:

mysql -uroot -p img
---输入数据库密码---
#以下为修改数据库连接权限
grant all privileges on *.* to 'root'@'%' identified by '自定义密码';
flush privileges;
#下面为显示bin-log文件名和位置
show master status;

执行完最后一条后我们可以看到:
在这里插入图片描述
记下红框处的文件名和数字。

三、从服务器配置

1、连接到从服务器,用vim修改/etc下的my.cnf文件,把server-id改为2。
在这里插入图片描述

重启mysql服务:

service mysqld restart

2、连接数据库,配置从数据库:

mysql -uroot -p
---输入数据库密码---
stop slave;
change master to
master_user='root',
master_password='你设置的自定义密码',
master_host='172.168.2.221',#主服务器地址
master_log_file='mysql-bin.000002',  #记下的上图红框的文件名
master_log_pos=2971525;   #记下的上图红框的位置
start slave;
show slave status\G   #查看是否安装成功

然而:原本应该出现两个Yes的地方,却出现了一个No,代表我配置失败了。
在这里插入图片描述

四、排错

在网上找了很多方法,一一实验,结果都是一样。Slave_SQL_Running: No。

最后得出结论可能出现的原因如下:

1.程序可能在slave上进行了写操作

2.也可能是slave机器重起后,事务回滚造成的.

一般是事务回滚造成的:

(一)方法一:在从机上配置

mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

此方法在我的设备中并不奏效,再次寻找原因。

(二)方法二:
首先停掉Slave服务:slave stop

到主服务器上查看主机状态:

记录File和Position对应的值

1、进入master:
在这里插入图片描述

手动同步需要停止master的写操作!
手动同步需要停止master的写操作!
手动同步需要停止master的写操作!

这是非常重要的一点,就是因为这个原因,才会导致我的从机配置失败,出现No的现象。

在MySQL数据库中,在进行数据迁移和从库只读状态设置时,都会涉及到只读状态和Master-slave的设置和关系。
经过实际测试,对于MySQL单实例数据库和master库,如果需要设置为只读状态,需要进行如下操作和设置:
将MySQL设置为只读状态的命令:
#mysql -uroot -p
mysql> show global variables like “%read_only%”;
mysql> flush tables with read lock;
mysql> set global read_only=1;
mysql> show global variables like “%read_only%”;

将MySQL从只读设置为读写状态的命令:
mysql> unlock tables;
mysql> set global read_only=0;

对于需要保证master-slave主从同步的salve库,如果要设置为只读状态,需要执行的命令为:
mysql> set global read_only=1;

将salve库从只读状态变为读写状态,需要执行的命令是:
mysql> set global read_only=0;

2、然后到slave服务器上执行手动同步:

mysql -uroot -p
---输入数据库密码---
stop slave;
change master to
master_user='root',
master_password='你设置的自定义密码',
master_host='172.168.2.221',#主服务器地址
master_log_file='mysql-bin.000002',   #记下的上图红框的文件名
master_log_pos=7050842;   #记下的上图红框的位置
start slave;
show slave status\G   #查看是否安装成功

在这里插入图片描述
配置成功!!出现两个Yes。

再说一遍:手动同步需要停止master的写操作!

参考资料:
https://www.cnblogs.com/zhaoying/p/11737464.html
https://blog.csdn.net/chiwodeng9612/article/details/100860205
https://blog.csdn.net/zhwxl_zyx/article/details/88416498
感谢各位大佬提供资源,帮推广。。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值