IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql主从复制安装部署配置操作步骤及主从库宕机处理办法 -> 正文阅读

[大数据]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之后的更新操作也被同步了过来,说明此时主从同步是正常的了。

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:40:05  更:2022-06-14 22:40:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 20:53:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码