一、钉钉库(dingding)实例全量备份
1.机器:
cvlink-xxcc-prd1 |
172.16.50.59 |
cvlink-xxcc-prd2 |
172.16.50.60 |
备注:59是主库,60为从库,因为做了主从,所以两个数据库数据是一致的,直接对从库60的实例钉钉进行备份即可。
2.对从库60的实例进行备份:
2.1 登录从库:
2.2 进行备份:使用mysqldump工具
2.3 验证:
2.4 备份的数据的路径:
/root/dingding_backup.sql
二、增量备份:mysqlbinlog方式
1.1写脚本
/backup/binlog_backup.sh
以下是脚本内容:
============================================================================================================================================================================
#!/bin/bash
# 定义备份相关的路径和配置信息
BACKUP_DIR="/backup"
LOG_FILE="/var/log/mysql_binlog_backup.log"
MYSQL_TEMP_CONFIG="/usr/local/mysql/data/temp_mysql.cnf"
MYSQL_BIN_LOG_DIR="/usr/local/mysql/data"
# 获取上周开始时间(上周周一凌晨0点整)的时间戳
current_date=$(date +%Y-%m-%d)
last_week_start_date=$(date -d "$(date +%Y-%m-%d) -$(($(date +%w) + 7 - 1)) days" +%Y-%m-%d)
last_week_start_datetime="${last_week_start_date} 00:00:00"
last_week_start_timestamp=$(date -d "${last_week_start_datetime}" +%s)
if [ $? -ne 0 ]; then
echo "获取上周开始时间戳失败。" | tee -a $LOG_FILE
exit 1
fi
# 获取上周结束时间(上周周日23点59分59秒)的时间戳
last_week_end_date=$(date -d "$(date +%Y-%m-%d) -$(($(date +%w) + 1)) days" +%Y-%m-%d)
last_week_end_datetime="${last_week_end_date} 23:59:59"
last_week_end_timestamp=$(date -d "${last_week_end_datetime}" +%s)
if [ $? -ne 0 ]; then
echo "获取上周结束时间戳失败。" | tee -a $LOG_FILE
exit 1
fi
# 将时间戳转换为正确的日期时间格式
start_datetime=$(date -d @$last_week_start_timestamp +%Y-%m-%d\ %H:%M:%S)
if [ $? -ne 0 ]; then
echo "将上周开始时间戳转换为日期时间格式失败。" | tee -a $LOG_FILE
exit 1
fi
stop_datetime=$(date -d @$last_week_end_timestamp +%Y-%m-%d\ %H:%M:%S)
if [ $? -ne 0 ]; then
echo "将上周结束时间戳转换为日期时间格式失败。" | tee -a $LOG_FILE
exit 1
fi
# 使用正确的日期时间格式从二进制日志中提取上周的数据并备份到指定文件
mysqlbinlog -v --start-datetime="$start_datetime" --stop-datetime="$stop_datetime" $MYSQL_BIN_LOG_DIR/mysql-bin.* > "$BACKUP_DIR/weekly_backup_$(date +%Y%m%d%H%m%S).sql" 2>&1
if [ $? -ne 0 ]; then
echo "从二进制日志提取数据并备份失败,请检查相关设置和日志文件。" | tee -a $LOG_FILE
exit 1
fi
echo "备份完成,备份文件为:$BACKUP_DIR/weekly_backup_$(date +%Y%m%d%H%m%S).sql" | tee -a $LOG_FILE
=======================================================================================================================================================
备注:如果执行脚本有报错:mysqlbinlog: [ERROR] unknown variable ‘default-character-set=utf8mb4‘,则可以修改mysqlbinlg执行的指令,
例如:mysqlbinlog --no-defaults --stop-datetime="2024-04-16 10:30:00" binlog.000001 > recovery.sql
1.2把脚本加入定时任务
crontab -l
0 5 * * 1 sh /backup/binlog_backup.sh /dev/null &
备注:每周一凌晨一点整会自动执行该脚本;自动增量备份上周的增量数据。
1.3验证是否备份成功