从另一个从站创建一个 MySQL 从站,但将其指向主站

Ale*_*rey 9 mysql replication backup-restoration

问题

我在 2 个服务器之间设置了 MySQL 复制,master ( A ) 和 slave ( B )。我需要在混合中添加一个新的奴隶 ( C )。我希望这个从站直接从主站获取更新,我不想从从站进行链式复制。但是,master 是“热”的,我通常使用 Xtrabackup 来创建 master 的完整备份,但这会锁定它 10 分钟,因为数据库大小约为 20GB。

可能的解决方案

WITH READ LOCK FLUSH TABLES上从上使用SHOW SLAVE STATUS,写下二进制日志和位置。然后用 Xtrabackup 备份数据库,将备份传送到C并使用它来创建从属,并将复制设置为指向A并使用我刚刚写下的 binlog 位置。

有没有更好的方法不需要我锁定B这么长时间?或者更容易自动化的东西?

Rol*_*DBA 22

嘿我知道一个疯狂的方法来创建一个从站而不增加主站(服务器 A)或从站(服务器 B)的任何操作

步骤 1) 设置新服务器 (ServerC)

步骤2)在ServerC上,安装MySQL(与ServerB版本相同)

步骤 3) 在 ServerC 上,服务 mysql 停止

步骤 4) 将 /etc/my.cnf 从 ServerB 复制到 ServerC

步骤 5) 在 ServerC 上,将 server_id 更改为与 ServerA 和 ServerB 不同的值

步骤 6)将 ServerB 上的 rsync /var/lib/mysql rsync /var/lib/mysql 到 ServerC

步骤 7) 当 rsync 完成后,运行“STOP SLAVE;” 服务器B上

步骤 8) 将 ServerB 上的 /var/lib/mysql rsync /var/lib/mysql 到 ServerC

步骤 9) 在 ServerB 上,运行“START SLAVE;”

步骤10)在ServerC上,服务mysql启动

步骤 11) 在 ServerC 上,运行“START SLAVE;” (如果skip-slave-start 在/etc/my.cnf 中,请执行此操作)

试一试 !!!

顺便说一句,我非常有信心这会奏效,因为我在过去 2 天内刚刚为客户做过这件事。客户端在从站上有 2.7TB 的数据。我 rsyncd 到另一台服务器,而从站仍处于活动状态。rsync 花了大约 11 个小时。然后我跑了STOP SLAVE;在第一个从站上并再次运行 rsync。那又花了一个小时。然后我执行了上面的步骤,一切都完成了。

  • 我知道这是一个相当老的帖子,但有人问我这个方法。假设新从站和旧从站完全相同,这工作正常。如果新奴隶是不同的拱门,它将无法工作(iirc)。而且我几乎可以肯定,如果您使用每个文件的 innodb 表空间,它将无法工作。如果有任何疑问,最安全的解决方案是从主服务器进行完整备份。 (2认同)