如何在不停止主服务器的情况下创建 MySQL 服务器的从属副本?

dav*_*ton 3 mysql replication

为了保证slave和master上的数据在同一个地方进行复制,在重新启动master之前应该停止新的master并将数据转移到新的slave上,至少这是一种选择。

如何在不停止主服务器的情况下启动 MySQL 服务器的复制?

pQd*_*pQd 6

简单的选择 - 如果您使用少量数据

mysqldump --master-data -uyouruser -p.... -a > dump.sql
Run Code Online (Sandbox Code Playgroud)

这将锁定所有表并生成有关当前主位置信息的转储。dump 将锁定所有表 - 当您有繁忙的网站和 20GB 的数据要转储时,这可能不是您想要做的事情。

更高级的选项。将您的数据放在 lvm 分区上并使用 lvm 快照。即在一个进程中锁定所有表 FLUSH TABLES WITH READ LOCK; 显示主状态;在另一个过程中运行同步几次以获得良好的测量并创建数据/innodb 日志的 lvm 快照。在创建快照后 [ 对我来说需要 2-3 秒 ] 解锁所有表。

现在您拥有一致的快照并且您的 sql server 仍在运行。安装快照并尽快将其“发送”到另一台服务器。在此数据上运行 mysql,让 innodb 从它的日志中恢复所有数据并运行 mysqldump,将输出放入从属设备。

使用来自 SHOW MASTER STATUS 的信息启动从属设备,该信息是在获取 LVM 快照之前运行的。

mylvmbackup正是这样做的。在这里阅读。