当前位置: 首页 > news >正文

centos8 mysql 主从复制

原理

在这里插入图片描述

一、一主一从

准备工作

在这里插入图片描述

1.主库配置

1、修改配置文件 /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1-232-1,默认为
server-id=1
#是否只读,1 代表只读,0代表读写
read-only=0
#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01

2.重启MySQL服务器

systemctl restart mysqld

3、登录mysql,创建远程连接的账号,并授予主从复制权限hostname服务器名Root@123 处事话密码 8位数 需要特殊字符和大小写

CREATE USER 'hostname'@'%' IDENTIFIED WITH mysql_native_password By 'Root@123';

4、为’hostname’@‘%’ 用户分配主从复制权限

GRANT REPLICATION SLAVE ON *.* TO 'hostname'@'%';

5、通过指令,查看二进制日志坐标

show master status

在这里插入图片描述

字段含义说明:
file:从哪个日志文件开始推送日志文件
position:从哪个位置开始推送日志
binlog ignore db:指定不需要同步的数据库

2.从库配置

1.修改配置文件 /etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一,取值范围:1-2^32-1,和主库不一样即可
server-id-2
是否只读,1代表只读,0代表读写
read-only-1
2.重启服务器
systemctl restart mysqld
3.登录mysql 设置主库配置
# 8.0.23版本以下执行
CHANGE MASTER TOMASTER_HOST = '主库的IP地址',MASTER_USER = '用于复制的用户名',MASTER_PASSWORD = '该用户对应的密码',MASTER_LOG_FILE = '主库二进制日志文件名',MASTER_LOG_POS = 主库二进制日志位置;
# 8.0.23版本以上
CHANGE REPLICATION SOURCE TOSOURCE_HOST = '主库的IP地址',SOURCE_USER = '用于复制的用户名',SOURCE_PASSWORD = '该用户对应的密码',SOURCE_LOG_FILE = '主库二进制日志文件名',SOURCE_LOG_POS = 主库二进制日志位置;

SOURCE_LOG_FILE ,SOURCE_LOG_POS 通过主库查询show master status主库配置5
在这里插入图片描述
4.开启同步

show replica status ;
#8.0.22之后
show slave status ;
#8.0.22之前

5.查看主从同步状态
在这里插入图片描述

3.遇到的问题

如果Replica_IO_Running是NO

1.检查防火墙配置

在这里插入图片描述

2.从机ping主机是否连通
ping 自己的主机域名
3.如果是通过虚拟机centos克隆的mysql

由于虚拟机克隆,克隆完之后所有的文件都是一样的,包括IP地址、mac地址、uuid等。导致mysql的uuid一样,在搭建主从复制的时候,如果uuid是一样的,那么就不能搭建成功。出现了Slave_IO_Running:
No的情况。

解决:
1.先查看MySQL的安装位置

show variables like 'datadir';

在这里插入图片描述

2.通过mysql生成一个uuid用于修改

select uuid();

3.复制生成的uuid进入查询的配置文件修改uuid

vim /var/lib/mysql/auto.cnf

4.重启Mysql服务

systemctl restart mysqld

二、双主双从

原理:
在这里插入图片描述

1、 m1、m2主机配置

1.m1修改配置文件 /etc/my.cnf


#mysql服务ID,保证整个集群环境中唯一,取值范围:1-2^32-1,默认为1
server-id=1
#指定同步的数据库
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03
#在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates

2.m2修改配置文件 /etc/my.cnf


#mysql服务ID,保证整个集群环境中唯一,取值范围:1-2^32-1,默认为1
server-id=3
#指定同步的数据库
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03
#在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates

3.重启MySQL服务器

systemctl restart mysqld

2、主机搭建

1.两台主库创建账户并授权


#创建hostname用户,并设置密码,该用户可在任意主机连接该MySQL服务
CREATE USER 'hostname'@'%' IDENTIFIED WITH mysql_native_password By 'Root@123';

2.为’hostname’@‘%’ 用户分配主从复制权限

GRANT REPLICATION SLAVE ON *.* TO 'hostname'@'%';

3.通过指令,查看两台主库的二进制日志坐标

show master status ;

3.s1、s2从库配置

1.s1 从库
server-id=2
2.s2从库
server-id=4

3.重启MySQL服务器

systemctl restart mysqld

4.链接主库
需要注意s1对应的是m1s2对应的是m2
具体方式 参照一主一从的从库设置主库

# 8.0.23版本以下执行
CHANGE MASTER TOMASTER_HOST = '主库的IP地址',MASTER_USER = '用于复制的用户名',MASTER_PASSWORD = '该用户对应的密码',MASTER_LOG_FILE = '主库二进制日志文件名',MASTER_LOG_POS = 主库二进制日志位置;
# 8.0.23版本以上
CHANGE REPLICATION SOURCE TOSOURCE_HOST = '主库的IP地址',SOURCE_USER = '用于复制的用户名',SOURCE_PASSWORD = '该用户对应的密码',SOURCE_LOG_FILE = '主库二进制日志文件名',SOURCE_LOG_POS = 主库二进制日志位置;
3.启动两台从库主从复制,查看从库状态
start slave;
show slave status \G;

3、两台主机相互复制 m1复制m2 m2复制m1 参照从链接主库的方式

CHANGE MASTER TOMASTER_HOST = '主库的IP地址',MASTER_USER = '用于复制的用户名',MASTER_PASSWORD = '该用户对应的密码',MASTER_LOG_FILE = '主库二进制日志文件名',MASTER_LOG_POS = 主库二进制日志位置;
# 8.0.23版本以上
CHANGE REPLICATION SOURCE TOSOURCE_HOST = '主库的IP地址',SOURCE_USER = '用于复制的用户名',SOURCE_PASSWORD = '该用户对应的密码',SOURCE_LOG_FILE = '主库二进制日志文件名',SOURCE_LOG_POS = 主库二进制日志位置;
3.启动,查看状态
start slave;
show slave status \G;

三、测试
分别在两台主库m1、m2上执行DDL、DML语句,查看涉及到的数据库服务器的数据同步情况。


create database test;create table u2_table(
id int not null primary key,
name varchar(50) not null,
sex varchar(1)
)engine=innodb default charset=utf8mb4;insert into u2_table(id,name,sex) values(1,'Tom','1');
insert into u2_table(id,name,sex) values(2,'Trigger','0');
insert into u2_table(id,name,sex) values(3,'Dawn','1');
insert into u2_table(id,name,sex) values(4,'ack Ma','1');
insert into u2_table(id,name,sex) values(5,'Coco','0');
insert into u2_table(id,name,sex) values(6, 'jerry','1');

相关文章:

centos8 mysql 主从复制

原理 一、一主一从 准备工作 1.主库配置 1、修改配置文件 /etc/my.cnf #mysql 服务ID,保证整个集群环境中唯一,取值范围:1-232-1,默认为 server-id1 #是否只读,1 代表只读,0代表读写 read-only0 #忽略的数据,指不需要同步的数据库 #binlog…...

【C++】入门【五】

本节目标 一、C/C内存分布 二、C语言中动态内存管理方式 三、C中动态内存管理 四、operator new与operator delete函数 五、new和delete的实现原理 六、定位new表达式(placement-new) 七、常见面试题 一、C/C内存分布 一个程序占用的内存主要有以下几部分栈区(stac…...

【React】二、状态变量useState

文章目录 1、React中的事件绑定1.1 基础事件绑定1.2 使用事件对象参数1.3 传递自定义参数1.4 同时传递事件对象和自定义参数 2、React中的组件3、useState 1、React中的事件绑定 1.1 基础事件绑定 语法:on 事件名称 { 事件处理程序 },整体上遵循驼峰…...

SQL Server中的数据处理函数:提升SQL查询能力

文章目录 前言1. 数据类型转换函数CAST()CONVERT()TRY_CAST() 和 TRY_CONVERT() 2. 数学函数ABS()CEILING()FLOOR()ROUND()POWER()SQRT() 3. 日期和时间函数GETDATE()SYSDATETIME()DATEADD()DATEDIFF()YEAR()、MONTH() 和 DAY()FORMAT() 4. 条件处理函数CASEIIF() 总结 前言 在…...

TypeScript 语言学习入门级教程五

在前面的教程中,我们已经逐步深入地学习了 TypeScript 的诸多特性,包括基础语法、类型系统、面向对象编程、装饰器以及一些高级类型等。在本教程中,我们将聚焦于 TypeScript 的模块系统、命名空间与模块的关系、声明文件以及如何在实际项目中…...

上海市计算机学会竞赛平台2022年7月月赛丙组匹配括号(三)

题目描述 如果字符序列仅由 ( 与 ) 构成,则在满足以下条件时,它是匹配的: 空序列是匹配的;如果括号序列 s 是匹配的,那么 (s) 也是匹配的;如果括号序列 s 与 t 是匹配的,那么 st 也是匹配的。…...

108.【C语言】数据结构之二叉树查找值为x的节点

目录 1.题目 代码模板 2.分析 分类讨论各种情况 大概的框架 关键部分(继续递归)的详解 递归调用展开图 3.测试结果 其他写法 4.结论 5.注意事项 不推荐的写法 1.题目 查找值为x的节点并返回节点的地址 代码模板 typedef int BTDataType; typedef struct BinaryT…...

Java学习笔记(10)--面向对象基础

学习资料来自黑马程序员 目录 设计对象并使用 类和对象 定义类 创建类的对象 使用对象 类的几个补充注意事项 设计对象并使用 类和对象 类(设计图):是对象共同特征的描述。 对象:是真实存在的具体东西。 在Java中必须先…...

社群分享在商业引流与职业转型中的作用:开源 AI 智能名片 2+1 链动模式小程序的应用契机

摘要:本文聚焦于社群分享在商业领域的重要性,阐述其作为干货诱饵在引流方面的关键意义。详细探讨了提供有价值干货的多种方式,包括文字分享、问题解答以及直播分享等,并分析了直播分享所需的条件。同时,以自身经历为例…...

nodejs官方文档学习-笔记-1

一、异步工作 process.nextTick(): 回调会在当前操作完成后立即执行,但在事件循环进入下一个阶段之前。它是最先执行的。 Promise.then(): 回调会在 microtask 队列中执行,通常是在当前操作完成后,但在事件循环进入…...

android视频播放器之DKVideoPlayer

一个老牌子的播放器了,项目可能已经有些日子没有维护了。但是使用效果还是不错的。支持多种视频格式,及重力感应、调节亮度等多种效果。想来想去,还是记录下来,我会在文章的最后注明github地址: 首先引入依赖&#xff…...

Linux——基础命令(3)

1.Linux——基础命令(1)-CSDN博客 2.Linux——基础命令(2) 文件内容操作-CSDN博客 一、打包压缩 打包压缩 是日常工作中备份文件的一种方式 在不同操作系统中,常用的打包压缩方式是不同的选项 含义 Windows 常用 rar…...

MySQL备份恢复

华子目录 MySQL日志管理为什么需要日志日志作用日志文件查看方法错误日志通用查询日志慢查询日志示例 撤销日志重做日志二进制日志---重要中继日志 MySQL备份备份类型逻辑备份优缺点备份内容备份工具导入sql文件 MySQL日志管理 为什么需要日志 用于排错用来做数据分析了解程序…...

鲲鹏麒麟安装离线版MySQL5.7

最近有项目需求,需要在鲲鹏ARM服务器上安装数据库MySQL5.7,服务器为鲲鹏920,操作系统Kylin Linux Advanced Server release V10 (Tercel) 安装包 下载地址:https://cloud.189.cn/t/JRVnmeEvMRZ3(访问码:t…...

【不稳定的BUG】__scrt_is_managed_app()中断

【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能,仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…...

MyBatis 详解

MyBatis 是一个优秀的 持久层框架,它支持定制化 SQL、存储过程以及高级映射,能够很好地降低 Java 应用程序对数据库操作的复杂性。以下是对 MyBatis 的详细解析: 1. MyBatis 简介 MyBatis 是 Apache 的一款开源框架,其核心特性是…...

Cursor+Devbox AI开发快速入门

1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…...

编写按层次顺序(同一层自左至右)遍历二叉树的算法。或:按层次输出二叉树中所有结点;

解:思路:既然要求从上到下,从左到右,则利用队列存放各子树结点的指针是个好办法。 这是一个循环算法,用while语句不断循环,直到队空之后自然退出该函数。 技巧之处:当根结点入队后,会…...

docker 安装mysql8.0.29

docker 安装mysql8.0.29 1、拉取镜像 docker pull mysql:8.0.292、启动容器 docker run -p 3306:3306 --name mysql8.0.29 -e MYSQL_ROOT_PASSWORDroot -d mysql:8.0.29-p 将本地主机的端口映射到docker容器端口(因为本机的3306端口已被其它版本占用,所以使用330…...

vue深入理解输入框字符限制的优化设计

文章目录 深入理解输入框字符限制的优化设计背景与挑战输入框限制的重要性常见需求 多种实现方法解析方法一:基于实时过滤的字符限制方法二:借助正则验证方法三:提交时二次校验 性能优化无障碍设计延伸场景与最佳实践1. 多语言国际化支持2. 动…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC&#xf…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...