最常用可靠的远程MySQL备份方式是mysqldump,需确保网络连通、远程MySQL允许外部连接(修改bind-address为0.0.0.0并重启)、授权用户(SELECT和LOCK TABLES权限),再用mysqldump -h IP -P端口 -u用户 -p数据库名>备份.sql命令导出,可加--single-transaction等参数优化,并通过crontab定时执行脚本实现自动化备份与清理。

直接用 mysqldump 连接远程 MySQL 服务器导出数据,是最常用也最可靠的远程备份方式。关键在于网络连通、权限配置和命令写法要准确。
确认远程 MySQL 允许外部连接
默认 MySQL 只监听本地(127.0.0.1),需修改配置并授权用户:
- 检查
bind-address是否为0.0.0.0或注释掉(位于/etc/mysql/mysql.conf.d/mysqld.cnf或类似路径) - 重启 MySQL:运行
sudo systemctl restart mysql - 登录 MySQL,执行授权语句:
CREATE USER 'backup_user'@'%' IDENTIFIED BY 'strong_password';
GRANT SELECT, LOCK TABLES ON *.* TO 'backup_user'@'%';
FLUSH PRIVILEGES;
使用 mysqldump 远程备份数据库
在本地或备份服务器上执行,无需登录远程主机:
稻草人企业站程序,是一款简单开源的企业站程序,程序分为php+sqlite、php+mysql两个版本,程序采用php+smarty模板技术 修改模板方便,程序采用面对对象 模块开发.调用管理方便,程序可以开启伪静态功能,后台能编辑删除文件,后台能进行数据库管理、备份等操作,生成百度sitemap、Google sitemap功能,留言发邮件功能。 稻草人企业站程序 v1.0.7升级 1、增加安
- 基础命令格式:
mysqldump -h 远程IP -P 端口 -u 用户名 -p 数据库名 > backup.sql - 示例(假设远程 IP 是 203.0.113.10,端口 3306,数据库叫 app_db):
mysqldump -h 203.0.113.10 -P 3306 -u backup_user -p app_db > app_db_$(date +%F).sql - 加
--single-transaction可避免锁表(适用于 InnoDB) - 加
--routines --triggers --events可一并导出存储过程、触发器和事件
自动化定时备份(Linux 示例)
配合 crontab 实现每天自动备份并压缩归档:
- 写一个备份脚本
/opt/backup_mysql.sh:
#!/bin/bash
HOST="203.0.113.10"
USER="backup_user"
PASS="strong_password"
DB="app_db"
DATE=$(date +%F)
DUMP="/backup/${DB}_${DATE}.sql"
gzip -c | mysqldump -h $HOST -u $USER -p$PASS $DB > $DUMP.gz
find /backup -name "*.sql.gz" -mtime +7 -delete- 给脚本执行权限:
chmod +x /opt/backup_mysql.sh - 添加到 crontab(每天凌晨 2 点执行):
0 2 * * * /opt/backup_mysql.sh
安全与注意事项
远程备份涉及密码和网络传输,不能忽略安全细节:
- 避免在命令行明文写密码(如
-p'xxx'),改用配置文件方式:
创建~/.my.cnf,内容如下(设权限chmod 600 ~/.my.cnf):[client] host=203.0.113.10 user=backup_user password=strong_password
- 确保备份服务器与 MySQL 服务器之间走内网或加密通道(如 SSH 隧道)
- 定期验证备份文件是否可恢复:
zcat backup.sql.gz | mysql -u local_user -p test_db - 大库建议启用压缩传输(如通过 SSH 管道)或分库分表导出,避免超时或内存溢出









