对我来说,导出 200 个总共 40GB 数据的数据库并将它们导入另一台服务器的最有效方法是什么?我最初计划运行一个脚本,将每个 DB 导出到它们自己的 sql 文件中,然后将它们导入到新服务器中。如果这是最好的方法,是否有一些额外的标志可以传递给 mysqldump 来加速它?
我看到的另一个选项是将 mysqldump 直接通过 SSH 导入导入。这会是更好的选择吗?如果是这样,你能提供一些关于脚本可能是什么样子的信息吗?
如果服务器可以相互 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
最快最快的方法是使用 percona xtrabackup 进行热备份。它非常快,您可以在实时系统上使用它,而 mysqldump 会导致锁定。请避免在 Innodb 的情况下将 /var/lib 目录复制到其他服务器,这会产生非常糟糕的影响。
试试 percona xtrabackup,这里有更多关于安装和配置的信息。链接在这里。
如果两个 mysql 服务器都具有相同的 dbs 和配置,我认为最好的方法是使用 rsync 复制 /var/lib/mysql 目录。在进行复制之前停止服务器以避免表损坏
mysqldump -p -u username database_name > dbname.sql
wget http://www.domainname.com/dbname.sql
mysql -p -u username database_name < file.sql
完毕!!