基本上我们有一个大的MySQL数据库,我们正在寻找复制到一个奴隶(主从设置)。 你们有没有关于如何在数据库上使用MINIMAL停机时间的分步指南? 备份数据库并将备份传输到从属服务器(甚至通过专用networking)需要40分钟左右的时间。 相当长的停机时间。
我假设你使用InnoDB作为存储引擎。 如果是这样,你需要打开bin-logging 。 如果现在不在,则需要在修改my.cnf后重新启动MySQL。 这是唯一的宕机时间,之后你可以把数据库转储到binlog位置而不会阻塞数据库:
mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A
基于此备份,恢复从站上的数据。 在这之后,你可以按照任何MySQL复制教程 ,让奴隶赶上/与主人一起运行。
要启动复制,您需要在从属设备上保存一致的数据库副本
你的桌子是myisam还是innodb? 找出问题
show table status
并看看“引擎”列
如果所有的表都比你可以使用mysqldump进行零宕机设置–single-transaction并将其导入到slave
如果表是myisam,则必须停机,因为在复制表时必须locking写入表。 mysqlhotcopy是帮助你的工具。
或者,如果您正在使用LVM(逻辑卷pipe理器),则可以停止数据库,在几秒钟内获取LVM快照并再次启动数据库。 然后,您可以从快照中创build一致的副本。
为了设置从站,您需要获取数据快照并logging二进制日志的位置。 备份数据库不应该导致停机,虽然它会导致性能降低,但是你已经备份了数据库吗? 您可能会发现备份需要locking一些表,这可能会导致您的应用程序locking,真的需要看看它是如何实现的。
你可以快照磁盘? 如果你能做一个hotbackup,这将大大减less停机时间。