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
对应的是m1
,s2
对应的是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地址: 首先引入依赖ÿ…...

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. 动…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...