【主从双机热备份】MySQL主从复制搭建

在这里插入图片描述

1、准备

两台数据库服务器,主数据库Master在Linux上部署,从数据库Slave在Windows上部署。使用两种不同操作系统只是为了演示他们的略微差别。

2、准备Master用户

1.任意位置进入mysql控制台,然后输入密码:

mysql -uroot -p

在这里插入图片描述
2.创建tantuls用户,密码为123456:

mysql> CREATE USER ‘tantuls’@‘%’ IDENTIFIED BY ‘123456’;

3.给用户tantuls赋予主从复制权限:

mysql> GRANT REPLICATION SLAVE ON . TO ‘tantuls’@‘%’;

4.刷新:

mysql> flush privileges;

5.查看是否开启binlog日志:

mysql> show variables like ‘%log_bin%’;

在这里插入图片描述


3、配置Master

1.查找mysql安装配置的位置:

mysql --verbose --help| grep -A 1 “Default options”

在这里插入图片描述
Mysql的配置文件,windows中为my.ini,linux中为my.cnf

2.修改或添加配置内容,如果已存在的键值对则尽量不要修改它,注意这个内容一定要在[mysql]和[client]的前面

vim my.cnf

#--###########################-- Bin-Log设置 开始 --############################################
server-id = 105
#binlog日志的文件名称前缀
log-bin = mysql-bin
binlog-format = Row
#记录日志的数据库 可以配置多个
binlog-do-db = acs
#不记录日志的数据库
binlog-ignore-db = mysql,information_schema,performance_schema
#--###########################-- Bin-Log设置 结束 --##########################################

3.重启Mysql服务(使用docker安装的mysql使用docker restart mysql 重启):

systemctl restart mysqld

4.查看主服务器是否开启binlog日志并订阅数据库:

mysql> show master status;

在这里插入图片描述


4、Slave数据准备

1.去Mater中将数据库的数据导成sql文件:
在这里插入图片描述

2.去Slave中创建同名数据库,并将刚才的sql文件导入:

mysql -uroot -p
mysql> CREATE DATABASE acs;
mysql> USE acs;
mysql> set names utf8;
mysql> source …/…/acs.sql;

3.注意事项在导出sql前,一定要保证该数据库只读,可以上只读锁可以停掉数据库或者服务。因为如果导入新数据库后,导致新旧数据库的数据存在任何差异,都会导致后面实施同步失败;同时还会影响后面Slave的配置。

5、配置Slave

1.修改或添加配置内容,如果已存在的键值对则尽量不要修改它,注意这个内容一定要在[mysql]和[client]的前面

server-id=2
log-bin=mysql-bin
#需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可,不配置则默认全部
#replicate-do-db = acs
#不需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
replicate-ignore-db = mysql,information_schema,performance_schema

在这里插入图片描述
2.重启Mysql服务:

在这里插入图片描述
3.接下来操作从库,进入mysql控制台(Windows可以通过cmd或navicat命令列界面进入):
在这里插入图片描述

4.停止slave服务线程(有些版本执行这个命令可能会报错,无法识别,使用stop slave;即可)

mysql> stop slave;

5.清空信息

mysql> reset slave all;

6.接着执行,修改对应的参数,host是主库的ip,user是前面创建的slave用户,file和pos是主库show master status;中的信息。:

mysql> change master to
master_host=‘192.168.xxx.xx’,
master_port=3306,
master_user=‘tantuls’,
master_password=‘123456’,
master_log_file=‘mysql-bin.000001’,
master_log_pos=198325;

7.刷新

mysql> flush privileges;

8.启动slave服务线程

mysql> start slave;

9.查看slave的状态看是否配置成功,这俩为YES即成功:
在这里插入图片描述

7、验证

综上步骤就已经配置完主从复制了,可以在主数据库中插入一条数据然后在从库中看是否能查到即表示成功失败。

8、谨防踩坑

1.Slave_IO_Running为NO:
这意味着从服务器与主服务器无法建立IO连接,大概是因为主/从库的server-id没有唯一,让它们唯一即可;
也有可能是因为主从库之间没有建立网络连接,ping一下就知道了(也可能是有人粗心把change master to master_host的ip写错了)

2.Position一直变化/Slave_SQL_Running中从YES变为NO:
前面说需要给Master上锁或者停机也是因为如果数据库还在活跃状态,大概率事务也在活跃,Position就会一直变化,这也导致即使在步骤5.7中配置成功,过段时间再看Slave_SQL_Running时就会变成NO。因此在同步数据到新数据库及配置Slave时最好保持数据库处于只读状态。

在这里插入图片描述

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥肥肥柯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值