场景:我想将MySQL表从一个数据库复制到另一个数据库。
可能的最佳解决方案:可能是使用MySQL复制功能。 关于我正在解决的问题(mysqldump)的当前解决方案因为无法花时间在当前截止日期前了解复制。
所以目前我正在使用这样的命令:
mysqldump -u user1 -ppassword1 --single-transaction SourceDb TblName | mysql -u user2 -ppassword2 DestinationDB
根据一些测试,似乎工作正常。 在命令运行时,我在目标站点上运行带有1000个请求的 ab 命令,并尝试从浏览器访问该站点。
我关注的是我们使用整个表格导入数据的目标实时网站(将在内部删除现有表格并使用新数据创建新表格。)
我可以确定在此过程中现场网站是否会中断或是否有任何风险因素? 如果是,那么可以解决吗?
答案 0 :(得分:0)
因此你已经承认复制是最好的解决方案,我同意。
你说你在"目的地"上有1000个请求侧?这些1000个到目的地的连接是只读的吗? 对于活动连接来说,丢弃和重新创建表格并不是正确的选择。
可以建议一个改进。而不是直接加载到表,加载到不同的数据库和交换表。就目标数据库/表的连接而言,这应该更快。
mysqldump -u user1 -ppassword1 --single-transaction -hSOURCE_HOST SourceDb TblName | mysql -uuser2 -ppassword2 -hDESTINATION_HOST DB_New
(你确定你没有" -h"在这里?)
rename table DB.TblName to DB.old_TblName, DB_New.new_TblName to DestinationDB.TblName;
如果你在同一台主机上(我不这么认为),你可能想要使用pt-online-schema-change和swap tables!