欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > MySQL 8主从复制配置最佳实践

MySQL 8主从复制配置最佳实践

2025/3/28 7:23:15 来源:https://blog.csdn.net/qiuyufeng/article/details/146352886  浏览:    关键词:MySQL 8主从复制配置最佳实践

1. 引言

1.1 主从复制的意义与应用场景

主从复制是MySQL中用于提高数据冗余性和可用性的技术。通过将主库的数据复制到一个或多个从库,可以在主库故障时快速切换到从库,保证服务的连续性。此外,主从复制还可以用于负载均衡,将读操作分发到从库,减轻主库的压力。

1.2 MySQL 8主从复制的新特性概述

MySQL 8引入了多项改进,包括:

  • GTID(全局事务标识符):简化复制配置和管理。
  • 半同步复制:提高数据一致性。
  • 多源复制:允许一个从库从多个主库复制数据。

2. 主从复制基础

2.1 主从复制的工作原理

2.1.1 二进制日志(Binary Log)

主库将所有对数据库的更改记录在二进制日志中。从库通过读取这些日志来应用相同的更改。

2.1.2 I/O线程与SQL线程

  • I/O线程:从主库读取二进制日志并保存到本地中继日志。
  • SQL线程:从本地中继日志读取SQL语句并执行。

2.2 常见复制模式

2.2.1 异步复制

从库异步地应用主库的日志,延迟较高,但性能较好。

2.2.2 半同步复制

至少一个从库确认收到并执行了事务后,主库才提交事务,提高了数据一致性。

2.2.3 多源复制

一个从库可以从多个主库复制数据,适用于复杂的复制拓扑。

3. 环境准备

3.1 检查MySQL版本与系统环境

确保所有节点运行MySQL 8版本,并且网络连接正常。

3.2 配置主库与从库的网络连接

确保主库和从库之间可以互相通信。

3.3 创建用于复制的专用用户

在主库上创建一个用于复制的用户,并赋予相应的权限。

-- 主库上执行
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

4. 主从复制配置步骤

4.1 主库配置

4.1.1 修改my.cnf文件

在主库的my.cnf文件中添加以下配置:

[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=ROW

4.1.2 启用二进制日志

重启MySQL服务以应用配置更改。

sudo systemctl restart mysql

4.1.3 设置唯一server-id

确保每个MySQL实例都有唯一的server-id

4.2 从库配置

4.2.1 修改my.cnf文件

在从库的my.cnf文件中添加以下配置:

[mysqld]
server-id=2
relay_log=mysql-relay-bin
log_slave_updates=1
read_only=1

4.2.2 设置唯一server-id

确保每个MySQL实例都有唯一的server-id

4.2.3 配置主库信息

在从库上配置主库信息。

-- 从库上执行
CHANGE MASTER TOMASTER_HOST='master_host_ip',MASTER_USER='replicator',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

4.3 数据初始化

4.3.1 使用mysqldump备份主库数据

在主库上使用mysqldump备份数据。

mysqldump --all-databases --master-data=1 --single-transaction --routines --triggers --events > backup.sql

4.3.2 导入数据到从库

将备份文件传输到从库并导入数据。

mysql < backup.sql

5. 启动与验证

5.1 启动主从复制

5.1.1 在从库上启动复制线程

在从库上启动复制线程。

-- 从库上执行
START SLAVE;

5.1.2 查看复制状态

检查复制状态以确保一切正常。

-- 从库上执行
SHOW SLAVE STATUS\G

5.2 验证复制功能

5.2.1 测试数据同步

在主库上创建一个测试表并插入数据,检查从库是否同步。

-- 主库上执行
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table (id, name) VALUES (1, 'Alice');

在从库上查询数据:

-- 从库上执行
USE testdb;
SELECT * FROM test_table;

5.2.2 检查延迟情况

检查主从复制的延迟情况。

-- 从库上执行
SHOW SLAVE STATUS\G

6. 故障排查与优化

6.1 常见问题及解决方法

6.1.1 复制中断的原因分析

  • 网络问题:检查网络连接是否正常。
  • 日志文件或位置错误:确保CHANGE MASTER TO语句中的日志文件和位置正确。
  • 权限问题:确保复制用户有足够的权限。

6.1.2 数据不一致的处理

  • 手动修复:使用pt-table-checksumpt-table-sync工具检查和修复数据不一致。
  • 重新初始化:如果数据不一致严重,可以重新初始化从库。

6.2 性能优化策略

6.2.1 调整二进制日志大小

适当调整二进制日志文件的大小,避免频繁切换日志文件。

[mysqld]
max_binlog_size=100M

6.2.2 启用并行复制

启用并行复制可以提高复制性能。

[mysqld]
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=4

6.2.3 减少不必要的锁操作

优化SQL语句,减少锁的使用,提高复制效率。

7. 高级功能

7.1 半同步复制配置

启用半同步复制可以提高数据一致性。

7.1.1 在主库上安装插件

-- 主库上执行
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;

7.1.2 在从库上安装插件

-- 从库上执行
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled = 1;

7.2 多源复制实现

一个从库可以从多个主库复制数据。

7.2.1 配置多个主库

-- 从库上执行
CHANGE MASTER TOMASTER_HOST='master_host_ip_1',MASTER_USER='replicator',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154
FOR CHANNEL 'channel1';CHANGE MASTER TOMASTER_HOST='master_host_ip_2',MASTER_USER='replicator',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154
FOR CHANNEL 'channel2';

7.2.2 启动多个复制线程

-- 从库上执行
START SLAVE FOR CHANNEL 'channel1';
START SLAVE FOR CHANNEL 'channel2';

7.3 GTID复制的应用

使用GTID可以简化复制配置和管理。

7.3.1 在主库上启用GTID

[mysqld]
gtid_mode=ON
enforce_gtid_consistency=ON

7.3.2 在从库上启用GTID

[mysqld]
gtid_mode=ON
enforce_gtid_consistency=ON

7.3.3 配置主库信息

-- 从库上执行
CHANGE MASTER TOMASTER_HOST='master_host_ip',MASTER_USER='replicator',MASTER_PASSWORD='password',MASTER_AUTO_POSITION=1;

8. 最佳实践总结

8.1 配置过程中的注意事项

  • 备份数据:在配置复制前,确保所有数据已备份。
  • 网络稳定性:确保主库和从库之间的网络连接稳定。
  • 权限管理:确保复制用户有足够的权限。

8.2 日常运维建议

  • 监控复制状态:定期检查复制状态,确保复制正常。
  • 日志管理:定期清理二进制日志,避免磁盘空间不足。
  • 性能监控:监控复制性能,及时调整配置。

8.3 安全性与备份策略

  • 数据加密:使用SSL加密主从复制的数据传输。
  • 定期备份:定期备份主库和从库的数据,防止数据丢失。

版权声明:

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

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

热搜词