【问题标题】:Copy all tables from a database to another server database将数据库中的所有表复制到另一个服务器数据库
【发布时间】:2016-06-27 04:14:46
【问题描述】:

我在 xx.xx.xx.xx 服务器上有一个名为 db_x 的数据库。 我想将这个数据库的所有表( db_x )移动到另一个数据库(db_y),它位于不同的服务器(yy.yy.yy.yy)上。

我可以通过连接到 ssh 来使用终端吗?

请帮帮我。

【问题讨论】:

  • 是的,你可以做到

标签: mysql ssh


【解决方案1】:

制作 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 开关 取决于您的设置。

【讨论】:

  • 但正常情况下它在 2 个步骤中更快 mysqldump -u... -p... -h xx.xx.xx.xx db_x | gzip > db_x.sql.gz 然后 scp 到另一台服务器并导入
  • @BerndBuffen 真的吗?怎么会?网络 I/O?好吧,实际上我会分两步完成,因为这样更容易将错误消息(如果有的话)分开。
  • @BerndBuffen 啊,我明白了。转储文件对 zip 非常友好。
  • 是 - 网络流量。如果您一步完成,您可以使用 -C 选项来压缩网络流量,并确保在导入之前已创建数据库 db_y。在转储中没有包含创建数据库
  • @BerndBuffen 如果您将转储更改为mysqldump -u... -p... -h xx.xx.xx.xx --databases db_x,那么就有了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
相关资源
最近更新 更多