1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > mysql主从复制安装部署配置操作步骤及主从库宕机处理办法

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

时间:2019-11-19 23:50:41

相关推荐

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

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

大家好,我是酷酷的韩~

1.前期准备

(1)首先需要准备至少两台mysql

这里方便演示,用了两台虚拟机 环境是centos7

主: 172.16.51.161

从: 172.16.51.162

(2)每台服务器装好mysql 这里的版本是 5.7.36

mysql的安装可参考此篇文章,含安装包

/hjq_ku/article/details/125141183

(3)想了解mysql主从复制原理的小伙伴可参考此篇文章

/hjq_ku/article/details/125261331

(4)备注

这里的服务器和mysql是一对一的 当然也可以一对多

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

create database test;

3.主mysql配置

(1)修改f配置文件

# 开启二进制日志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之后的更新操作也被同步了过来,说明此时主从同步是正常的了。

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。