我无法从文档中找到它,但目前似乎不支持 Master-Master 复制。这个对吗?
6 回答
那是对的。RDS 目前不支持 Master-Master 复制,因此如果您需要的话,横向扩展写入并不容易。然而,RDS 确实支持创建多个“只读”RDS 从属实例的能力,因此可以水平扩展以进行读取。
这是关于复制的 RDS 常见问题解答
可能这个链接会有所帮助。
发表于:2017 年 11 月 29 日
Amazon Aurora Multi-Master 允许您跨多个可用区创建多个读/写主实例。这使应用程序能够在集群中的多个数据库实例中读取和写入数据,就像您现在可以跨只读副本进行读取一样。
多主集群提高了 Aurora 的高可用性。如果您的一个主实例发生故障,集群中的其他实例将立即接管,通过实例故障甚至完全 AZ 故障保持读写可用性,应用程序停机时间为零。今天的单主 Aurora 在单个数据库集群中支持一个写入实例和最多 15 个可升级的只读副本。主写入器实例可以在 r4.16xlarge 上执行高达 200,000 次写入操作/秒。需要更高写入吞吐量的工作负载将受益于通过额外的主实例横向扩展其写入。Aurora MySQL 兼容版将提供预览版,您可以通过填写注册表单来参与。
Amazon Aurora 是一个完全托管的关系数据库,它结合了高端商业数据库的性能和可用性以及开源数据库的简单性和成本效益。
是的,可以在 RDS MySql 引擎中进行 Master-Master 复制。但它需要对实例进行一些操作。先决条件:1) 创建两个实例的只读副本以启用二进制日志记录。2) 如果不需要,删除它们的只读副本。3) 按照下面提到的主从设置说明进行操作。
在 Master1 上创建复制用户
grant replication slave on *.* to 'admin'@'%' identified by 'admin';
Query OK, 0 rows affected (0.00 sec)
注意以下命令的输出
显示主状态;+----------------+----------+---------- -----+------------------+--------------------------------+ | 文件 | 职位 | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------+----------+---------- -----+------------------+--------------------------------+ | mysql-bin-changelog.000007 | 120 | |
| | +----------------+----------+---------- -----+------------------+--------------------+ 1 行在集合中 ( 0.00 秒)
在 Master2 上
mysql> call mysql.rds_set_external_master('master1.endpoint.amazonaws.com',3306,'admin','admin','**mysql-bin-changelog.000007**',**120**,0);
Query OK, 0 rows affected (0.05 sec)
mysql> call mysql.rds_start_replication;
+-------------------------+
| Message |
+-------------------------+
| Slave running normally. |
+-------------------------+
1 row in set (1.01 sec)
mysql -u admin123 -padmin123 -h master2.endpoint.amazonaws.com -e "show slave status\G;" | grep Running
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
==================================================== =====================
在 Master2 上
grant replication slave on *.* to 'admin'@'%' identified by 'admin';
Query OK, 0 rows affected (0.00 sec)
show master status;
+----------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------------+----------+--------------+------------------+-------------------+
| **mysql-bin-changelog.000007** | **120** | | | |
+----------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
在 Master1 上
mysql> call mysql.rds_set_external_master('master2.endpoint.amazonaws.com',3306,'admin','admin','**mysql-bin-changelog.000007**',**120**,0);
Query OK, 0 rows affected (0.05 sec)
mysql> call mysql.rds_start_replication;
+-------------------------+
| Message |
+-------------------------+
| Slave running normally. |
+-------------------------+
1 row in set (1.01 sec)
mysql -u admin123 -padmin123 -h master1.endpoint.amazonaws.com -e "show slave status\G;" | grep Running
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
现在只是在研究它,但似乎他们现在支持 RDS 作为另一个 MySQL 实例的奴隶(http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_set_external_master.html)。使用前面提到的 read-slave 选项,主-主复制应该是可行的
截至 2017 年 11 月 29 日,Multi-Master 为 Amazon Aurora(MySQL 兼容数据库)提供预览版
我们使用 Aurora 作为 MySQL 5.7 Db 取得了不错的效果,所以我建议您看看。
自 2021 年起,多主服务器在 Aurora 中可用,但有一些限制*
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-multi-master.html