【问题标题】:Importing MySQL database from one server to another将 MySQL 数据库从一台服务器导入到另一台服务器
【发布时间】:2011-05-23 08:25:29
【问题描述】:

我有两台具有 root 访问权限的专用服务器。两者都在运行 Linux。我想将数据库从 Server1 导入到 Server2。我已经在 Server2 上创建了一个空数据库。 我想知道可以直接导入数据库的Linux命令吗?有这样的功能吗?我可以使用 mysqldump 吗?我想避免先在 server1 上进行数据库备份,然后将该文件移动到 server2,然后再导入该文件。 可以直接使用命令导入吗?

谢谢

【问题讨论】:

    标签: mysql linux import mysqldump


    【解决方案1】:

    如果您想避免创建、传输和加载文件,您可以将 mysqldump 导入到另一台服务器上运行的 mysql 或另一台服务器上的 ssh mysql 中。

    使用mysql连接远程盒子:

    mysqldump --all-databases | mysql -h yourserver.com 
    

    使用 ssh 连接其他服务器

    mysqldump --all-databases | ssh user@yourserver.com mysql 
    

    使用 mysqldump --all-databases 将它们全部传输,或者只指定数据库名称。更多选项请参考mysqldump documentation

    您也可以使用 MySQL 的“复制”功能,尽管这需要更多时间来设置,而且相当棘手。一次迁移可能不值得花费所有时间和麻烦。

    【讨论】:

    • 感谢您的回复,但我不知道该怎么做。你能详细说明一下吗?我的意思是我应该在通过 SSH 连接后在 Server1 上运行第一个命令并在 Server2 上运行第二个命令吗?
    • 阿里:你可以在 Server1 上运行这两个命令。第一个命令将打开一个到 Server2 的 mysqlconnection(将其名称放在-h 之后)。第二个命令将打开到 Server2 本身的 ssh 连接,并运行 mysql 客户端应用程序,使用 Server1 上的 mysqldump 的输出作为 Server2 上 mysql 的输入。因此,转移数据库。
    【解决方案2】:

    在第一台服务器上停止mysqld,将数据目录(通常是/var/lib/mysql)从服务器1复制到服务器2,在第二台服务器上启动mysqld,现在它与第一台相同。

    如果您可以在复制数据文件时停止服务器,则不必使用导入/导出工具。特别是如果您可以在复制文件之前对其进行压缩,这将是最快的方式。

    【讨论】:

    • 如果你有相同的版本,这个解决方案是最好的。
    【解决方案3】:
    mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost “mysql -uUSER -pPASS NEW_DB_NAME”
    

    通过压缩的 SSH 隧道转储 MySQL 数据库并将其用作 mysql 的输入

    source

    【讨论】:

      猜你喜欢
      • 2020-04-14
      • 2015-03-16
      • 2016-09-13
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 2017-10-04
      • 2021-07-17
      • 1970-01-01
      相关资源
      最近更新 更多