我发现我需要在具有 4000 多个数据库的 MySQL 服务器和它的第一个从属服务器之间建立主从复制。
数据库目前正在处理生产工作负载,并且必须在不导致停机的情况下启动复制。
是否有任何工具或久经考验的程序可以做到这一点?(以最少的锁定转储所有数据并完全准确地保存主 binlog 位置?)
到目前为止,我一直在思考的是在保存 binlog 位置的同时逐个转储数据库,将数据加载到从属服务器然后使用 replicate-do-db 启动从属服务器并加载迄今为止的所有数据库,一旦从属服务器赶上就停止复制,冲洗并重复...但我不能 100%确定这是最好的方法。
谢谢你,Rares
后来编辑:表主要是 MyISAM,但也有少数 InnoDB。
答案1
您的 MySQL 数据库是纯 InnoDB 还是也包含 MyISAM?如果是 InnoDB,您可以使用带有选项“--single-transaction --master-data”的 mysqldump 为您的复制从属服务器获取可靠的转储。
如果您不幸拥有 MyISAM,为了获得可靠的转储,它必须锁定服务器上的所有事务,直到整个备份完成为止..并且该时间取决于数据库大小(以 GB 为单位)和总行数的组合。