MySQL 双主复制的优缺点与实现方法

yumo6665个月前 (05-09)技术文章66

MySQL 双主复制是一种高可用性解决方案,它可以在两台主库之间同步数据,这样就有了两个可以进行写操作的数据库。

MySQL 双主复制的优点:

可用性提高:双主复制能够保证在一台主机故障时另一台主机可以立即接管工作,提高了系统的可用性。
负载均衡:双主复制可以将读请求分散到两台主机上,从而提高系统的读性能。
数据安全性:双主复制能够保证数据在两台主机上同步,从而提高数据的安全性。

MySQL 双主复制的缺点:

复杂性增加:双主复制相对于单主复制来说更加复杂,需要额外的配置和维护。
性能影响:双主复制需要在两台主机之间进行数据同步,这会对系统的写性能产生影响。
冲突处理:双主复制需要解决处理两台主机之间的写冲突问题, 当双主都写入了同一条数据时, 需要人工干预或者采用特定策略解决。

前提条件

下面是实现 MySQL 双主复制的步骤:

在两台服务器上分别安装 MySQL,并配置好网络环境。确保两台服务器能互相通信。

在两台服务器上都创建复制帐号,允许对方连接。在两台服务器上分别执行以下命令:

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';

在主库1上执行 FLUSH TABLES WITH READ LOCK 命令,锁定数据库。这将阻止在备份期间进行任何数据修改。

FLUSH TABLES WITH READ LOCK;

在主库1上执行 SHOW MASTER STATUS 命令,记录下当前的 binlog 文件名和位置。用于在主库2上配置复制。

SHOW MASTER STATUS;

在主库2上执行 CHANGE MASTER TO 命令,将主库1的信息配置到主库2上。

CHANGE MASTER TO MASTER_HOST='host1',MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=123;

在主库2上执行 START SLAVE 命令,启动主库2的复制进程。

START SLAVE;

在主库1上执行 UNLOCK TABLES 命令,解锁数据库。

UNLOCK TABLES;

在主库2上执行 FLUSH TABLES WITH READ LOCK 命令,锁定数据库。


FLUSH TABLES WITH READ LOCK;

在主库2上执行 SHOW MASTER STATUS 命令,记录下当前的 binlog 文件名和位置。

SHOW MASTER STATUS;

在主库1上执行 CHANGE MASTER TO 命令,将主库2的信息配置到主库1上。


CHANGE MASTER TO MASTER_HOST='host2',MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=456;

在主库1上执行 START SLAVE 命令,启动主库1的复制进程。



START SLAVE;

在主库2上执行 UNLOCK TABLES 命令,解锁数据库。

UNLOCK TABLES;

使用 SHOW SLAVE STATUS 命令查看两台主库的复制状态。

SHOW SLAVE STATUS;

配置两台主库的监控,比如使用 Nagios/Zabbix 监控主库状态,在主库出现故障时自动切换到另一台主库。

注意,在双主复制中,两台主库都可以进行读写操作,所以需要注意冲突的问题。

另外,这些步骤中的很多细节都需要根据实际环境进行调整。双主复制需要两台MySQL都是5.7版本或更高版本,且需要打开gtid模式。

相关文章

oracle和mysql的优缺点对比(oracle对比mysql优势)

oracle的优缺点优点:开放性:oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持;可伸缩性,并行性:Oracle...

全程软件测试(六十八):数据库MySQL从零开始入门—读书笔记

第一章 数据库概述1.1、数据库的好处将数据持久化到本地提供结构化查询功能1.2、数据库的常见概念DB:数据库,存储数据的仓库DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理数...

「职场面试」数据库常见面试题 (二)-MySQL分库分表

上期我们讲了索引,MyISAM和InnoDB的选择等相关的数据库面试题目,小伙伴们掌握得怎么样了?这期树懒君决定分享一下分库分表方面的面试题目,这是一个很经典的面试问题哦~首先,要知道分库分表是两回事...

MySQL学到什么程度?才有可以在简历上写精通

前言如今互联网行业用的最多就是 MySQL,然而对于高级 Web 面试者,尤其对于寻找 30k 下工作的求职者,很多 MySQL 相关知识点基本都会涉及,如果面试中,你的相关知识答的模糊和不切要点,基...

MySQL调优(mysql怎么优化)

来源:https://www.cnblogs.com/monkey-xuan/p/15858689.html调优的目的?让吞吐量更大,响应速度更快。关于数据库优化,我们从以下5个维度进行。一.优化表结...