mysql备份策略(全量备份+增量备份)

MySQL备份方案 mysql数据库的几种备份方案: 一、binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 1、binlog日志 1.1、引起mysql服务器改变的任何操作( 增 删 改 没有查)1.2、复制功能依赖于此日志1.3、slave服务器通过复制master服务器的二进制日志完成主从复制,在执行之前保存于中继日志(relay log)中1.4、slave服务器通常可以关闭二进制日志以提升性能 2、binlog日志文件的文件表现形式 2.1、默认在安装目录下,存 阅读详情

最近项目需要对数据库数据进行备份,通过查阅各种资料,设计了一套数据库备份策略,通过调试运行一周后,目前已经处于平稳运行状态。现在将思路分享出来,同时感谢gredn大佬。

设计场景

1)增量备份在周一到周六凌晨3点,复制mysql-bin.00000*到指定目录;
2)全量备份则使用mysqldump将整个数据库导出,每周日凌晨3点执行,并会删除上周留下的mysq-bin.00000*,然后对mysql的备份操作会保留在bak.log文件中。

技术点

Mysqldump、mysqlbinlog、crontab

服务器信息

主机:centos7;数据库:mysql5.7

准备工作

开启binlog日志功能
(1)新建目录,执行:

#mkdir /home/mysql
#cd /home/mysql
#mkdir mysql-bin.      #增量日志文件目录

(2)修改所属的用户/组:(不修改,mysql无法重启)

#chown -R mysql.mysql mysql-bin

这里写图片描述

(3)修改mysql配置文件,执行:

#vim /etc/my.cnf

这里写图片描述

其中,server-id表示单个结点的id,这里由于只有一个结点,所以可以把id随机指定为一个数,这里将id设置成1。若集群中有多个结点,则id不能相同(对于5.7以下版本不需要指定server-id);
log_bin指定binlog日志文件的存储路径,日志文件以mysql-bin开头。
(4)重启mysql,执行:

#systemctl restart mysqld.service

(5)查看日志文件:

#cd /home/mysql/mysql-bin

这里写图片描述

(6)进入数据库,查看启动效果:

#show variables like '%log_bin%';

这里写图片描述

编写全量备份脚本(Mysql-FullyBak.sh)

进入/home/mysql目录
新建目录:mkdir backup
进入backup目录,新建daily目录:mkdir backup
切换到/home/mysql目录,执行:

#vim Mysql-FullyBak.sh

这里写图片描述

参数说明:
–lock-tables
锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于MySQL数据库引擎为MyISAM 表,如果是 Innodb 表可以用 –single-transaction 选项。
–flush-logs
结束当前日志,生成新日志文件。
–delete-master-logs
清除以前的日志,以释放空间。但是如果服务器配置为镜像的复制主服务器,用–delete-master-logs删掉MySQL二进制日志很危险,因为从服务器可能还没有完全处理该二进制日志的内容。在这种情况下,使用 PURGE MASTER LOGS更为安全。
–quick
该选项在导出大表时很有用,它强制 MySQLdump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
–single-transaction
该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。本选项和 –lock-tables 选项是互斥的,因为lock-tables会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用 –quick 选项。
–events
导出事件
–master-data=2
其中参数–master-data=[0|1|2]
0: 不记录
1:记录为CHANGE MASTER语句
2:记录为注释的CHANGE MASTER语句
–master-data=2 选项将会在输出SQL中记录下完全备份后新日志文件的名称,
用于日后恢复时参考,例如输出的备份SQL文件中含有:
CHANGE MASTER TO MASTER_LOG_FILE=’MySQL-bin.000002′, MASTER_LOG_POS=106;

编写增量备份脚本

切换到/home/mysql目录,执行:

#vim Mysql-DailyBak.sh

这里写图片描述

设置定时任务crontab

(1)安装crontab(centos7默认已经安装):

#yum install crontabs

服务操作说明:

#/bin/systemctl start crond.service //启动服务
#/bin/systemctl stop crond.service //关闭服务
#/bin/systemctl restart crond.service //重启服务
#/bin/systemctl reload crond.service //重新载入

配置:

#/bin/systemctl status crond.service //服务状态

加入开机自动启动:

#chkconfig –level 35 crond on

(2)在命令行输入:

#crontab -e 

添加相应的任务,wq存盘退出

#每个星期日凌晨3:00执行完全备份脚本
0 3 * * 0 /bin/bash -x /home/mysql/Mysql-FullyBak.sh >/dev/null 2>&1
#周一到周六凌晨3:00做增量备份
0 3 * * 1-6 /bin/bash -x /home/mysql/Mysql-DailyBak.sh >/dev/null 2>&1

说明:默认情况下,crontab执行一次任务后,会通过email通知用户,为避免每次发信息,加入/dev/null 2>&1
(3)查看定时任务:#crontab -l
这里写图片描述
参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 ;
  crontab -l //列出某个用户cron服务的详细内容;
  crontab -r //删除所有用户的cron服务;
  crontab -e //编辑某个用户的cron服务;
  例如:root查看自己的cron设置:crontab -u root -l
  例如:root删除用户fred的cron设置:crontab -u fred -r
补充:
(1)可直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务(针对整个系统的crontab文件);
(2)crontab执行定时任务的记录会写入到/var/log/cron这个文件中,该记录以帐号为区分。

恢复操作

恢复过程亦会写入日志文件,如果数据量很大,建议先关闭binlog日志功能
1、场景:假设早上9点的时候,数据库被攻击,drop了整个数据库!
2、恢复思路:
利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件中增量的那部分。
用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句。
通过全备文件和增量binlog文件导出的sql文件,就可以恢复到完整的数据。
3、恢复步骤:
(1)首先,解压最新的全量备份文件,进入备份文件目录,执行:

#tar -zxvf XXX.sql.tgz

这里写图片描述
(2)查看全备之后新增的binlog文件,执行:

#grep CHANGE XXX.sql

这里写图片描述

由图可知,这是全备时刻的binlog文件位置,即mysql-bin.000003的154行,因此在该文件之前的binlog文件中的数据都已经包含在这个全备的sql文件中。
(3)恢复mysql-bin.000003文件的154行之后的信息
进入到mysql-bin.000003目录,执行(sysecokit为数据库名);

#mysqlbinlog --start-position=154 --database=sysecokit mysql-bin.000003 | mysql -uroot -p -v sysecokit

(4)将其他binlog文件(除去mysql-bin.000003)导出sql文件,执行(-d指定数据库):

#mysqlbinlog -d sysecokit mysql-bin.00000X >00Xbin.sql

这里写图片描述
(5) vim编辑最新的00Xbin.sql删除其中的drop语句
(6)恢复全备数据,执行:

#mysql -uroot -p < XXX.sql

如:#mysql -uroot -p < 20180716.sql
(7)恢复增量数据,执行(syseco为数据库名称):

#mysql -uroot -p syseco<00Xbin.sql

如:#mysql -uroot -p syseco<004bin.sql
自此,已经完成所有工作,让我们查看一下运行一周后产生的文件:
这里写图片描述
获取全部脚本源码,请留言,欢迎交流
dhp 2018.7.25

MySQL数据库增量备份全量备份的实现 MySQL数据库全量备份的实现 1.创建备份文件夹 root@vultr:/home/blog# mkdir -p /home/blog/mysql/backup 2.编辑/etc/my.cnf文件添加如下信息,log-bin 和 log-bin-index路径按照自己的路径填写 #backup properties log-bin = "/home/blog/mysql/logbin.log"... 阅读详情

相关推荐

Matplotlib字体警告终结者:为什么总提示DejaVu Sans?5种场景解决方案大全

本文深入解析Matplotlib中常见的DejaVu Sans字体警告问题,并提供5种典型场景的完整解决方案。从理解字体系统的三层架构和缓存机制,到解决中文显示、远程服务器部署、TeX渲染、缓存优化及生产环境配置等实际问题,帮助开发者彻底摆脱字体警告困扰,实现稳定可靠的数据可视化。

view3的博客 457

MySQL备份策略

MySQL备份策略

选择大于努力吗? 5132

Silly Tavern(酒馆)AI 角色扮演下载与安装教程(Windows本地部署)

SillyTavern是一款开源AI角色扮演前端工具,支持沉浸式对话和长期角色互动。本文详细介绍了在Windows系统F盘部署SillyTavern的完整流程,包括下载项目、安装Node.js和Git环境、配置路径、启动服务等关键步骤,并特别说明非系统盘路径可能遇到的npm安装问题及解决方法。成功启动后,用户可通过浏览器访问本地地址使用该工具进行AI角色扮演互动。

Tan3851的博客 1万+

mysql在centos环境下全量备份增量备份

1、将 full_backup.sh(全量备份) 和 incr_backup.sh(增量备份) 脚本上传至指定路径。在[mysqld]下面加入,并保存(不加server_id会报错,server_id的值可以随便设。3、首先执行命令进行全量备份,完成全量备份脚本会刷新增量备份日志节点。2、查看binlog状态,ON为开启,如果为开启则参考3步骤;进入编辑模式,复制如下内容保存,可以先进行测试。1、检查binlog是否开启,进入mysql。3、进入mysql配置文件编辑模式。4、参考全量备份增量备份文件。

hxl016的博客 881

mysql增量备份几种_mysql增量备份

一、启用 Binary Log修改 MySQL Server 的系统设置文件(eg. /etc/my.cnf),在 [mysqld] 区块中加上 log-bin=mysql-bin 选项,然后重新启动 MySQL Server,例如:[mysqld]log-bin启用后你应该可以在 MySQL 的 Data Dir 里面发现如下的文件:mysql-bin.indexmysql-bin.000001...

weixin_42515158的博客 505

mysql备份攻略

为什么80%的码农都做不了架构师?>>> ...

weixin_33736832的博客 483

mysql备份策略的实现(全量备份+增量备份)

最近项目需要对数据库数据进行备份,通过查阅各种资料,设计了一套数据库备份策略,本文就来详细的介绍一下,感兴趣的可以了解一下 目录 设计场景 技术点 服务器信息 准备工作 编写全量备份脚本(Mysql-FullyBak.sh) 编写增量备份脚本 设置定时任务crontab 恢复操作 最近项目需要对数据库数据进行备份,通过查阅各种资料,设计了一套数据库备份策略,通过调试运行一周后,目前已经处于平稳运行状态。现在将思路分享出来,同时感谢gredn大佬。 设计场景 1)增量备份在周一到周六

m0_59989750的博客 1599

全量增量:数据库备份策略的终极指南(附MySQL/Oracle实战案例)

数据库备份是保障数据安全和业务连续性的重要措施。全量备份增量备份各。

yue_yun_的博客 1865

MySQL全量增量备份策略及实践指南

数据库备份是保障数据安全的核心技术,通过全量备份增量备份的组合策略,可以在存储成本与恢复效率之间取得平衡。全量备份记录数据库完整状态,增量备份则捕获后续变更,这种机制大幅降低了存储开销。在MySQL生态中,Percona XtraBackup是实现物理备份的主流工具,支持基于LSN的增量备份。合理配置备份周期(如每周全量+每日增量)可节省70%存储空间。关键应用场景包括金融系统容灾、云数据库快照管理,配合二进制日志还能实现精确到秒的时间点恢复(PITR)。运维中需特别注意备份链完整性验证和定期恢复演练,这

weixin_34072458的博客 392

MySQL数据库全量增量备份策略及实战指南

数据库备份是保障数据安全的基石技术,其核心原理是通过定期复制数据副本来防范硬件故障、人为误操作等风险。在MySQL生态中,物理备份通过直接拷贝数据文件实现高效存储,逻辑备份则生成可读性强的SQL语句。全量备份增量备份的组合策略,能有效平衡存储成本与恢复效率。以Percona XtraBackup为代表的工具支持基于LSN的增量备份,配合binlog日志可实现分钟级数据恢复。该技术在金融、电商等对数据可靠性要求高的行业具有重要应用价值,特别是当处理TB级数据时,合理的备份周期设计和性能优化尤为关键。

weixin_34302798的博客 384

MySQL数据库备份恢复策略全量增量与binlog应用

组件版本要求说明MySQL5.7+/8.0+支持GTID和增强的binlog功能mysqldumpMySQL版本匹配逻辑备份工具,MySQL自带8.0+物理备份工具,支持热备份存储空间数据库大小的3-5倍用于存储备份文件权限要求SUPER、RELOAD、REPLICATION权限备份和恢复需要的权限。

qq_31292011的博客 778

MySQL数据库备份实战:全量增量备份原理、策略与恢复演练

数据库备份是保障数据安全与业务连续性的基石,其核心在于通过系统性的数据复制机制,防止因硬件故障、人为误操作或软件错误导致的数据丢失。从原理上看,备份主要分为逻辑备份与物理备份两种技术路径。逻辑备份通过导出SQL语句实现,具有格式通用、可读性强的特点;物理备份则直接复制数据文件,在恢复速度和处理大数据量时优势显著。在工程实践中,一个健壮的备份体系必须结合全量备份增量备份,并紧密围绕二进制日志(Binlog)构建可追溯的数据变更链条。这不仅能有效控制存储成本与备份时间窗口,更是实现精确时间点恢复(PITR)的

weixin_30932215的博客 347

linux上mysql数据备份(全量备份策略+增量备份策略)

执行备份策略前,先做好scp命令的准备解决思路:生成SSH公钥/私钥后,您需要将公钥添加到服务器上,从而使服务器可以使用该公钥来验证您的身份。生成SSH公钥/私钥的命令为什么都不用输入,直接下一步即可生成SSH公钥/私钥后,您需要将公钥添加到服务器上,从而使服务器可以使用该公钥来验证您的身份。-p指定端口出现一下截图表示成功。

记录开发日常笔记 1511

MySQL数据库备份策略与实践详解

无论你是IT专业人士还是初次接触数据库管理的初学者,理解并掌握数据库备份技术都是非常关键的。备份不仅能够防止因硬件故障、软件错误、人为误操作等因素造成的损失,也是灾难恢复计划中的基石。

hy199707的博客 4290

Mysql增量备份与恢复

本文基于Centos7与Mysql7.5,其他系统版本可能操作存在差异。

算法小生 1073

MySQL定时备份全量备份+增量备份)】

产品上线后,数据非常非常重要,万一哪天数据被误删,那么就gg了,准备跑路吧。所以要对线上的数据库定时做。增量备份的优点是没有重复数据,备份量不大,时间短。但缺点也很明显,需要建立在上次完全备份及完全备份之后所有的增量才能恢复。MySQL没有提供直接的增量备份方法,但是可以通过mysql二进制日志间接实现增量备份

Jordan_Kobe的博客 3704

Mysql 全量增量备份教程及脚本(一)

Mysql 全量增量备份教程及脚本(一)

yhl18931306541的博客 2937

mysql全量备份增量备份方法

否则会报:Warning: Using a password on the command line interface can be insecure.定时备份使用linux的 crontab 定时执行任务脚本。mysql增量备份需要结合binlog来执行。使用mysqldump 进行全量备份

weixin_38301116的博客 2515

mysql数据库(完全备份增量备份,差异备份

开启MySQL服务器的二进制日志功能。对数据库进行完全备份

m0_64505752的博客 3382

ASAnywhere8 Adaptive Server Anywhere 8

ASAnywhere8 Adaptive Server Anywhere

上一篇: Hive调用python脚本实现数据清洗、统计过程
下一篇: 浅谈数据仓库的核心概念
isyslab
博客等级 码龄9年 14粉丝 8原创
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值