【问题标题】:Creating a new slave using existing master - What does the initial db creation procedure look like? [closed]使用现有主服务器创建新的从服务器 - 初始数据库创建过程是什么样的? [关闭]
【发布时间】:2012-01-29 15:58:01
【问题描述】:

我们正在使用现有的单个 mysql 服务器创建一些从属服务器。我们对 my.cnf 设置、用户创建等都了如指掌。无论是在主设备端还是从设备端。我们对从服务器上的初始数据库创建更感兴趣。

现有的服务器将是主服务器,新服务器将都是从服务器。

我们想知道使用现有数据库创建新从属设备时的过程。

这是我们所做的,如果正确,请告诉我们。

a) 现有的单个 mysqld 脱机(最终将成为主服务器)。

b) 通过 my.cnf,我们将端口从 3306 更改为随机端口。我们这样做是为了确保当我们启动服务器来执行 mysqldump 时,不会进行任何写入。这将确保 100% 转储是最近的。

c) 现有数据库的 mysqldump。

d) mysqld 再次脱机。

e) 已清除二进制日志。我们通过简单地删除它们来做到这一点。这似乎没问题,因为在启动 mysqld 备份后在 binlog 中有一个峰值,所以在 000001 处重新初始化。

f) 现有的 mysqld 服务器使用旧端口启动,因此我们的 web 服务可以在我们设置所有内容时备份。


所以...如果我的想法是正确的,此时我们应该:

mysqldump + binlogs = 100% 当前数据库。


我问这一切的原因是因为做一个:

mysql DATABASE < dumpfile.sql

大约需要 2 小时,可能还有 2 小时。

slave '赶上' 3-4 小时的 binlog 会有什么大问题吗?

谢谢。

【问题讨论】:

  • 属于 dba.stackexchange.com

标签: mysql synchronization replication mysqldump


【解决方案1】:

您不必使 mysqld 脱机或更改端口。您可以使用FLUSH TABLES WITH READ LOCK 来确保在记录二进制日志位置和创建转储时不会发生写入。

恢复转储通常需要很长时间,可能比创建转储所需的时间要长得多。如果您的主服务器记录了非常高的新更改率,那么是的,一旦您完成对副本的还原并开始复制,副本可能需要一段时间才能赶上。

如果可以接受关闭 mysqld,您可以使用的替代方法是将物理数据目录从主副本复制到副本,而不是进行转储和恢复。所以初始化副本可以非常快,基本上只要运行rsync 将文件从一台服务器复制到另一台服务器。

注意:您必须在执行此操作时关闭主服务器和副本服务器上的 mysqld,否则您有一些数据被缓冲并且不会包含在文件副本中的风险。记得在副本上启动 mysqld 之前检查副本上的文件所有权和权限。

您应该阅读手册中的这些部分以了解更多详细信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-21
    • 2014-12-21
    • 2012-07-04
    • 2020-04-22
    • 1970-01-01
    • 2020-12-15
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多