我有一个更大的数据库(2.1GB)。我想将其输入到服务器部分的 mysql 中。如果我从本地部分的 mysql 以tar.gz
格式输出它,它有 420MB,如果保留格式sql
,它有 2.1GB。
如何使用 SSH 将数据库导入 mysql?这里的一些方法仅支持 sql 格式:
# mysql -u username -p database_name < file.sql
将 420MB tar.gz 传输到服务器部分,然后解压?(解压可能需要很长时间)将 sql 拆分成多个部分?或者更好的主意?
还有一个问题,我是否应该修改my.cnf
以支持大尺寸文件输入?
问候。
答案1
是的,如果您有磁盘空间,请将压缩文件传输到服务器,在那里解压缩,然后导入。
显然没有必要将文件分割成小块。这又不是您要发布到 Usenet。
如果你的连接速度很慢,你可以使用“rsync”,它可以恢复中断的传输,例如,rsync file.sql.gz server:/tmp/file.sql.gz
答案2
如果您不想将 SQL 导入拆分成较小的块,这里有几个选项。此外,在实际操作之前,最好先在测试机上进行测试。
您可以使用 bzip2 -9 压缩 file.sql,传输它,然后使用此命令运行导入,而不需要您解压缩文件:
bzcat file.sql.bz2 | mysql -u username -p database_name
或者如果你更大胆的话,你可以直接使用 ssh 来执行以下命令:
cat file.sql | ssh -C -c blowfish username@myserver mysql -u username -p database_name
在此命令中,-C 表示在传输期间启用压缩,-c blowfish 表示选择比默认算法使用更少 CPU 的加密算法。
常识建议传输压缩文件,以便您可以使用例如 MD5 来验证校验和,然后从压缩文件运行导入。
希望这可以帮助。