0

我有一个 MySQL 数据库,其中包含"shard_0""shard_1" "shard_2"、 等形式的表。

这些是虚拟分片。现在我想添加另一个数据库服务器并将偶数分片("shard_0", "shard_2", "shard_4", ...)移动到新机器上。

最好的方法是什么?有很多表,所以理想情况下我不必单独输入每个表名,而是自动执行某些操作。也许是这样的:

# pseudo code    
for i in range(n):
    tablename = "shard_"+str(2*i)
    # Move tablename to new machine

谢谢

4

2 回答 2

2

我会创建一个(或者可能是多个)mysqldump 调用,就像这样

print "mysqldump database",
for i in range(n):
    print "shard_"+str(2*i),

在 shell 中运行此命令,并将转储文件移动到新机器,然后通过 mysql 在那里运行它。然后为您移动的表生成并运行“drop table”语句。

于 2010-10-29T13:42:45.787 回答
0

我不确定我是否看到了问题,但如果我做对了,您可以使用 Python 生成导出 SQL 脚本,并为另一台机器生成导入脚本。

这样可以省去手动操作的麻烦。至于您的代码片段,我认为将数据库从服务器迁移到另一个服务器的最佳方法是使用引擎自己的功能。

于 2010-10-29T07:40:13.710 回答