MySQL远程备份的核心在于通过安全、稳定的方式将本地数据库导出并传输到远程服务器。最常用的方法是结合
mysqldump与
SSH或
scp进行操作,既能保证数据完整性,又能避免直接暴露数据库端口。
使用mysqldump + SSH远程备份
这种方法无需开启MySQL的远程访问,利用SSH加密通道完成数据导出和传输,安全性高,适合大多数生产环境。
执行命令如下:
mysqldump -u [用户名] -p[密码] -h [本地MySQL地址] [数据库名] | ssh [远程用户]@[远程IP] "cat > /path/to/backup.sql"
说明:
将[用户名]替换为数据库登录用户,如root
-p后直接跟密码(无空格),也可留空在执行时手动输入
[本地MySQL地址]通常为localhost或127.0.0.1
[数据库名]填写需要备份的具体数据库名称 远程部分通过
ssh将输出重定向到远程服务器指定路径
例如:
mysqldump -u root -pmypassword -h localhost mydb | ssh user@192.168.1.100 "cat > /backup/mydb_$(date +%F).sql"
该命令会把本地
mydb数据库备份,并以日期命名保存到远程服务器的
/backup/目录下。
先本地导出再用scp传输
如果希望分步操作,可先在本地生成SQL文件,再通过
scp上传到远程服务器。
步骤如下:
mysqldump -u 用户名 -p密码 数据库名 > /local/path/backup.sql scp /local/path/backup.sql user@远程IP:/remote/path/
优点是便于校验本地文件后再上传,适合大数据库或网络不稳定环境。
开启远程访问后直接从远程备份(谨慎使用)
若需从远程机器直接连接并备份本地MySQL,需确保:
MySQL配置允许远程连接(修改bind-address或注释掉) 对应用户有远程访问权限(如
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'password';) 防火墙开放3306端口
然后在远程机器运行:
mysqldump -u 用户名 -p密码 -h 本地IP 数据库名 > backup.sql
此方式风险较高,建议仅在内网或配合SSL加密时使用。
自动化定时远程备份
结合Linux的
crontab可实现自动定时备份。
编写脚本
backup_mysql.sh:
#!/bin/bash mysqldump -u root -pmypassword mydb | ssh user@192.168.1.100 "cat > /backup/mydb_$(date +\%F).sql"
添加执行权限并写入定时任务:
chmod +x backup_mysql.sh crontab -e # 添加:0 2 * * * /path/to/backup_mysql.sh # 每天凌晨2点执行
基本上就这些。推荐优先使用
mysqldump + SSH管道方式,安全高效,不占用本地磁盘空间。注意定期清理旧备份,防止存储溢出。
