mysql主从复制安装部署配置操作步骤及主从库宕机处理办法

mysql主从复制安装部署配置操作步骤及主从库宕机处理办法

大家好,我是酷酷的韩~
酷酷的韩金群

1.前期准备
(1)首先需要准备至少两台mysql
这里方便演示,用了两台虚拟机 环境是centos7
主: 172.16.51.161
从: 172.16.51.162

(2)每台服务器装好mysql 这里的版本是 5.7.36
mysql的安装可参考此篇文章,含安装包
https://blog.csdn.net/hjq_ku/article/details/125141183

(3)想了解mysql主从复制原理的小伙伴可参考此篇文章
https://blog.csdn.net/hjq_ku/article/details/125261331

(4)备注
这里的服务器和mysql是一对一的 当然也可以一对多

2.两台mysql分别创建测试库

create database test;

3.主mysql配置
(1)修改my.cnf配置文件

# 开启二进制日志
log_bin = /usr/local/mysql/log/mysql-bin.log
# mysql清除过期日志的时间,默认值0,不自动清理,而是使用滚动循环的方式。
expire_logs_days = 0
# 如果二进制日志写入的内容超出给定值,日志就会发生滚动。你不能将该变量设置为大于1GB或小于4096字节。 默认值是1GB。
max_binlog_size = 1000M
# binlog的格式也有三种:STATEMENT,ROW,MIXED。mysql 5.7.7后,默认值从 MIXED 改为 ROW
# 关于binlog日志格式问题,请查阅网络资料
binlog_format = row
# 默认值N=1,使binlog在每N次binlog写入后与硬盘同步,ps:1最慢
# sync_binlog = 1
#要求各个服务器的id必须不一样
server-id=1
#同步的数据库名称,默认是全部数据库
binlog-do-db=test

(2)查看主服务器状态
需要进入mysql命令控制台

show master status;

在这里插入图片描述
(3)bin log 日志命名规则
这里的mysql-bin.00004是由log_bin配置文件名为基础进行命名的,初始文件名是mysql-bin.00001,每次mysql重启会递增
在这里插入图片描述

(4)配置从服务器登录主服务器的账号授权

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

4.从服务器配置
(1)首先在主服务器查询binlog日志文件名及开始读取的位置坐标
进入mysql命令界面

/usr/local/mysql/bin/mysql -u root -p

输入以下命令进行查询

show master status; 

在这里插入图片描述
(2)连接主服务器
进入从服务器的mysql命令界面

/usr/local/mysql/bin/mysql -u root -p

关闭slave

stop slave;

输入以下连接主服务器的配置命令:

change master to  master_host='172.16.51.161', master_password='123456', 
master_user='root',master_port=3306,master_log_file='mysql-bin.000007',master_log_pos=1799;

字段说明:
master_host:主服务ip
master_passoword:主服务器密码
master_user 主服务器用户名
master_port:主服务器端口
master_log_file 主服务器binlog日志文件名
master_log_pos 开始读取的位置坐标

(3)启动slave

start slave;

(4)查看从服务器状态

show slave status \G

在这里插入图片描述
主要查看Slave_IO_Running与Slave_SQL_Running是否为YES 如有No 可通过Last_Error 查看报错并百度解决(如有报错 一般都是细节性问题 百度足矣)

5.测试
(1)在主服务器输入以下建表语句

CREATE TABLE `sys_user` (
  `id` int(11) NOT NULL,
  `name` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

(2)从服务器则会同步
在这里插入图片描述
(3)表的增删改操作可自行测试 都是没问题的。

6.主从库宕机处理办法

6.1 主库宕机处理办法
(1)主库宕机带来的影响有哪些?
业务系统访问失败
从库停止同步更新
(2)进入从服务器mysql命令控制台
在每个从库上执行

stop slave io_thread;
show processlist;

直到看到Slave has read all relay log; waiting for more updates则表
示从库更新都执行完毕了

在这里插入图片描述
(3)主库宕机重启后binlog日志名会发生变化,需命令查询
在这里插入图片描述
(4)从服务器关闭slave

stop slave;

(5)从服务器重新指定主库
change master to master_host=‘172.16.51.161’, master_password=‘123456’,
master_user=‘root’,master_port=3306,master_log_file=‘mysql-bin.000016’,master_log_pos=154;
(6)重启salve并查看slave状态是否正常

start slave;
show slave status \G 

在这里插入图片描述

6.2.从库宕机处理办法
(1)从库宕机问题
从库宕机时主库依旧不停插入数据会导致从库数据与主库不同步
(2)将主库上的dump全量数据导出到文件
/usr/local/mysql/bin/mysqldump -uroot -p -A --master-data=2 >/tmp/mysql_all.sql
备注:写入到mysql_all.sql文件中,通过这个选项会有一条CHANGE MASTER TO MASTER_LOG_FILE=‘xxxx.xxx’, MASTER_LOG_POS=xx 的记录产生到mysql_all.sql文件,为后面的增量同步从何处开始做准备
在这里插入图片描述
在这里插入图片描述
(3)增加一个insert操作,模拟主库未停止更新的操作

insert into sys_user values(6,6);

(4)将主服务器生成的mysql_all.sql传递至从服务器并执行(sql控制台内执行)

source /tmp/mysql_all.sql

在这里插入图片描述
(5)关闭slave

stop slave;

(6)重新指定主库binlog的pos值(取mysql_all.sql中记录的MASTER_LOG_POS)

change master to  master_host='172.16.51.161', master_password='ku123456!!', 
master_user='root',master_port=3306,master_log_file='mysql-bin.000007',master_log_pos=4294;

(7)重启salve并查看slave状态是否正常

start slave;
show slave status \G 

在这里插入图片描述
(8)确认在全量同步后,有进行增量同步,即从主库dump之后的更新操作也被同步了过来,说明此时主从同步是正常的了。

只要路是对的,就不怕路远。 ------酷酷的韩

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

韩金群

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

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

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

打赏作者

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

抵扣说明:

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

余额充值