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

news/2024/7/6 22:18:42

环境说明
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;

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

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

相关文章

Python | Leetcode Python题解之第204题计数质数

题目: 题解: MX5000000 is_prime [1] * MX is_prime[0]is_prime[1]0 for i in range(2, MX):if is_prime[i]:for j in range(i * i, MX, i):#循环每次增加iis_prime[j] 0 class Solution:def countPrimes(self, n: int) -> int:return sum(is_prim…

C++11

目录 1.可变参数模板 1.1概念 1.2参数包的展开 2.stl的emplace接口 3.lambda表达式 lambda表达式形式 demo代码 4.function包装器 5.bind包装器 1.可变参数模板 1.1概念 有了可变参数模板&#xff0c;可以创建任意参数的函数模板和类模板。 template <class ...A…

【刷题】初步认识深搜(DFS)

送给大家一句话&#xff1a; 拥有希望的人&#xff0c;和漫天的星星一样&#xff0c;是永远不会孤独的。 -- 《星游记》 初步认识深搜&#xff08;DFS&#xff09; dfs算法二叉树中的深搜Leetcode 129. 求根节点到叶节点数字之和题目描述算法思路 Leetcode 814. 二叉树剪枝题…

【Mac】iTerm for mac(终端工具)软件介绍及安装教程

软件介绍 iTerm 是 macOS 上一个非常受欢迎的终端仿真器&#xff0c;提供了比默认的 Terminal 应用更多的功能和定制选项。它是一款开源软件&#xff0c;主要用于命令行界面的操作和开发者工具。 主要特点和功能&#xff1a; 分页和标签&#xff1a; iTerm 允许用户在单个窗…

show-overflow-tooltip 解决elementui el-table标签自动换行的问题

elementui中 el-table中某一行的高度不想因为宽度不够而撑开换行展示的解决方法。可通过show-overflow-tooltip属性解决&#xff0c;如下 代码是这样的 <el-table-column width"80" prop"id" label"ID"></el-table-column> <el…

Python 挖坑式填充Excel模板内容(包括页眉/SheetName/logo)

纵览 Python处理Excel的方式--解压缩方式1、导包2、对模板文件进行解压缩3、对解压缩后文件层级进行介绍4、准备需要载入的数据5、模板挖坑6、运行替换代码7、压缩文件8、生成文件9、完成代码10、可能遇到的问题 结语 Python处理Excel的方式–解压缩方式 在处理Excel中过程中&…