我有一个现有的 MySQL 数据库,master1 <-> master2 -> slave
并且我想在 master2 上添加另一个从属数据库。如果我FLUSH TABLES WITH READ LOCK;
在 master2 上发出转储数据库所需的命令,这会以任何方式影响 master1 吗?在转储完成并UNLOCK TABLES;
发出之前,它如何影响 master2?
我有一个现有的 MySQL 数据库,master1 <-> master2 -> slave
并且我想在 master2 上添加另一个从属数据库。如果我FLUSH TABLES WITH READ LOCK;
在 master2 上发出转储数据库所需的命令,这会以任何方式影响 master1 吗?在转储完成并UNLOCK TABLES;
发出之前,它如何影响 master2?
对于非 GTID 复制,我会执行以下操作:
my.cnf
,但更改server_id
(所有服务器必须具有不同的编号)。(我还没有尝试过基于 GTID 的复制。)
复制磁盘比大多数其他技术更快。
不要考虑主-主,请考虑 Galera 或 InnoDB 集群。
不会,实例 master2 上的锁定不会影响 master1 上的查询。
但是,您还应该考虑不创建锁的解决方案。
您可以使用它
mysqldump --single-transaction
来获取一致的数据导出而无需锁定,前提是您的表是 InnoDB(它们应该是)。我还可以推荐 Percona XtraBackup 作为 MySQL 的专业数据库备份工具。我们在上一份工作中每天都使用它来创建副本。它速度更快,并且在创建备份时不会锁定源。
使用备份来初始化副本要快得多,因为它不需要像 mysqldump 备份那样运行导入。您可能想在这里阅读指南:https://docs.percona.com/percona-xtrabackup/8.0/set-up-replication.html