CentOS7 MySQL5.7.35主从 不停机搭建 以及配置

news2024/11/28 14:53:35

如需安装MySQL,参照MySQL 5.7.35 安装教程

	https://blog.csdn.net/CsethCRM/article/details/119418841

一、主&从 环境信息准备

1.1.查看硬盘信息,确保磁盘够用(主&从)

df -h

1.2.查看内存信息 (主&从,推荐从库配置略高)

free -h

1.3. 查看主库数据库大小 (主库)

SELECT table_schema AS '数据库名称',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '数据库大小(MB)'
FROM information_schema.tables
GROUP BY table_schema;

1.4.查看主库数据表占用的空间大小(主库,查看是否在预期内)

SELECT * FROM 
		(
			SELECT 
			table_schema
			,table_name
			,ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS TableGB
			FROM information_schema.tables 
			WHERE 0=0
			and table_schema ='数据库名称' 
			group by table_schema,table_name
		) T1 
		ORDER BY T1.TableGB desc

1.5. 查看主库和从库的UUID,一定要不相同才可以 (主&从)

SHOW VARIABLES LIKE 'server_uuid%';

1.6.确认防火墙已关闭

查看防火墙状态
systemctl status firewalld.service
#关闭运行的防火墙
systemctl stop firewalld.service
#禁止防火墙服务器,保证重新启动服务器之后防火墙还是关闭状态
systemctl disable firewalld.service

1.7.设置 SSH 工具 ,SSH Keepalive

MobaXterm 为例:SSH keepalive 要 打钩
其他工具 找到各自的 超时时间,默认很多工具 都是 30分钟,如果不设置,超过 30分钟 会自动断开
导致 主库 备份 失败

二、主库配置,配置在 [mysqld] 下方(主)

2.1./etc/my.cnf 配置(主)

# 1.  配置server-id ,主库和从库不可以相同,配置不同的数字即可(主)
server-id       = 1
# 2. 为了保证数据一致性,每次执行写入行操作,都进行磁盘同步; (主)
sync_binlog = 1
# 3. 配置需同步的库(主)
binlog-do-db = 数据库名称1
binlog-do-db = 数据库名称2
# 4. 配置不需要同步的库(主)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
binlog-ignore-db=自定义1
binlog-ignore-db=自定义2
# 5. 配置event_scheduler(主)
event_scheduler = on
# 6. 设置 binlog_format(主)
binlog_format     = row

2.2.Mysql库 如果有触发器

建议用 if server-id = 1 来判断 主库才执行,从库不执行
避免 自增列、now()、uuid() 执行结果不一致,从而导致 主从数据不一致

三、从库配置,配置在 [mysqld] 下方(从)

3.1./etc/my.cnf 配置(从)

# 1. 从库 server-id ,和主库不同即可(从)
server-id = 2
# 2.注释掉 log-bin=mysql-bin  从库不需要配置此项,从主库传递到从库,从库没必要开启binlog ( Slave 作为其它 Slave 的 Master 时需要开启,我们只是从库 所以不开启)
# log-bin=mysql-bin
# 3. 支持通配符,忽略 zdy开头的表 进行主从同步(从)
replicate-wild-ignore-table=数据库.zdy_%   # zdy_ 开头的忽略
replicate-wild-ignore-table = mysql.%
replicate-wild-ignore-table = information_schema.%
replicate-wild-ignore-table = sys.%
replicate-wild-ignore-table = performance_schema.%
# 4.从库关闭事件(从)
event_scheduler = off
# 5.从库设置只读(从)
read_only=1
# 6.为保证数据一致性,每次同步都进行磁盘同步(从)
sync_binlog = 1
# 7. 通过复制接收到并执行的更新都会被写入该从服务器的二进制日志中。这使得连接到此从服务器的其他从服务器也能接收到这些自主服务器同步过来的更新。(从)
log_slave_updates = 1
# 8.从库中继日志。Relaylog 的主要目的是提高数据复制的效率和可靠性(从)
relay_log = mysql-relay-bin

四、建立主从

4.1. 建立主从需要的账号 (主-SSH)

# CentOS SSH 连接后登录MySQL
mysql -u root -p
输入 mysql root 的密码:你的密码
# 创建用户,指定该用户只能在 主库IP 上 使用 密码登录
mysql> create user '用户名'@'主库IP' identified by '密码';
# 为用户 赋予 REPLICATION SLAVE 权限
mysql> grant replication slave on *.* to '用户名'@'主库IP';
mysql> GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
# 查看用户
mysql> select user,host from mysql.user;
# 查看master状态
mysql> show master status;

4.2. 主库上进行备份等操作(主-SSH)

# 在主库机器上 SSH 登录后 执行mysqldump命令,此命令会包含 MASTER_LOG_FILE 和 MASTER_LOG_POS 等位置信息
# 后续从库按照 备份的位置开始建立,备份后 变更的数据 会自动同步到从库
mysqldump -u root -p --single-transaction  --master-data=2 --databases 数据库1 数据库2 > /home/dbsql.sql
输入密码:你的密码
# mysqldump 备份完毕后,把备份文件 从 master(主) 传输 至 slave(从) 机器
 scp /home/dbsql.sql root@从库IP:/home
 输入:yes
 输入从库SSH的密码:你的密码

4.3.在从库上还原数据库(从-SSH)

# 导入备份的mysql数据
mysql -u用户名 -p密码 < /home/dbsql.sql 
# 导入成功后,重启mysql
systemctl restart mysqld

4.4.在从库的MySQL中 建立主从连接(从)

# 查看 dbsql.sql 文件中的 postion ,查看文件的前 30行(文件小直接打开查看,文件超过GB之后用命令查看)
# SSH命令
cd /home
head -n 30 dbsql.sql

# 找到如下结果,下边建立主从连接会用到:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000276', MASTER_LOG_POS=11613709;
# 建立主从连接,我是在navicate 中操作的,SSH命令中登录mysql也可以,navicate命令如下:
# 我们在建立主从过程中,主机是不需要停止的,这条命令执行完毕,会从此位置(也就是mysqldump的位置) 开始
# 把之后 主 的所有改动 同步至 从库,使主从数据一致,就实现了 不停机 主从

change master to master_host='主的IP', 
master_user='4.1建立的账号'
,MASTER_PORT =3306
,master_password='4.1账号的密码'
,master_log_file='mysql-bin.000276'
,master_log_pos=11613709;

# 停止主从同步
stop slave; 
# 开启主从同步
start slave;  
# 查看 从库 状态 ,看到 2个 Yes  恭喜你,大功告成
show slave status; 

# 看到结果中的下边2列,表示主从建立成功:
Slave_IO_Running	Slave_SQL_Running
Yes	Yes

4.5 不停机主从至此就搭建完毕了,恭喜一下 自己吧 _

五、主从搭建过程中 排查问题的方法

5.1 查看日志,根据日志指引能解决99%的问题:

/var/log/mysqld.log

5.2 日志中并未报错,在从库中 停一下 再启动 也许就好了(从库执行)

# 停止主从同步(从)
stop slave; 
# 开启主从同步(从)
start slave;  
# 查看 从库 状态 ,看到 2个 Yes  恭喜你,大功告成(从)
show slave status; 

5.3 解决不了的错误/ 不需要的主从内容 可以 跳过

https://blog.csdn.net/weixin_72244810/article/details/132569820
slave_skip_errors = 1146

六、其它备忘

清空主从配置(从)

reset slave all; 

show slave status\G 超详细全面解释

	https://blog.csdn.net/weixin_48154829/article/details/134974113

主从原理

在这里插入图片描述

mysql5.7 主从复制压力测试

	https://blog.csdn.net/shixiaoling123/article/details/109004274

主从复制的日志格式 ,这里的日志格式就是指二进制日志的三种格式

binlog_format=statement
binlog_format=row
binlog_format=mixed
其中基于row的复制方式更能保证主从库数据的一致性,但日志量较大,在设置时考虑磁盘的空间问题

硬件推荐

		a) CPU好
		b) SSD硬盘 或者 SAN
		c)同一交换机,万兆环境

尽量不要使用 存储过程 和 触发器、事件

尽量不要使用 temporary tables

尽量不要使用MyISAM类型的表,推荐使用InnoDB,MyISAM不支持事务

mysql主从同步加速方法

1、sync_binlog在slave端设置为0
2、–logs-slave-updates 从服务器从主服务器接收到的更新不记入它的二进制日志。
3、直接禁用slave端的binlog
4、slave端,如果使用的存储引擎是innodb,innodb_flush_log_at_trx_commit =2

九、附录

1.配置完毕检查语句

# uuid 主从检查,不相同即可
SHOW VARIABLES LIKE 'server_uuid%';
# server-id 主从检查,不相同即可
show variables like '%server_id%';
# event scheduler ,一般主库on 从库 off
show variables like '%event_scheduler%';
# read only ,一般主库 on ,从库off
show variables like '%read_only%';
# sync_binlog
show variables like '%sync_binlog%';
# log_slave_updates 
show variables like '%log_slave_updates%';
# relay_log
show variables like '%relay_log%';

2.主从搭建完毕,检查表个数是否相同

SELECT COUNT(*) TABLES, table_schema
FROM information_schema.TABLES
WHERE table_schema = '数据库名称'
GROUP BY table_schema;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1802517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11 IP协议 - IP协议头部

什么是 IP 协议 IP&#xff08;Internet Protocol&#xff09;是一种网络通信协议&#xff0c;它是互联网的核心协议之一&#xff0c;负责在计算机网络中路由数据包&#xff0c;使数据能够在不同设备之间进行有效的传输。IP协议的主要作用包括寻址、分组、路由和转发数据包&am…

Android 应用权限

文章目录 权限声明uses-permissionpermissionpermission-grouppermission-tree其他uses-feature 权限配置 权限声明 Android权限在AndroidManifest.xml中声明&#xff0c;<permission>、 <permission-group> 、<permission-tree> 和<uses-permission>…

shell编程(二)——字符串与数组

本文为shell 编程的第二篇&#xff0c;介绍shell中的字符串和数组相关内容。 一、字符串 shell 字符串可以用单引号 ‘’&#xff0c;也可以用双引号 “”&#xff0c;也可以不用引号。 单引号的特点 单引号里不识别变量单引号里不能出现单独的单引号&#xff08;使用转义符…

[职场] 缺点范文 #知识分享#经验分享#媒体

缺点范文 回答示范1&#xff1a; 我的公开演讲能力比较差&#xff0c;在公共场合讲话的时候我会感到紧张&#xff0c;不过谈论我熟悉的领域我会比较放松。所以当我需要做公开发言的时候&#xff0c;我必须要准备得很充分。我确实羡慕那些无论什么话题都能够高谈阔论的人。 回…

光伏电站绘制软件的基本方法

随着可再生能源的快速发展&#xff0c;光伏电站的建设日益受到重视。为了提高光伏电站设计的效率和准确性&#xff0c;光伏电站绘制软件的应用变得至关重要。本文将介绍光伏电站绘制软件的基本方法&#xff0c;包括绘制屋顶、屋脊、障碍物和参照物&#xff0c;铺设光伏板&#…

Java Web学习笔记24——Vue项目开发流程

import是引入文件。 export是将对象导出为模块。 new Vue({ router, router: h > h(App) }).$mount(#app) App.vue: vue的组成文件以.vue结尾&#xff0c;每个组件由三个部分组成&#xff1a;<template>、<script>、<style>。 <template><d…

玩游戏时服务器遭到DDOS攻击崩溃,DDOS攻击是什么?

某网游服务器突然崩溃&#xff0c;大量玩家被迫下线。随后该游戏官方出面解释是因服务器遭遇了DDoS攻击&#xff0c;所以导致登录异常。这个DDoS攻击到底是哪里来的鬼怪&#xff0c;敢这么给自己加戏&#xff1f; 什么是DDoS攻击&#xff1f; DDoS攻击&#xff0c;专业表述是“…

YOLOv5白皮书-第Y5周:yolo.py文件解读

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、环境 语言&#xff1a;Python3、Pytorch开发环境电脑系统&#xff1a;Windows 10语言环境&#xff1a;Python 3.9.2编译器&#xff1a;VS Code显卡&#…

linux 内核映像差异介绍:vmlinux、zImage、zbImage、image、uImage等

一、背景 Linux内核是整个Linux操作系统的核心部分&#xff0c;它是一个负责与硬件直接交互的软件层&#xff0c;并且提供多种服务和接口&#xff0c;让用户程序能够方便地使用硬件资源。 当我们编译自定义内核时&#xff0c;可以将其生成为以下内核映像之一&#xff1a;vmli…

前端:快捷 复制chrome 控制台打印出来的 数组对象

程序中console.log出来的对象。按照以下步骤操作 1.右键点击需要处理的对象&#xff0c;会出现Store as global variable&#xff0c;点击 2.点击 Store as global variable 控制台会出现 3.在控制台 输入 copy(temp1) 这样对象就复制到了你的黏贴面板里面 在代码中直接 c…

k8s之deployments相关操作

k8s之deployments相关操作 介绍 官网是这样说明如下&#xff1a; 一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。 你负责描述 Deployment 中的目标状态&#xff0c;而 Deployment 控制器&#xff08;Controller&#xff09; 以受控速率更改实际状态&#xf…

Soildworks学习笔记(二)

放样凸台基体&#xff1a; 自动生成连接两个物体两个面的基体&#xff1a; 2.旋转切除&#xff1a; 3.剪切实体&#xff1a; 4.转换实体引用&#xff1a; 将实体的轮廓线转换至当前草图使其成为当前草图的图元,主要用于在同一平面或另一个坐标中制作草图实体或其尺寸的副本。 …

使用 ESP32 和 PlatformIO (arduino框架)实现 Over-the-Air(OTA)固件更新

使用 ESP32 和 PlatformIO 实现 Over-the-Air&#xff08;OTA&#xff09;固件更新 摘要&#xff1a; 本文将介绍如何在 ESP32 上使用 PlatformIO 环境实现 OTA&#xff08;Over-the-Air&#xff09;固件更新。OTA 更新使得在设备部署在远程位置时&#xff0c;无需物理接触设…

融合创新:Web3如何重新定义网络生态

随着区块链技术的不断发展和Web3时代的到来&#xff0c;我们正在见证着互联网生态的巨大变革。Web3将传统的互联网架构转变为去中心化、开放、透明的新网络生态&#xff0c;为创新和合作提供了全新的可能性。本文将深入探讨Web3如何重新定义网络生态&#xff0c;探索融合创新的…

比亚迪正式签约国际皮划艇联合会和中国皮划艇协会,助推龙舟入奥新阶段

6月5日&#xff0c;比亚迪与国际皮划艇联合会、中国皮划艇协会在深圳共同签署合作协议&#xff0c;国际皮划艇联合会主席托马斯科涅茨科&#xff0c;国际皮划艇联合会秘书长理查德派蒂特&#xff0c;中国皮划艇协会秘书长张茵&#xff0c;比亚迪品牌及公关处总经理李云飞&#…

【C语言】04.循环结构

C语言中提供了3种循环结构&#xff1a;while循环 、do-while循环、 for循环。 一、while循环 while(表达式)语句;//如果循环体想包含更多的语句&#xff0c;可以加上⼤括号 while循环的执行流程&#xff1a; 例题&#xff1a; 输⼊⼀个正的整数&#xff0c;逆序打印这个整数…

详解FedAvg:联邦学习的开山之作

FedAvg&#xff1a;2017年 开山之作 论文地址&#xff1a;https://proceedings.mlr.press/v54/mcmahan17a/mcmahan17a.pdf 源码地址&#xff1a;https://github.com/shaoxiongji/federated-learning 针对的问题&#xff1a;移动设备中有大量的数据&#xff0c;但显然我们不能收…

电调, GPS与飞塔

电调油门行程校准&#xff1a; 断电-----油门推到最高-------电调上电-------滴滴------油门推到最低---滴滴滴---校准完成。 http://【【教程】油门行程校准&#xff08;航模&#xff0c;电机&#xff0c;电调&#xff09;】https://www.bilibili.com/video/BV1yJ411J7aX?v…

区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测

区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测 目录 区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

企业办公网安全管控挑战与解决方案

在数字化浪潮的推动下&#xff0c;企业正经历前所未有的变革。然而&#xff0c;随之而来的是一系列复杂的网络安全风险和挑战。我们的网络边界不再清晰&#xff0c;各种设备轻松接入企业网络&#xff0c;这不仅带来了便利&#xff0c;也极大地增加了安全风险。想象一下&#xf…