如何将远程MySQL数据库备份至另一CentOS服务器(120GB大库)
问题分析与解决方案
首先得明确:你给出的mysql> use db_name;和mysql> source backup-file.sql;这两条命令是数据库恢复命令,作用是把本地的backup-file.sql导入到数据库中,完全不是备份命令,所以用它们来完成你的备份需求是不可行的。
针对你的场景(本地空间不足,需直接将120GB的远程MySQL备份到另一台CentOS服务器),正确的做法是用mysqldump结合SSH管道,直接将备份数据流传输到目标服务器,全程不需要在本地存储备份文件。
正确的备份命令格式
你需要在本地CentOS服务器的Bash终端(不是MySQL交互终端)中执行类似这样的命令:
mysqldump -h 远程MySQL服务器IP -u 数据库用户名 -p 要备份的数据库名 | ssh 目标CentOS服务器用户名@目标服务器IP "cat > /目标服务器存储路径/backup-file.sql"
命令细节解释
mysqldump:MySQL官方备份工具,负责连接远程MySQL并导出数据库内容-h指定远程MySQL的IP地址,-u指定登录用户名,-p会提示你输入数据库密码- 管道符
|:把mysqldump输出的备份数据直接传给后续SSH命令,不经过本地磁盘 ssh 目标CentOS服务器用户名@目标服务器IP:建立到目标服务器的SSH连接"cat > /目标服务器存储路径/backup-file.sql":在目标服务器上将接收到的数据流写入指定路径的备份文件
关键注意事项
- 为避免大备份过程中因需要输入SSH密码而中断,建议先在本地服务器和目标服务器之间配置SSH免密登录(生成SSH密钥对,将公钥传到目标服务器的
~/.ssh/authorized_keys中) - 确保目标服务器的指定存储路径有足够空间(至少预留120GB以上,备份文件大小基本与原数据库相当)
- 如果远程MySQL使用非默认3306端口,需在
mysqldump后添加-P 端口号参数 - 针对大体积InnoDB数据库,建议加上
--single-transaction参数,可在不锁表的情况下完成一致性备份;如果是MyISAM引擎,需要加--lock-all-tables保证数据一致性
内容的提问来源于stack exchange,提问作者mario
相关产品推荐
相关产品推荐

