【问题标题】:mysql dump 200DB ~ 40GB from one server to anothermysql 将 200DB ~ 40GB 从一台服务器转储到另一台服务器
【发布时间】:2013-05-02 06:00:47
【问题描述】:

对我来说,导出 200 个数据库和总共 40GB 数据并将它们导入另一台服务器的最有效方法是什么?我最初计划运行一个脚本,将每个 DB 导出到它们自己的 sql 文件,然后将它们导入到新服务器中。如果这是最好的方法,是否有一些额外的标志可以传递给 mysqldump 来加快速度?

我看到的另一个选项是直接通过 SSH 将 mysqldump 导入到导入中。这会是更好的选择吗?如果是这样,您能否提供一些有关脚本可能是什么样子的信息?

【问题讨论】:

    标签: mysql linux ssh mysqldump


    【解决方案1】:

    如果服务器可以相互 ping 通,您可以使用 PIPES 来做到这一点:

    mysqldump -hHOST_FROM -u -p db-name | mysql -hHOST_TO -u -p db-name
    

    直截了当!

    [编辑]

    回答你的问题:

    mysqldump -hHOST_FROM -u -p --all | mysql -hHOST_TO -u -p
    

    【讨论】:

    • 如果远程服务器上不存在数据库,我将如何使用此命令?我需要导入的所有数据库也需要在远程服务器上创建。
    【解决方案2】:

    最快最快的方法是使用 percona xtrabackup 进行热备份。它非常快,您可以在实时系统上使用它,而 mysqldump 会导致锁定。请避免将 /var/lib 目录复制到其他服务器以防 Innodb,这会产生非常糟糕的影响。

    试试 percona xtrabackup,这里有更多关于安装和配置的信息。 Link here.

    【讨论】:

    • 由于简单,我最终选择了 mysql 转储管道到远程服务器选项。但是,我确实在网上看到了一些关于 xtrabackup 的其他参考资料,而且看起来确实很有用。我将在不久的将来执行相同的任务,所以我必须尝试一下。谢谢!
    【解决方案3】:

    如果两个 mysql 服务器都具有相同的 dbs 和配置,我认为最好的方法是使用 rsync 复制 /var/lib/mysql 目录。在进行复制之前停止服务器以避免表损坏

    【讨论】:

      【解决方案4】:
      1. 通过命令使用 SSH 导出 MySQL 数据库

      mysqldump -p -u username database_name > dbname.sql

      1. 使用 wget 从新服务器 SSH 移动转储。

      wget http://www.domainname.com/dbname.sql

      1. 通过命令使用 SSH 导入 MySQL 数据库

      mysql -p -u username database_name < file.sql

      完成!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-14
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-18
        相关资源
        最近更新 更多