使用不同的配置镜像 MySQL 服务器

使用不同的配置镜像 MySQL 服务器

我必须将 MySQL 服务器迁移到不同的数据中心,因此我想在新的 DC 中创建另一个 MySQL 从属服务器,然后稍后将其提升为主服务器。我以前为此使用了 LVM 快照和 Percona XtraBackup。但是,这次我优化了 MySQL 配置文件,使我无法使用这些方法。

Old server (backup):

innodb_log_file_size = 256M
innodb_log_files_in_group = 3

New server (restore):

innodb_log_file_size = 512M
innodb_log_files_in_group = 2

XtraBackup 脚本和 LVM 快照复制整个目录结构,因此 MySQL 服务器无法启动,因为 InnoDB 日志的大小不同。

在这种情况下,有什么解决方案可以避免停机吗?我不能使用 mysqldumps,因为大约有 8000 个数据库。在这种情况下,我不得不让服务器停机几个小时。

我也想过将旧设置与 XtraBackup 一起使用,然后在新服务器提升为主服务器后更改它 - 减少停机时间,但我不确定这是否可行?

谢谢

问候

答案1

“大约有 8000 个数据库,所以我必须让服务器停机几个小时。”

是否已经有另一台从属服务器可以从生产中取出并用作临时主服务器?

mysqldump 的问题在于性能下降还是锁定(在后一种情况下,--single-transaction --master-data 可能是可行的。顺便说一句,永远不要依赖 --triggers 或 --routines 作为默认值!)

答案2

我认为后一种建议听起来最好,您说的总体规模是多少?

制作一个 innobackupex FULL 转储并将其传输到新的数据中心,然后使用 xtrabackup 转储但使用旧的 innodb 设置启动新服务器,这似乎相当简单。

一旦以只读模式运行,您就可以 mysqldump 它,以提供可以在任何地方导入的 SQL 文件。

然后,您可以使用新的 innodb 设置将转储文件重新加载到新的 mysql 实例中。

答案3

我会从 LVM 快照和原始设置开始。启动新服务器。关闭它。检查它是否干净地退出。将日志文件移开,进行配置更改,然后重新启动。Mysql 应该会创建新的,然后您就一切就绪了。

更深入的解释这里。

您可能还会阅读如何计算合适的 Innodb 日志文件大小/

相关内容