MySQL数据库:掌握备份与恢复的艺术,确保数据安全无忧

news2024/12/26 17:21:02

  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-CSDN博客

目录

前言:

正文:

一.日志

1.binlog如何开启?

2.二进制日志清理

2.1 自动

2.2 手工

3. 日志如何滚动

flush logs;

slow:

二.备份恢复

1. 在备份恢复中的职责

1.1  备份策略的设计

(1) 备份周期:

(2)备份工具:

(3)备份方式:

逻辑:

物理备份:

1.2 检查备份可用性

1.3 定期的恢复演练

1.4 数据恢复

1.5 数据迁移   ***

2. 备份的介绍

2.1 备份的策略:

2.2 备份的工具

2.3 备份类型

3. mysqldump  

3.1 连接数据库

3.2 基础备份参数

-A 全库(等于 --all-databases)

-B 单库或多个单库

库 表

3.3 特殊备份参数

4. 恢复案例

4.1 背景环境:

4.2 备份策略:

4.3 故障时间点:

4.4 思路:

4.5 故障模拟演练

4.5.1 准备数据

4.5.2 周二 23:00全备

4.5.3 模拟周二 23:00到周三 10点之间数据变化

4.5.4 模拟故障,删除表(只是模拟,不代表生产操作)

4.6 恢复过程

4.6.1 准备临时数据库(多实例3307)

4.6.2 准备备份

(1)准备全备:

(2)截取二进制日志

4.6.4 将临时库导出并恢复到生产

三.分库分表备份脚本:

扩展参数  ***

物理备份-XBK

1.安装依赖包:

2.下载软件并安装

3.innobackupex 使用

3.1 备份核心理念

3.2备份过程

(1) 全备

(2) 利用全备进行恢复


前言:

在数字化时代,数据已成为企业最宝贵的资产之一。无论是初创公司还是行业巨头,数据的完整性和可用性都是其业务运营和决策制定的基石。MySQL,作为世界上最流行的开源关系型数据库管理系统之一,广泛应用于各类网站、应用及企业系统中,承载着海量的数据信息。

然而,随着数据量的不断膨胀和网络环境的日益复杂,数据面临的威胁也日益增多。硬件故障、软件漏洞、人为错误、甚至是自然灾害,都可能瞬间导致数据丢失或损坏,给企业带来无法估量的损失。因此,如何确保MySQL数据库中数据的安全性、完整性和可恢复性,成为了每一个数据库管理员和IT运维人员必须面对的重要课题。

备份,作为数据保护的基本手段,其重要性不言而喻。通过定期或实时的数据备份,我们可以将数据存储在安全的位置,以便在遭遇数据丢失或损坏时能够迅速恢复,从而最大限度地减少业务中断和数据损失。而恢复,则是备份工作的延伸和最终目的,它要求我们在需要时能够高效、准确地从备份中恢复数据,确保业务能够迅速恢复正常。

本章将深入探讨MySQL数据库的备份与恢复技术,从基础概念到高级实践,全面解析不同类型的备份方法、备份工具的使用、备份策略的制定、以及数据恢复的流程和技巧。我们旨在通过丰富的实例和详细的步骤指导,帮助读者掌握MySQL数据库备份恢复的精髓,提升数据保护能力,确保数据安全无忧。


正文:

一.日志

1.binlog如何开启?

log_bin=/data/binlog/mysql-bin

binlog_format=row                                    ******

RBR 行级

SBR 语句,可能会出现恢复歧义

sync_binlog=1  每次事务提交都立即刷写binlog到磁盘    ******

show  master status ;

show binlog events in 'master-bin.000004';

非GTID

mysqlbinlog  --start-position   --stop-position

--base64-output=decode-rows    -vvv   (--help可以查到)

GTID :全局事务标识符

 show variables like '%gtid%';

 mysqlbinlog --help |grep gtid

  --skip-gtids        

  --include-gtids=''

  --exclude-gtids=''



set sql_log_bin=0;

source ..

set sql_log_bin=1;

2.二进制日志清理

2.1 自动

expire_logs_days=15

设置的依据: 至少1轮全备周期长度的过期时间.

2.2 手工

help purge

PURGE BINARY LOGS TO 'mysql-bin.000010';

PURGE BINARY LOGS BEFORE '2020-04-02 22:46:26';

reset master ;   #清空所有二进制日志,主从结构不建议执行,单服务器可以

3. 日志如何滚动

flush logs;

数据库重启

slow:

show variables like 'slow_query_log%';

show variables like 'long%';

show variables like '%using_indexes%';

mysqldumpslow -s c -t 10 slow.log

pt-query-digest slow.log


二.备份恢复

1. 在备份恢复中的职责

1.1  备份策略的设计

(1) 备份周期:

根据数据量.

(2)备份工具:

mysqldump (MDP) , XBK (PBK) percona Xtrabackup  ,  MEB(MySQL Enterprise BACKUP  MEB) ,mysqlbinlog

(3)备份方式:
逻辑:

全备   mysqldump

增量   binlog (flush logs ,cp)

物理备份:

全备 : XBK

增量 : XBK

1.2 检查备份可用性

crontab -l ----->

备份脚本   ----->

备份路径  ----->

看备份日志,检查备份文件(大小,内容)

1.3 定期的恢复演练

开启测试环境,还原数据库,连接前台业务。

1.4 数据恢复

只要备份和日志是完整的,恢复到故障之前的时间点(快速)

1.5 数据迁移   ***

操作系统不同的迁移

mysql   ->  mysql

其他    ->  mysql

mysql   ->   其他

2. 备份的介绍

2.1 备份的策略:

按数据量(50-80G),小数据量每天全备;大数据量(1T以上),周日全备,其余增备。

2.2 备份的工具

mysqldump  xtrabackup

2.3 备份类型

热备 : 对于业务影响最小   InnoDB

温备 : 长时间锁表备份     MyISAM

冷备 : 业务关闭情况下备份

3. mysqldump  

3.1 连接数据库

-u 用户

-p 密码

-S 安全套接字

-h 主机

-P 端口号

3.2 基础备份参数

-A 全库(等于 --all-databases)
mysqldump -uroot -p123 -A  >/backup/full.sql

-B 单库或多个单库
 mysqldump -uroot -p123 -B world  wordpress >/backup/db.sql

库 表
 mysqldump -uroot -p123 world city country > /backup/tab.sql

3.3 特殊备份参数

-R 存储过程和函数

-E 事件

--triggers 触发器

--master-data=2     *****

(值为1:change master to 语句可以被slave直接执行;值为2:change master会被注释)

--single-transaction *****

对于InnoDB的表,进行一致性快照备份,不锁表;

不加本参数,执行温备份

4. 恢复案例

4.1 背景环境:

正在运行的网站系统,mysql-5.7.20 数据库,数据量50G,日业务增量3-10M。

4.2 备份策略:

每天23:00点,计划任务调用mysqldump执行全备脚本

4.3 故障时间点:

年底故障演练:模拟周三上午10点误删除数据库.

4.4 思路:

1、停业务,挂维护页,避免数据的二次伤害

2、找一个临时库,恢复周二23:00全备

3、截取周二23:00  --- 周三10点误删除之间的binlog,恢复到临时库

4、测试可用性和完整性

5、

    5.1 方法一:直接使用临时库顶替原生产库,前端应用割接到新库

    5.2 方法二:将误删除的表导出,导入到原生产库

6、开启业务

处理结果:经过20分钟的处理,最终业务恢复正常

4.5 故障模拟演练

4.5.1 准备数据
create database backup;

use backup

create table t1 (id int);

insert into t1 values(1),(2),(3);

commit;
4.5.2 周二 23:00全备
mysqldump -uroot -A  -R  --triggers --set-gtid-purged=OFF --master-data=2  --single-transaction > /backup/full_$(date +%F).sql
4.5.3 模拟周二 23:00到周三 10点之间数据变化
use backup

insert into t1 values(11),(22),(33);

commit;

create table t2 (id int);

insert into t2 values(11),(22),(33);

commit;
4.5.4 模拟故障,删除表(只是模拟,不代表生产操作)
drop database backup;

4.6 恢复过程

4.6.1 准备临时数据库(多实例3307)
systemctl start mysqld3307
4.6.2 准备备份
(1)准备全备:
cd /backup

ls

full_2021-05-31.sql
(2)截取二进制日志
mysql
show binlog events in 'mysql-bin.000001';
mysqlbinlog --skip-gtids --include-gtids='820f8917-d358-11ec-b243-000c29cbdce4:4-6' mysql-bin.000001 > /tmp/a.sql
4.6.4 将临时库导出并恢复到生产
mysqldump   -S /data/3307/mysql.sock -B  backup  >/backup/bak.sql
mysql 
set sql_log_bin=0

source /backup/bak.sql;


set sql_log_bin=1

三.分库分表备份脚本:

vim for1.sh 
#!/bin/bash

db=$(mysql -uroot -p123 -e "show databases;"|sed 1d|grep -Ev ".*_schema|sys|mysql")



for dbname in $db

do

backdir=/backup/mysql/$dbname

if [ ! -d $backdir ];then

mkdir -p $backdir

fi

mysqldump -uroot -p123  -B $dbname > $backdir/${dbname}_db_$(date +%F).sql

echo "$dbname 数据库已经备份完成"



table=$(mysql -uroot -p123 -e "use ${dbname};show tables;"|sed 1d)

for tablename in $table

do

mysqldump -uroot -p123 $dbname $tablename > $backdir/${dbname}_${tablename}_table_$(date +%F).sql

echo "$dbname 库的 $tablename 表 已经备份成功"

done

扩展参数  ***

在构建主从时,使用AUTO/ON

--set-gtid-purged=AUTO/ON

仅是做普通的本机备份恢复时,可以添加

--set-gtid-purged=OFF  

SET @@GLOBAL.GTID_PURGED='aa648280-a6a6-11e9-949f-000c294a1b3b:1-11';

--max_allowed_packet=128M  控制的是备份时传输数据包的大小.(默认max_allowed_packet变量为16MB)

mysqldump -uroot -A  -R  --max_allowed_packet=128M --triggers --set-gtid-purged=OFF --master-data=2  --single-transaction|gzip > /backup/full_$(date +%F).sql.gz

物理备份-XBK

1.安装依赖包:

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install perl perl-devel perl-Digest libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev

2.下载软件并安装

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm



yum -y localinstall percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm



yum -y localinstall percona-toolkit-3.3.0-1.el7.x86_64.rpm

3.innobackupex 使用

3.1 备份核心理念

  1. 针对非InnoDB,进行锁表备份,copy所有的非innoDB表文件

  2. 针对InnoDB表,立即触发CKPT,copy所有InnoDB表相关的文件(ibdata1,ibd,frm).

并且将备份过程中产生,新的数据变化的部分redo一起备份走

  3. 在恢复时,xbk会调用InnoDB引擎的CSR过程,将数据和redo的LSN追平,然后进行一致性恢复.

3.2备份过程

前提:起日志和gtid

(1) 全备
innobackupex  --user=root  -S /tmp/mysql.sock --no-timestamp /backup/full
(2) 利用全备进行恢复
pkill mysqld

rm -rf /usr/local/mysql/data/*

innobackupex --apply-log /backup/full/

cp -a /backup/full/* /usr/local/mysql/data

chown -R mysql.mysql /usr/local/mysql/*

/etc/init.d/mysqld start

期待您的关注~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2143651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

波导阵列天线学习笔记 馈电网络1 使用X型全公共波导馈网的毫米波大规模天线阵列的带宽提升

摘要: 全公共波导馈网的一次反射等效模型被研究用于提出一种毫米波大规模天线阵列带宽提升的新方法。理论分析显示由馈电网络拓扑造成的指定频率的多级小反射的同相叠加现象是影响大规模阵列的可实现带宽的重要因素,除了包含阵列的独立功分器和反射器的带…

【Hot100】LeetCode—295. 数据流的中位数

目录 1- 思路题目识别堆实现 2- 实现⭐4. 寻找两个正序数组的中位数——题解思路 3- ACM 实现 原题链接:295. 数据流的中位数 1- 思路 题目识别 识别1 :实现一个数据结构,求中位数 堆实现 思路 利用优先队列,小根堆放较小的元…

专科医院内外网数据摆渡,什么方法最“对症下药”?

专科医院是专门从事某一个或少数几个医学分科的医院。这些医院在特定的医学领域内具有较高的专业性和技术水平,通常致力于某一类疾病的预防、诊断和治疗。如传染病医院、口腔医院、肿瘤医院等。 根据相关法律法规和行业标准,涉及医疗数据的网络必须采取必…

影刀RPA实战:网页爬虫之携程酒店数据

1.实战目标 大家对于携程并不陌生,我们出行定机票,住酒店,去旅游胜地游玩,都离不开这样一个综合性的网站为我们提供信息,同时,如果你也是做旅游的公司,那携程就是一个业界竞争对手,…

Zookeeper 3.8.4 安装和参数解析

安装 zookeeper 之前必须先安装 JDK,有关Linux环境JDK可以参考我以前写的博文 1、关于Linux服务器配置java环境遇到的问题 2、Linux环境安装openJDK 3、Centos7.3云服务器上安装Nginx、MySQL、JDK、Tomcat环境 文章目录 1. zookeeper 安装2. 参数解析 1. zookeeper …

计算机视觉—3d点云数据基础

点云数据 3d点云数据由来 3d点云 3D Point Cloud是一种用于表示三维空间中对象或场景的数据结构。在最基础的形式中,它是一个包含多个三维坐标点(X, Y, Z)的集合。这些点是通过对实际物体或场景表面进行离散采样而获得的,因此&a…

使用高版本nodej报错:node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found

如果要更新GLIBC_2.27会很繁琐,且耗时较长,所以建议下载带glibc的版本的nodejs 解决方案:下载带glibc的版本安装,如果是使用nvm则解压到对应的版本控制路径 我使用的版本是v20.16.0:Index of /download/release/v20.1…

基于GEE的Landsat 7ETM+条带填补

项目简介 该项目使用Google Earth Engine (GEE)平台,对Landsat 5和Landsat 7卫星影像进行预处理与影像填补操作。主要功能包括影像的选取、波段处理、缺失影像的填补以及最终影像的导出。代码中的核心功能是通过空间回归方法对Landsat 7和Landsat 5影像进行时序配准…

Oracle 19c异常恢复—ORA-01209/ORA-65088---惜分飞

由于raid卡bug故障,导致文件系统异常,从而使得数据库无法正常启动,客户找到我之前已经让多人分析,均未恢复成功,查看alert日志,发现他们恢复的时候尝试resetlogs库,然后报ORA-600 kcbzib_kcrsds_1错误 2024-09-15T17:07:32.55321508:00 alter database open resetlogs 2024-09-…

YOLOv9改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量

一、本文介绍 本文记录的是改进YOLOv9的损失函数,将其替换成Shape-IoU。现有边界框回归方法通常考虑GT(Ground Truth)框与预测框之间的几何关系,通过边界框的相对位置和形状计算损失,但忽略了边界框本身的形状和尺度等…

复习:指针

目录 指针变量 指针变量的内容 引入 指针变量的值 间接访问操作符 概念 运算 基本运算 指针/-整数 指针-指针 引入 算术运算和间接访问操作 自增自减运算符 前置 后置 应用 指针数组 语法 指针数组 数组指针 多级指针 引入 语法 章节问题 指针变量 指针…

Java数据结构(十一)——归并排序、计数排序

文章目录 归并排序算法介绍代码实现非递归实现复杂度和稳定性 计数排序算法介绍代码实现复杂度和稳定性 归并排序 算法介绍 归并排序是一种分而治之的排序算法。基本思想是: 将一个数组分成两半,对每半部分递归地应用归并排序先进行分解,然…

数据权限的设计与实现系列9——前端筛选器组件Everright-filter集成框架开发2

功能实现 ‍ 规则转换为 SQL 片段‍ 规则解析 首先我们来构造一个典型的规则,包括两个条件组,每个组由两个条件组成,由且与或两种逻辑关系,如下图: 然后看看生成的规则,如下: {"filt…

spring中对于servlet API的封装---springWeb

目录 一.springweb概述 二.springweb的特点 三.springweb的运行流程 四.springweb组件 五.springweb的搭建 1.导包 2.配置 DispatcherServlet 3.开启 springweb 注解 4.处理器的搭建 六.springweb注解 七.springweb拦截器 1.拦截器概述 2.拦截器的实现 (1)添加 servelt api 依赖…

开源 AI 智能名片链动 2+1 模式 O2O 商城小程序在社群活动中的应用与时机选择

摘要:本文探讨了开源 AI 智能名片链动 21 模式 O2O 商城小程序在社群经济中的重要性,着重分析了如何借助该小程序适时举办大型活动以维持和引爆社群活跃度。通过对活动时机选择的研究,强调了针对社群用户量身定制活动时机的必要性&#xff0c…

基于python+django+vue的外卖管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的外…

C/C++笔记

C/CPP笔记 杂记 struct msg_train和typedef struct msg_train 大小不一样 cstdio和stdio #include <stdio.h>int main() {printf("Hello, World!\n");return 0; } #include <cstdio>int main() {std::printf("Hello, World!\n");return 0; } 命…

20个Python入门基础语法要点

今天&#xff0c;我们将聚焦于Python的20个基础语法要点&#xff0c;让你的编程之旅更加顺畅。 第一部分&#xff1a;环境搭建与基本概念 1. Hello, World! 你的第一行代码&#xff1a;这是编程旅程的传统起点。 这行代码告诉Python显示文本&#xff0c;print是关键函数&…

常耀斌:AI赋能企业数字化转型(清华社发行)

新书地址&#xff1a; 清华出版社&#xff1a;清华大学出版社-图书详情-《AI赋能企业数字化转型》 京东&#xff1a;《AI赋能企业数字化转型 常耀斌 清华大学出版社 9787302669081》【摘要 书评 试读】- 京东图书 内容简介&#xff1a; 在数字经济时代&#xff0c;企业发…

曲线图如何绘制美观,曲线图10种美化方法

曲线图是比较常用的图形&#xff0c;本文以二维曲线图为例&#xff0c;展示曲线的图的不同美化方法&#xff0c;如图1所示&#xff0c;是一个标准的曲线图&#xff0c;横坐标为x&#xff0c;纵坐标为y, 图1 标准曲线图 调整方法1 首先可以通过改变线的颜色&#xff0c;不同…