MySQL备份和恢复(一)综述

目录

一、备份分类:

1、物理备份

1.1、介绍

1.2、方法

2、逻辑备份

二、备份策略

1、完全备份(全量备份):

2、差异备份:

3、增量备份:

3.1、增量备份产生的原因

3.2、增量备份的方法

3.3、增量备份的策略

三、常见的备份方法

1、物理冷备(完全备份)

1.1、特点

1.2、步骤

2、专用备份工具mydump或mysqlhotcopy (完全备份,逻辑备份)

3、启用二进制日志进行增量备份 

4、第三方工具备份

四、完全恢复加增量恢复组合

1、优势:

2、步骤demo:

2.1、编写增量备份脚本

2.2、编写完全备份脚本 

2.3、将两个编写的脚本添加到计划性任务中


一、备份分类:

1、物理备份
1.1、介绍

对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。

1.2、方法

(1)冷备份(脱机备份) :是在关闭数据库的时候进行的

(2)热备份(联机备份) :数据库处于运行状态,依赖于数据库的日志文件

(3)温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作

2、逻辑备份

对数据库逻辑组件(如:表等数据库对象)的备份,即以sql语句的形式,把库、表结构、表数据保存下来。

二、备份策略

1、完全备份(全量备份):

每次对数据库进行完整的备份。

2、差异备份

备份自从上次完全备份之后被修改过的文件。

3、增量备份

只有在上次完全备份或者增量备份后被修改的文件才会被备份。

3.1、增量备份产生的原因

(1)全量备份中备份数据中有重复数据

(2)全量备份 备份时间与恢复时间过长

3.2、增量备份的方法

MySQL没有提供直接的增量备份方法,可通过MySQL提供的二进制日志间接实现增量备份。

3.3、增量备份的策略

(1)一般恢复:所有备份的二进制日志内容全部恢复

(2)基于位置恢复:数据库在某一时间点可能既有错误的操作也有正确的操作,可以基于精准的位置跳过错误的操作;

(3)基于时间点恢复:跳过某个发生错误的时间点实现数据恢复。

三、常见的备份方法

1、物理冷备完全备份
1.1、特点

优点:备份时数据库处于关闭状态,直接打包数据库文件;备份速度快,恢复时也是最简单的;

缺点:数据存在大量的重复;占用大量的备份空间;备份与恢复时间长。

1.2、步骤

(1)关闭MySQL数据库

 systemctl stop mysqld         #先关闭服务
 mkdir /backup/                #创建备份目录

(2)使用tar命令直接打包数据库文件夹

 rpm -q xz                     #使用xz工具进行压缩,检查xz工具是否已安装
 yum install xz -y             #如果没安装,可以先yum安装
  cd  /usr/local/mysql/
 tar Jcf /backup/mysql_all_$(date +%F).tar.xz data  #打包数据库文件。/usr/local/mysql/data 为数据库文件存放目录

(3)直接替换现有MySQL目录即可

cd /backup/
tar Jxf mysql_all_2022-10-25.tar.xz -C /opt/
mv  /opt/data/  /usr/local/mysql/
2、专用备份工具mydump或mysqlhotcopy (完全备份,逻辑备份)

见下一篇MySQL备份和恢复(二)mysqldump-CSDN博客

3、启用二进制日志进行增量备份 

进行增量备份,需要刷新二进制日志,见mysql-binlog(三)binlog用于数据恢复_mysqlbinlog通过 position 恢复3-CSDN博客

4、第三方工具备份

(1)免费的MySQL热备份软件Percona XtraBackup

(2)mysqldump常用的逻辑备份工具 (导出为sql脚本)

(3)mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

四、完全恢复加增量恢复组合

1、优势:

完全备份和不完全备份都各有各的优点,公司对数据库备份大部分会采用的方式为完全备份+增量备份 。完全备份:磁盘占用大,但是操作简便不易出错 ;增量备份:磁盘占用小,可针对短时间的备份,但是一旦全有增量备份组成的备份,操作难度会大大提高,易出错。

2、步骤demo:

如对核心t_user表进行备份,要求每周二凌晨两点半(维护时间)进行一次完全备份,每天的凌晨一点对其进行增量备份。

2.1、编写增量备份脚本
#!/bin/bash
logs_path="/opt/sql_bak"
[ -d $logs_path ] || mkdir -p $logs_path
/usr/local/mysql/bin/mysqladmin  -u root -wtyy flush-logs
lastlogs=`sed -n '$p' /usr/local/mysql/data/mysql-bin.index | awk -F '/' '{print $2}'`
mv /usr/local/mysql/data/$lastlogs    /opt/sql_bak/binlog_`date +%Y%m%d`

MySQL备份和恢复(一)综述_第1张图片

2.2、编写完全备份脚本 
#!/bin/bash
home_path="/opt/sql_bak/backup_sql"
[ -d $home_path  ] || mkdir -p /opt/sql_bak/backup_sql
/usr/local/mysql/bin/mysqldump -u root -wtyy test t_user> /$home_path/infos_$(date +%Y%m%d).sql
/usr/local/mysql/bin/mysqldump -u root -wtyy --databases test > /$home_path/tests_$(date +%Y%m%d).sql

MySQL备份和恢复(一)综述_第2张图片

2.3、将两个编写的脚本添加到计划性任务中
crontab -e
00 1 * * * /opt/addbak.sh
30 2 * * 2 /opt/backup.sh

你可能感兴趣的:(关系型数据库MySQL,mysql,数据库)