类别:CentOS / 日期:2025-12-19 / 浏览:6 / 评论:0
使用mysqldump直接远程备份
远程服务器信息:
mysql版本5或8
服务器ip:125.32.68.51
数据库用户:sql_admin
数据库密码:my123456
数据库名称:itdog_2025
本地服务器数据存储路径:
/home/mysql_backup
日志路径:
/home/logs
本地centos7先安装mysql数据库客户端(已安装的可省略)
yum install -y mysql
一、手工直接备份(三选一)
# 1、不压缩 mysqldump -h 125.32.68.51 -P 3306 -u sql_admin -pmy123456 itdog_2025 > /home/mysql_backup/itdog_2025_$(date +%Y%m%d).sql # 2、压缩为.gz备份(推荐) mysqldump -h 125.32.68.51 -P 3306 -u sql_admin -pmy123456 itdog_2025 | gzip > /home/mysql_backup/itdog_2025_$(date +%Y%m%d).sql.gz # 3、压缩为.zip备份 mysqldump -h 125.32.68.51 -P 3306 -u sql_admin -pmy123456 itdog_2025 | zip > /home/mysql_backup/itdog_2025_$(date +%Y%m%d).sql.zip
二、利用脚本自动备份
1、创建脚本
# 创建目录 mkdir -p /home/scripts # 创建脚本 vi /home/scripts/backup_mysql.sh
脚本内容:
#!/bin/bash
# 配置信息
REMOTE_HOST="125.32.68.51"
REMOTE_PORT="3306"
REMOTE_USER="sql_admin"
REMOTE_PASS="my123456"
DATABASE_NAME="itdog_2025"
BACKUP_DIR="/home/mysql_backup"
LOG_FILE="/home/logs/mysql_backup.log"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始备份数据库 $DATABASE_NAME" >> $LOG_FILE
mysqldump -h $REMOTE_HOST -P $REMOTE_PORT -u $REMOTE_USER -p$REMOTE_PASS \
--single-transaction \
--routines \
--events \
--triggers \
$DATABASE_NAME | gzip > $BACKUP_DIR/${DATABASE_NAME}_${DATE}.sql.gz
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - 备份成功: $BACKUP_DIR/${DATABASE_NAME}_${DATE}.sql.gz" >> $LOG_FILE
# 删除30天前的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
echo "$(date '+%Y-%m-%d %H:%M:%S') - 已清理30天前的备份文件" >> $LOG_FILE
else
echo "$(date '+%Y-%m-%d %H:%M:%S') - 备份失败!" >> $LOG_FILE
fi参数解释:
--single-transaction \ # 一致性备份 --routines \ # 包含存储过程和函数 --events \ # 包含事件 --triggers \ # 包含触发器 --default-character-set=utf8mb4 \ # 指定字符集 --hex-blob \ # 正确处理二进制数据 --complete-insert \ # 完整的INSERT语句 --add-drop-database \ # 添加DROP DATABASE语句 --add-drop-table \ # 添加DROP TABLE语句 --result-file=backup.sql # 输出到文件
2、设置脚本文件权限
chmod +x /home/scripts/backup_mysql.sh
3、 设置 crontab 定时任务
crontab -e
添加以下内容:
# 每天00:10开始执行 10 0 * * * /home/scripts/backup_mysql.sh # 例如每5分钟同步一次(以下已注释了) # */5 * * * * /home/scripts/backup_mysql.sh
到此,已完成操作。
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

