欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > MySQL 8.0 与 8.4 主主同步

MySQL 8.0 与 8.4 主主同步

2024/12/24 11:36:45 来源:https://blog.csdn.net/weixin_44316575/article/details/142363552  浏览:    关键词:MySQL 8.0 与 8.4 主主同步
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 TOMASTER_HOST='主节点2的IP',MASTER_USER='replicator',MASTER_PASSWORD='password',MASTER_LOG_FILE='记录的File',MASTER_LOG_POS=记录的Position;-- 启动复制
START SLAVE;
  • 配置主节点 2 连接主节点 1
CHANGE MASTER TOMASTER_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 TOSOURCE_HOST='主节点2的IP',SOURCE_USER='replicator',SOURCE_PASSWORD='password',SOURCE_LOG_FILE='记录的File',SOURCE_LOG_POS=记录的Position;-- 启动复制
START REPLICA;
  • 配置主节点 2 连接主节点 1
CHANGE REPLICATION SOURCE TOSOURCE_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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com