CentOS7 MySQL5.7.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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基尼系数计算过程

引言 在探讨经济公平性时&#xff0c;基尼系数是一个不可忽视的指标。它不仅反映了一个国家或地区内部的收入分配状况&#xff0c;还对政策制定和社会稳定有着深远的影响。 基尼系数的定义 基尼系数是由意大利统计学家科拉多基尼在1912年提出的&#xff0c;用来衡量一个国家…

【T3】畅捷通T3软件查询明细账等账簿,出现某些列串位置。

【问题描述】 查询畅捷通T3软件科目明细账的时候&#xff0c; 出现某些行的数据串位置&#xff0c; 摘要、金额、方向都没有在对应的列。 【解决方案】 根据跟踪发现&#xff0c;最终在客户档案上发现问题。 数据串位中对应的客户名称、简称中的对后面多了一个【tab】键的空格…

Nodejs 第七十七章(MQ高级)

MQ介绍和基本使用在75章介绍过了&#xff0c;不再重复 MQ高级用法-延时消息 什么是延时消息? Producer 将消息发送到 MQ 服务端&#xff0c;但并不期望这条消息立马投递&#xff0c;而是延迟一定时间后才投递到 Consumer 进行消费&#xff0c;该消息即延时消息 插件安装 R…

【深度学习】NLP,Transformer讲解,代码实战

文章目录 1. 前言2. Transformer结构训练过程1. 输入嵌入和位置编码2. 编码器层2.1 单头的注意力机制(便于理解)2.2 多头的注意力机制(Transformer真实使用的)2.3 残差连接和层归一化2.4 前馈神经网络&#xff08;FFN&#xff09;2.5 残差连接和层归一化2.6 总结 3. 解码器层 推…

Jenkins构建 Maven项目(微服务)并自动发布

前面讲了docker 安装Jenkins和gitlab代码管理工具&#xff0c;接下来我们讲一下Jenkins怎么构建 Maven项目。 1. 首先Jenkins配置下面3中工具类 首先是在本地安装三个jenkins自动配置相关的工具 1.1 JDK 由于我们使用docker来启动jenkins&#xff0c;其自带有jdk&#xff0c;…

摩托罗拉手机在中国以外的市场复兴,在欧洲和美国大幅增长

摩托罗拉曾是全球手机行业的领导者&#xff0c;不过自从被诺基亚击败后&#xff0c;它就辗转被卖了又卖&#xff0c;曾经辉煌的品牌堕落了&#xff0c;让人颇为可惜&#xff0c;不过如今摩托罗拉手机似乎看到了复兴的希望&#xff0c;在中国以外的市场都取得了快速增长。 市调机…

BC11 学生基本信息输入输出

BC11 学生基本信息输入输出 废话不多说上题目&#xff1a; 这道题表面上很简单&#xff0c;但是里面有很重要的点先给大家上正确的代码&#xff1a; #include<stdio.h> int main() {int stu 0;float c 0;float English 0;float math 0;scanf("%d;%f,%f,%f"…

Unity API学习之消息机制理论与应用

目录 消息机制 示例1&#xff1a;同一物体中不同组件之间发送消息 示例2&#xff1a;父与子对象之间的消息发送(BroadcastMassage) 父对象向子对象发送消息 ​编辑 子对象向父对象发送消息 消息机制 在Unity中&#xff0c;SendMessage 方法用于在游戏对象及其所有子对象上…

Zabbix6.0自动发现Linux服务器并添加主机

文章目录 一、整体流程二、操作过程 一、整体流程 Zabbix自动发现主机功能是Zabbix监控系统的一个重要功能&#xff0c;它能够自动发现并添加新的主机到监控系统中&#xff0c;从而减少人为繁琐的操作&#xff01; 步骤操作1️⃣ 第一步创建自动发现规则2️⃣ ​第二步创建自…

汇编语言作业(五)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、 实验总结 一、实验目的 1.熟悉掌握汇编语言的程序结构&#xff0c;能正确书写数据段、代码段等 2&#xff0c;利用debug功能&#xff0c;查看寄存器&#xff08;CS,IP,AX,DS..)及数据段的…

Python集合的基本概念和使用方法

目录 集合&#xff08;Set&#xff09; 基本概念 基本特性 基本操作 集合运算 成员测试 高级操作 集合推导式 总结 集合&#xff08;Set&#xff09; Python集合&#xff08;Set&#xff09;是Python语言中一个非常实用且强大的数据结构&#xff0c;它用于存储多个不…

Python实现删除Word文档中带有“指定内容”的段落文本(7)

前言 本文是该专栏的第7篇,后面会持续分享Python办公自动化干货知识,记得关注。 在处理word文档内容的时候,有时候我们需要一个干净整洁的文本内容。比如说,如下图所示的情况: 在处理上述word文档内容的时候,我们希望将文本底部的“下载链接”以及“附件信息”两个段落,…

力扣199. 二叉树的右视图

给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入: [] 输出: [] /*** Def…

二叉树顺序结构——堆的结构与实现

二叉树顺序结构——堆的结构与实现 一、二叉树的顺序结构二、堆的概念及结构三、堆的实现堆向下调整算法堆的创建建堆时间复杂度堆的插入(堆向上调整算法)堆的删除堆的代码实现(使用VS2022的C语言)初始化、销毁构建、插入、删除返回堆顶元素、判空、返回有效元素个数 四、完整 …

【Python教程】4-字符串、列表、字典、元组与集合操作

在整理自己的笔记的时候发现了当年学习python时候整理的笔记&#xff0c;稍微整理一下&#xff0c;分享出来&#xff0c;方便记录和查看吧。个人觉得如果想简单了解一名语言或者技术&#xff0c;最简单的方式就是通过菜鸟教程去学习一下。今后会从python开始重新更新&#xff0…

7.高级纹理

前面的基础纹理包括法线纹理、渐变纹理和遮罩纹理等。这些纹理都属于低纬&#xff08;一维或二维&#xff09;纹理。 立方体纹理&#xff08;Cubemap&#xff09;实现环境映射 渲染纹理&#xff08;Render Texture&#xff09; 程序纹理&#xff08;Procedure Texture&#…

java线程生命周期介绍

Java线程的生命周期包含以下几个状态&#xff1a; 1.新建(New)&#xff1a;线程对象被创建&#xff0c;但是还没有调用start()方法。 1.运行(Runnable)&#xff1a;线程正在运行或者是就绪状态&#xff0c;等待CPU时间片。 1.阻塞(Blocked)&#xff1a;线程暂时停止执行&…

每日5题Day21 - LeetCode 101 - 105

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; class Solution {public boolean isSymmetric(TreeNode root) {if(root null){return true;}Stack<…

已解决Error || KeyError: ‘The truth value of a Series is ambiguous‘

已解决Error || KeyError: ‘The truth value of a Series is ambiguous’ &#x1f680; 原创作者&#xff1a; 猫头虎 作者微信号&#xff1a; Libin9iOak 作者公众号&#xff1a; 猫头虎技术团队 更新日期&#xff1a; 2024年6月6日 博主猫头虎的技术世界 &#x1f3…

第十篇——等价性:信息是如何压缩的?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 基于信息是如何进行压缩的&#xff0c;引出来等价信息的概念&#xff1b;…