类别:CentOS / 日期:2025-12-19 / 浏览:7 / 评论: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

到此,已完成操作。

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章