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

Linux CentOS 环境 MySQL 主从复制集群搭建

环境说明
MySQL版本8.4.0
操作系统 Linux CentOS 7.9
官网文档
https://dev.mysql.com/doc/refman/8.4/en/replication-configuration.html

以下代码片段中带分号都是在MySQL命令行( mysql -uroot -p)中执行

1. 首先在两个节点上安装数据库

参考 Linux CentOS安装MySQL8.0

节点IP
主库=复制源192.168.133.181
从库=副本192.168.133.182

2. 修改主库配置文件

设置日志文件名称和服务器ID,以及需要复制的数据库

vim /etc/my.cnf

[mysqld]下增加如下配置

#服务器ID
server-id=1
#打开主库binlog日志,并设置文件名前缀
log-bin=mysql-bin

关于log-bin是否要设置可以通过

show variables like 'log_bin%'; 

查询,MySQL8是默认开启的,MySQL5.7及以下版本默认未开启。当然如果是MySQL8版本你也可以重新指定bin-log文件名称。

在这里插入图片描述
修改完成后重启服务

systemctl restart mysqld

3. 主库创建同步账号

-- 创建用户 replica
CREATE USER 'replica'@'%' IDENTIFIED BY '12345678';
-- 授权
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

在这里插入图片描述

4. 主库获取 bin log 坐标

要配置副本(从库)在正确的点开始复制过程,需要在 bin log 中记下复制源(主库)的当前坐标

如果主库已经有数据

通过命令行客户端连接到主库,并通过执行以下

FLUSH TABLES WITH READ LOCK;

语句刷新所有表并阻止数据写入,如果退出该客户端,锁定将被释放。

使用下面语句查看bin log日志文件名称和坐标位置

8.4.0及以后版本

SHOW BINARY LOG STATUS;

8.4.0以前版本

SHOW MASTER STATUS;

在这里插入图片描述
MySQL8.4.0版本,已将SHOW MASTER STATUS废弃,改为SHOW BINARY LOG STATUS
https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-0.html#mysqld-8-4-0-configuration
在这里插入图片描述

5. 同步数据

如果主库已经有数据,可以使用mysqldump工具将数据复制到从库,保证两边数据一致。

6.配置从库

vim /etc/my.cnf

[mysqld]下增加如下配置

#服务器ID
server-id=2

修改完成后重启服务

systemctl restart mysqld

7.在从库上配置主库连接信息

8.0.23及以后版本

 CHANGE REPLICATION SOURCE TOSOURCE_HOST='192.168.133.181',SOURCE_PORT=3306,SOURCE_USER='replica',SOURCE_PASSWORD='12345678',SOURCE_LOG_FILE='mysql-bin.000001',SOURCE_LOG_POS=668;

SOURCE_LOG_FILESOURCE_LOG_POS 参考步骤4中查询出来的结果
其他参数就不做过多解释了,看字面意思,可以自行查阅官网。

8.0.23以前版本

  CHANGE MASTER TOMASTER_HOST='192.168.133.181',MASTER_PORT=3306,MASTER_USER='replica',MASTER_PASSWORD='12345678',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=668;

关于语句变更说明
在这里插入图片描述

8.在从库开启复制

新版本(8.0.22及以后)

START REPLICA;

旧版本(8.0.22以前)

START SLAVE;

查看从库复制情况

新版本(8.0.22及以后)

SHOW REPLICA STATUS\G;

旧版本(8.0.22以前)

SHOW SLAVE STATUS\G;

在这里插入图片描述
可以在主库新建数据库测试从库中是否同步。

如果上面状态有报错或复制失败 可能是数据不一致的原因
在从库上
先停止复制

STOP REPLICA;

然后重置复制,它将清除复制元数据存储库,删除所有中继日志文件,并启动新的中继日志文件。

RESET REPLICA;

最后重启复制

START REPLICA;

相关文章:

  • 电信NR零流量小区处理
  • java 操作 milvus 2.1.4
  • 税务笔记()
  • 性能调优 性能监控
  • Hadoop3:Yarn框架的三种调度算法
  • SUPERVIVE无法联机、联机失败、联机报错的解决办法分享
  • AI与音乐:终极对决,机械混音师将扬弃人类知识!
  • Webpack: 开发 PWA、Node、Electron 应用
  • C语言笔记27 •单链表介绍•
  • Yolov8可视化界面使用说明,含代码
  • FastAPI 基本路由
  • 新能源行业知识体系-------主目录-----持续更新
  • Java校园跑腿小程序校园代买帮忙外卖源码社区外卖源码
  • C语言的数据结构:图的操作
  • 不要再被骗了!电脑无法进入系统的原因可能是这个硬件坏了而已……
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 2017前端实习生面试总结
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • IDEA 插件开发入门教程
  • iOS | NSProxy
  • Java 23种设计模式 之单例模式 7种实现方式
  • js对象的深浅拷贝
  • ReactNativeweexDeviceOne对比
  • springMvc学习笔记(2)
  • vue-loader 源码解析系列之 selector
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 将 Measurements 和 Units 应用到物理学
  • 十年未变!安全,谁之责?(下)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • Mac 上flink的安装与启动
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​虚拟化系列介绍(十)
  • #1014 : Trie树
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (2)Java 简介
  • (day6) 319. 灯泡开关
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (南京观海微电子)——I3C协议介绍
  • (三)mysql_MYSQL(三)
  • (数据结构)顺序表的定义
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)我也是一只IT小小鸟
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net FrameWork简介,数组,枚举
  • .Net Winform开发笔记(一)
  • .Net8 Blazor 尝鲜
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [Android Pro] AndroidX重构和映射
  • [ARM]ldr 和 adr 伪指令的区别
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [bzoj4240] 有趣的家庭菜园