【发布时间】:2016-06-27 04:14:46
【问题描述】:
我在 xx.xx.xx.xx 服务器上有一个名为 db_x 的数据库。 我想将这个数据库的所有表( db_x )移动到另一个数据库(db_y),它位于不同的服务器(yy.yy.yy.yy)上。
我可以通过连接到 ssh 来使用终端吗?
请帮帮我。
【问题讨论】:
-
是的,你可以做到
我在 xx.xx.xx.xx 服务器上有一个名为 db_x 的数据库。 我想将这个数据库的所有表( db_x )移动到另一个数据库(db_y),它位于不同的服务器(yy.yy.yy.yy)上。
我可以通过连接到 ssh 来使用终端吗?
请帮帮我。
【问题讨论】:
制作 db_x 的转储(备份)并将其导入 db_y。这可以一步完成:
mysqldump -u... -p... -h xx.xx.xx.xx db_x | mysql -u... -p... -h yy.yy.yy.yy db_y
更新
请注意,此解决方案仅在您可以从本地 PC 连接到两个数据库时才有效。
正如@BerndBuffen 在 cmets 中所说,它通常在 2 个步骤中更快,您还可以避免从 localhost 访问数据库的必要性:
# go to X server and make the dump there:
ssh xx.xx.xx.xx
mysqldump -u ... -p... db_x | gzip > db_x.sql.gz
将文件 db_x.sql.gz 复制到另一台服务器。如有必要,首先将其复制到 localhost,然后从那里复制到服务器 yy.yy.yy.yy。
确保数据库 db_y 已在服务器 Y 上创建。
# go to Y server and import the dump there:
ssh yy.yy.yy.yy
gzip -dc db_x.sql.gz | mysql -u ... -p... db_y
当您已经连接到各自的服务器(通过 ssh)时,是否需要 -h xx.xx.xx.xx 和/或 -h yy.yy.yy.yy 开关
取决于您的设置。
【讨论】:
mysqldump -u... -p... -h xx.xx.xx.xx --databases db_x,那么就有了。