首页 > 数据库 >东商项目mysql实例库(dingding)增量备份的实现

东商项目mysql实例库(dingding)增量备份的实现

时间:2024-11-10 17:19:24浏览次数:1  
标签:-% week last +% 备份 东商 date mysql dingding

一、钉钉库(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检查并启用二进制日志
二进制日志是 MySQL 增量备份的核心。首先,确保 MySQL 服务器启用了二进制日志功能。

 

- 编辑 MySQL 配置文件 (`/etc/my.cnf` 或 `/etc/mysql/my.cnf`),在 `[mysqld]` 段添加以下内容:

```ini
[mysqld]
log-bin=mysql-bin
server-id=1 # 在主从复制中,确保每个服务器的ID是唯一的
```

 

- 保存配置文件并重启 MySQL 服务:

 

```bash
sudo systemctl restart mysqld
```

 

- 验证二进制日志是否启用:

 

```sql
SHOW VARIABLES LIKE 'log_bin';
```

 

如果 `log_bin` 为 `ON`,则表示二进制日志已启用。

 

1.2写脚本

/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.3把脚本加入定时任务

crontab -l
0 5 * * 1 sh /backup/binlog_backup.sh /dev/null &

备注:每周一凌晨一点整会自动执行该脚本;自动增量备份上周的增量数据。

1.4验证是否备份成功

 

标签:-%,week,last,+%,备份,东商,date,mysql,dingding
From: https://www.cnblogs.com/xiaozgang/p/18538222

相关文章

  • 基于深度学习+pytorch+PyQt6+MySQL的口罩佩戴识别系统
    前言本系统是一个完整的基于深度学习+pytorch+PyQt6+MySQL的口罩佩戴识别系统。包括LeNet、AlexNet、VGG、GoogLeNet、ResNet、MobileNetV2网络模型。可以直接训练、测试、使用。也就是说,它不仅仅是一个口罩佩戴识别系统。它可以是任意识别系统!!系统演示视频登陆注册系......
  • 基于深度学习+pytorch+PyQt6+MySQL的农作物识别系统
    前言本系统是一个完整的基于深度学习+pytorch+PyQt6+MySQL的农作物识别系统。包括LeNet、AlexNet、VGG、GoogLeNet、ResNet、MobileNetV2网络模型。可以直接训练、测试、使用。也就是说,它不仅仅是一个农作物识别系统。它可以是任意识别系统!!系统演示视频登陆注册系统使......
  • 4,MySQL数据库的设计
    准备阶段创建用户CREATEUSER'luck'@'localhost'IDENTIFIEDBY'1111';GRANTALLPRIVILEGESONtest_db.*TO'luck'@'localhost';root修改普通用户权限GRANTALLPRIVILEGESON.TO'existinguser'@'%'IDEN......
  • MySQL中的事务与锁
    目录事务InnoDB和ACID模型 原⼦性的实现持久性的实现 ​隔离性的实现锁隔离级别 ​多版本控制(MVCC)事务1.什么是事务?事务是把⼀组SQL语句打包成为⼀个整体,在这组SQL的执⾏过程中,要么全部成功,要么全部失败,这组SQL语句可以是⼀条也可以是多条示例:转账的......
  • 计算机毕设设计项目 基于PHP+MySQL校园购物网站的设计与实现
    标题: 基于PHP+MySQL校园购物网站的设计与实现基于PHP和MySQL的校园购物网站旨在为在校师生提供一个便捷的在线购物平台。以下是一些主要的功能模块及其详细说明:1.用户管理•注册与登录:•注册:用户可以通过邮箱、手机号或其他方式进行注册。•登录:用户通过用户名和密码......
  • 科普文:软件架构数据库系列之【MySQL:innodb刷脏页之Checkpoint机制详解】
    概叙科普文:软件架构数据库系列之【MySQL/innodb刷脏页】-CSDN博客科普文:软件架构数据库系列之【innodb内存管理四剑客:LRU算法+Free_list、LRU_list、FlushList】-CSDN博客科普文:软件架构数据库系列之【MySQL:innodb刷脏页多线程的源码解读】-CSDN博客CheckPoint是MySQL的WA......
  • MySQL 8.0 执行 COUNT () 很慢原因分析
    MySQL8.0执行COUNT()很慢原因分析1.1问题描述线上MySQL8.0.32环境在执行SELECTCOUNT(1)FROMt0获取表行数很慢,同样场景下该SQL在MySQL5.7环境很快就能拿到结果1.2问题复现测试版本:8.0.25MySQLCommunityServer-GPL和5.7.21-logMySQLCommunityServe......
  • MySQL快速入门,一篇搞定
    MySQL1.初识MySQL1.1.为什么学数据库数据库几乎是软件体系中最核心的一个存在1.2.什么是数据库数据库(Database,简称DB)概念:长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据"仓库"作用:保存,并能安全管理数据(如:增删改查等),减少冗余...数据库总览:关......
  • mysql 查询月份数据.
    //查看本月数据SELECT*FROMcontent_publishWHEREdate_format(publish_time,'%Y%m')=date_format(DATE_SUB(curdate(),INTERVAL0MONTH),'%Y%m') //查看上个月数据SELECT*FROMcontent_publishWHEREdate_format(publish_time,'%Y%m')=date_for......
  • 直播短视频系统,Mysql执行顺序代码解析
    直播短视频系统,Mysql执行顺序代码解析MySQL执行顺序FROM<left_table>ON<join_condition><join_type>JOIN<right_table>WHERE<where_condition>GROUPBY<group_by_list>HAVING<having_condition>SELECTDISTINCT<select_list&......