我们正在使用现有的单个mysql服务器创建一些从属服务器。我们了解my.cnf设置,用户创建等方面的所有信息。在主端和从端均如此。我们对从属服务器上的初始数据库创建更感兴趣。
现有服务器将是主服务器,新服务器将全部是从服务器。
我们想知道使用现有数据库创建新从站时的过程。
这是我们所做的,如果正确,请告知我们。
a)使脱机的现有单个mysqld(最终将成为主服务器)。
b)通过my.cnf,我们将端口从3306更改为随机端口。我们这样做是为了确保在启动服务器执行mysqldump时不会进行任何写操作。这样可以确保转储100%是最近的100%。
c)制作现有数据库的mysqldump。
d)mysqld再次脱机。
e)垃圾记录已清除。我们通过简单地删除它们来做到这一点。似乎没问题,因为在启动mysqld备份后,binlog出现了峰值,因此重新初始化为000001。
f)使用旧端口启动的现有mysqld服务器,因此我们在设置所有内容时可以备份我们的Web服务。
所以...如果我的想法是正确的,这时我们应该有:
mysqldump + binlogs = 100%当前数据库。
我问所有这一切的原因是因为这样做:
mysql DATABASE < dumpfile.sql
大约需要2个小时,可能还需要2个小时。
我们将为奴隶提供3-4小时的二进制日志来“追赶”我们的主要问题吗?
谢谢你。
您不必使mysqld脱机或更改端口。您可以使用FLUSH TABLES WITH READ LOCK
来确保在注明二进制日志位置和创建转储时不会发生任何写操作。
恢复转储通常需要很长时间,可能比创建转储所花费的时间要长得多。如果您的主服务器记录了很高的新更改率,那么可以,一旦完成对副本的还原并开始复制,副本可能需要一段时间才能赶上。
如果可以接受的话,如果可以关闭mysqld,可以使用的替代方法是将物理数据目录从主数据库复制到副本数据库,而不是执行转储和还原。因此,初始化副本的速度非常快,基本上只要运行rsync
即可将文件从一台服务器复制到另一台服务器。
注意:您必须
在执行此操作时,请在主数据库和副本数据库上关闭mysqld,否则可能会导致某些数据被缓冲并且不会包含在文件副本中。在副本上启动mysqld之前,请记住检查副本上的文件所有权和权限。您应该阅读手册中的这些部分以获取更多详细信息: