MySQL 8.0 与 8.4 主主同步

news2024/9/20 5:42:10
MySQL数据库主主同步

快速部署8.0和8.4数据库

  • 初始化8.0数据库
# 两台服务器安装MySQL8.0数据库(非docker安装)
tar -xf mysql-8.0.39-1.el9.x86_64.rpm-bundle.tar
yum -y install mysql-community*.rpm
systemctl restart mysqld.service
  • 初始化8.4数据库
# 两台服务器安装MySQL8.4数据库
tar -xf mysql-8.4.2-1.el9.x86_64.rpm-bundle.tar
yum -y install mysql-community*.rpm
systemctl restart mysqld.service

更改root初始密码

  • 进入数据库
mysql -uroot -p$(grep password /var/log/mysqld.log | awk '{print $NF}')
  • 修改root初始密码
alter user root@'localhost' identified by 'you_password';
exit;
配置数据库主主同步

创建同步的库和用户

-- 创建同步的库
CREATE DATABASE new_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- 新建同步的用户
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

配置主节点 1

  • 修改 /etc/my.cnf 文件,添加下面内容
server-id = 1
log_bin = mysql-bin
binlog_do_db = new_database
# 设置自增列的增量值,建议将其设置为大于 1 的值,以避免两个主节点在插入时产生相同的自增值
auto_increment_increment = 2
# 设置自增列的起始值
auto_increment_offset = 1
  • 重启主节点 1
systemctl restart mysqld.service

配置主节点 2

  • 修改数据库配置文件 /etc/my.cnf
server-id = 2
log_bin = mysql-bin
binlog_do_db = new_database
auto_increment_increment = 2
auto_increment_offset = 2
  • 重启主节点 2
systemctl restart mysqld.service

8.0 版本配置主主同步

  • 主节点1登录主节点2数据库,将密钥发送到主节点2
mysql -ureplicator -h主节点2的IP -p'password' --get-server-public-key
  • 主节点2登录主节点1数据库,将密钥发送到主节点1
mysql -ureplicator -h主节点1的IP -p'password' --get-server-public-key
  • 获取当前的二进制日志文件和位置
-- 主节点1和2都需要查看
SHOW MASTER STATUS;

/*
主节点1测试环境的结果(仅作参考)
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      157 | new_test     |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

主节点2测试环境结果
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      157 | new_test     |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
*/
  • 配置主节点 1 连接主节点 2
CHANGE MASTER TO
    MASTER_HOST='主节点2的IP',
    MASTER_USER='replicator',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='记录的File',
    MASTER_LOG_POS=记录的Position;

-- 启动复制
START SLAVE;
  • 配置主节点 2 连接主节点 1
CHANGE MASTER TO
    MASTER_HOST='主节点1的IP',
    MASTER_USER='replicator',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='记录的File',
    MASTER_LOG_POS=记录的Position;

-- 启动复制
START SLAVE;
  • 检查复制状态
SHOW SLAVE STATUS\G;
-- 确保 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes。

8.4 版本配置主主同步

  • 同理,需要先将密钥发送到对方服务器
mysql -ureplicator -hIP -p'password' --get-server-public-key
  • 获取当前的二进制日志文件和位置
-- 8.4 部分查询有改变
SHOW BINARY LOG STATUS;

/*
mysql> SHOW BINARY LOG STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      158 | new_test     |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
*/
  • 配置主节点 1 连接主节点 2
-- 此处也会有变化
CHANGE REPLICATION SOURCE TO
    SOURCE_HOST='主节点2的IP',
    SOURCE_USER='replicator',
    SOURCE_PASSWORD='password',
    SOURCE_LOG_FILE='记录的File',
    SOURCE_LOG_POS=记录的Position;

-- 启动复制
START REPLICA;
  • 配置主节点 2 连接主节点 1
CHANGE REPLICATION SOURCE TO
    SOURCE_HOST='主节点1的IP',
    SOURCE_USER='replicator',
    SOURCE_PASSWORD='password',
    SOURCE_LOG_FILE='记录的File',
    SOURCE_LOG_POS=记录的Position;

-- 启动复制
START REPLICA;
  • 检查复制状态
SHOW REPLICA STATUS\G

-- -- 确保 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes。
总结和答疑

8.4 是MySQL数据库的一个分水岭,部分操作会有小小的变化。

  • 具体变化请参考文档: https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html

新的同步方式会验证用户名密钥,没有同步密钥会导致同步不成功

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

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

相关文章

Win10 录屏秘籍大公开:从新手到高手的进阶之路

之前因为某些原因不方便到客户那里进行软件培训,我们就发现录屏讲解供客户随时查看的方式好像更有效果。这次我就介绍一些能够实现win10怎么录屏操作的工具讲解。 1.福昕录屏大师 链接:www.foxitsoftware.cn/REC/ 这个工具是一款专业的电脑录屏软件&a…

SVN泄露 CTFHUB 解题笔记

参考大佬链接CTFHub | SVN泄露_ctfhubsvn泄露-CSDN博客 先下载插件 然后把GIT;里面的代码 乱盘上去 python2 不知道需不需要 先装了 再说。。。我的是裸机~ 开始作妖模式 Ubuntu 22.10 | Installati.one 上面一行的代码 链接 下面 插件 GITHUB页面下面的代码 d…

企业网络安全关键:防御措施和应急响应

感谢浪浪云支持发布 浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 什么是网络安全常见的网络安全威胁病毒和恶意软件网络钓鱼拒绝服务攻击中间人攻击社会工程学 基本的网络安全措施强密码策略双因素认证安装和更新防病毒软件定期备份 高级的网络安全方…

Java-面向对象编程(基础部分)

类和对象的区别和联系 类:类是封装对象的属性和行为的载体,在Java语言中对象的属性以成员变量的形式存在,而对象的方法以成员方法的形式存在。 对象:Java是面向对象的程序设计语言,对象是由类抽象出来的,…

使用 MobaXterm 远程连接 Linux 虚拟机并实现文件传输

文章目录 前言一、什么是 MobaXterm二 、MobaXterm 安装三、使用 MobaXterm 远程连接 Linux 虚拟机1. 准备工作2. 创建 SSH 连接3. 登录虚拟机 四、使用 MobaXterm 进行文件传输总结 前言 在日常开发和运维中,Windows 用户经常需要通过远程连接到 Linux 服务器进行…

链式栈讲解

文章目录 🍊自我介绍🍊链式栈入栈和出栈linkstack.hlinkstack.c 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好,我是小珑也要…

UBUNTU20.04安装CH384串口卡驱动

继续上文:统信UOS安装CH384串口卡驱动-CSDN博客 统信UOS系统成功安装CH384串口驱动后,继续在ubuntu20.04下安装驱动,发现一直报错,原因是内核驱动不一致。 解决办法: 1. 下载最新的驱动。CH35XCH384驱动源文件资源-C…

【WPF】02 按钮控件圆角配置及状态切换

按钮圆角 先从工具箱里拖进来一个Button控件&#xff0c;然后对这个按钮进行美化。 首先在 xaml 里按钮控件部分 添加如下代码&#xff1a; <Button x:Name"btnLogin" Content"登录" HorizontalAlignment"Center" Margin"0,399,0,0&q…

报错合计-1

向开发描述&#xff1a;先勾选一个病灶后复制&#xff0c;控制台报错 报错类型查询后为前端DOM节点相关报错&#xff0c;提给前端开发 报错解释&#xff1a; TypeError: Failed to execute selectNode on Range: parameter 1 is not of type Node 这个错误表明你尝试使用 Range…

【机器学习】:深潜智能的底层逻辑、前沿探索与未来展望】

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 在科技的浩瀚星空中&#xff0c;机器学习犹如一颗璀璨的新星&#xff0c;以其独特的魅力和无限潜力&#xff0c;引领着我们向智能的深处探索。今天&#xff0c;我们将一同踏上这场深度之旅&#xff0c;不仅解析…

AI时代,服务器厂商能否打破薄利的命运?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 AI大模型正在引发新一轮的“算力焦渴”。 近日&#xff0c;OpenAI刚发布的o1大模型再次刷新了大模型能力的上限。对比上一次迭代的版本&#xff0c;o1的推理能力全方位“吊打”了GPT-4o。更优秀的能力&#xff0c;来自与o1将思维…

Flink官方文档

Flink官方文档&#xff08;全面、详细&#xff09;&#xff1a;https://nightlies.apache.org/flink/flink-docs-master/zh/

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL24

边沿检测 有一个缓慢变化的1bit信号a&#xff0c;编写一个程序检测a信号的上升沿给出指示信号rise&#xff0c;当a信号出现下降沿时给出指示信号down。 注&#xff1a;rise,down应为单脉冲信号&#xff0c;在相应边沿出现时的下一个时钟为高&#xff0c;之后恢复到0&#xff0…

116页PPT麦肯锡方法详解-用简单的方法做复杂的事

读者朋友大家好&#xff0c;最近有会员朋友咨询晓雯&#xff0c;需要《116页PPT麦肯锡方法详解-用简单的方法做复杂的事》资料&#xff0c;欢迎大家文末扫码下载学习。 以下是在实际工作中应用麦肯锡问题解决法的具体方式&#xff1a; 一、项目管理与流程优化领域 界定问题 …

再看Java-笔试

放在前面的话 最近确实有些空闲&#xff0c;分配的功能从一开始的两眼一黑到现在的一上午就能完成&#xff0c;这何尝不是一种进步呢。 该说不说&#xff0c;海康的API问题相比较其他第三方的API还是蛮多的&#xff0c;而且10月份人工客服还会停运&#xff0c;不过到那个时候…

LeetCode54. 螺旋矩阵(2024秋季每日一题 21)

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输入&#xff1a;matrix [[1,…

由于安全风险,安全领导者考虑禁止人工智能编码

安全团队与开发团队之间的紧张关系 83% 的安全领导者表示&#xff0c;他们的开发人员目前使用人工智能来生成代码&#xff0c;57% 的人表示这已成为一种常见做法。 然而&#xff0c;72% 的人认为他们别无选择&#xff0c;只能允许开发人员使用人工智能来保持竞争力&#xff0…

【Unity】对象池 - 未更新完

自定义泛型对象池 文章目录 自定义泛型对象池封装泛型类例子 使用Unity自带对象池 封装泛型类 public abstract class MyPool<T> : MonoBehaviour where T :Component {[SerializeField] protected T prefab; // 生成的预制体[SerializeField] protected int defaultNum…

Delphi5利用DLL实现窗体的重用

文章目录 效果图参考利用DLL实现窗体的重用步骤1 设计出理想窗体步骤2 编写一个用户输出的函数或过程&#xff0c;在其中对窗体进行创建使它实例化步骤3 对工程文件进行相应的修改以适应DLL格式的需要步骤4 编译工程文件生成DLL文件步骤5 在需要该窗体的其他应用程序中重用该窗…

8.sklearn-模型保存

文章目录 环境配置&#xff08;必看&#xff09;头文件引用1.保存模型代码工程运行结果生成文件 2.加载模型代码工程运行结果 环境配置&#xff08;必看&#xff09; Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章&#xff0c;本专栏深度学习相关的版本和配置&…