MySQL-使用Percona进行备份与恢复

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL 使用Percona进行备份与恢复


一、安装Percona

1.1. 安装依赖包

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
1.2. Percona官网下载软件并安装

二、Percona介绍

Percona是物理备份工具,拷贝数据文件,比mysqldump快很多;原生态支持全备和增量。

2.1 InooDB表:

热备份:业务正常发生的时候可以进行备份,影响比较小的备份方式;

    1. checkpoint:将已提交数据页刷新到磁盘,会记录一个LSN号;

    2. 拷贝InnoDB表相关的文件(ibdata,frm,ibd);

    3. 如果备份期间产生的新的数据变化,redo也会备份走。

2.2 非InnoDB表:

温备份:锁表备份(全局锁)。

    1. FTWRL,触发全局锁;

    2. 拷贝非InnoDB的数据;

    3. 解锁;

2.3 统计LSN号码,写入到专用文件,记录二进制日志位置进行保存。

2.4 所有的备份文件统一存放在一个目录下

三、 XBK应用-全备和恢复

3.1 前提

1. 数据库必须启动;

2. 能连上数据库;

        配置文件my.cnf中指定socket,需要在配置文件中加入,    

[client]
socket=/tmp/mysql.sock

3. 默认会读取[mysqld]----> datadir= xxxxxxx

4. 服务器端工具,不能远程备份;

3.2 使用-全备

innobackupex --user=root --password=123 /data/xbk

innobackupex --user=root --password=123 --no-timestamp /data/xbk/full_'date +%F' ##控制输出文件夹名字

3.3 备份结果查看

需要着重关注:
  1. xtrabackup_binlog_info(记录备份后binlog为位置信息,方便做binglog截取位置点),

    1. xtrabackup_checkpoints(备份过程中的LSN记录,方便做增量备份)

3.4 全备恢复演练

1. 破坏

pkill mysqld
rm -rf /data/3306/* #破坏

2. 备份处理:

    prepare(在恢复之前都要进行prepare, 原理:redo前滚,undo后滚,模仿CSR(自动故障恢复)过程,)

innobakupex --apply-log /data/xbk/full_2021-03-31/

3. 数据恢复:

cp -a /data/xbk/full_2021-03-31/* /data/3306/

4. 授权:

chown -R mysql.mysql /data/*

5. 启动数据库

/etc/init.d/mysqld start

四、 xbk的增量备份

4.1 说明:

备份时:

    1. 增量必须依赖全备;

    2. 每次增量都要参照上次备份的LSN号码,在此基础上变化的数据页,备份走;并且,会将备份过程中产生新的变化的redo一并备份走。

恢复时:

     需要将所有需要的INC备份(增量备份)按顺序合并到全备中,并且需要将每个备份进行prepare 

4.2 增量备份演练

1. 创建环境

create database xbk charset unf8mb4;
use xbk;
create table t1(id int);
insert into t1 values(1),(2),(3);
commit;
4.2 模拟周日全备

innobackupex --user=root -password=123 --no-timestamp /data/backup/full
4.3 模拟周一的数据变化

use xbk;
create table t2(id int);
insert into t2 values(1),(2),(3);
commit;
4.4 模拟周一晚上增量备份inc1

innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/data/backup/full /data/back/inc1
参数:

--incremental: 增量备份开关;

--incremental-basedir: 增量备份基目录,上次备份的路径;

4.5 模拟周二的数据变化

use xbk;
create table t3(id, int);
insert into t3 values(1),(2),(3);
commit;
4.6 模拟周二晚上增量备份inc2

innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/data/backup/inc1 /data/back/inc2
4.7 模拟周三数据变化

use xbk;
create table t4(id, int);
insert into t4 values(1),(2),(3);
commit;
4.8 周三10点搞破坏

pkill mysqld
rm -rf /data/3306/*
4.9 确认备份完整性

检查checkpoint,增量备份的from_lsn= 基文件的last_lsn- 9(内置原因);则说明是完整的。

4.10 xbk full+ inc+ binlog备份恢复

    a. 恢复思路

     ​1.合并整理(prepare)所有inc备份到全备,

     ​2.恢复数据,启动数据库,

     ​3.截取而二进制日志,

     ​4.恢复日志;

​    ​b. 恢复过程

​1. 合并,prepare所有inc备份到全备

innobackupex --apply-log --redo-only /data/backup/full #基础全备的整理,
​2. 合并,prepare inc2到full

innobackupex --apply-log --redo-only --incremental-dir=/data/backup/inc1 /data/backup/full
​3. 合并,prepare inc2到full,检查checkpoint是否对的上

innobackupex --apply-log --incremental-dir=/data/backup/inc2 /data/backup/full
​4. 整体再整理一次(prepare)

innobackupex --apply-log /data/backup/full
​5. 恢复1:修改mysql 数据路径 -修复数据至周二晚上

chown -R mysql.mysql /data/backup/full #
更改配置文件my.cnf中data路径 datadir=/data/backup/full

重启数据库

​6. 截取日志恢复

起点:/data/backup/inc2/xtrabackup_binlog_info

终点:文件末尾

mysqlbinlog --skip-gtids --start-position=1629 /data/binlog/mysql-bin.000020 /data/binlog/mysql-bin.000021> tmp/bin.sql

  1. 恢复截取文件

mysql -uroot -p
set sql_log_bin=0;
source tmp/bin.sql;
set sql_log_bin=1;

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
关系型数据库 MySQL 数据库
rds备份与恢复
rds备份与恢复
57 3
|
2月前
|
SQL 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
197 7
|
17天前
|
SQL 存储 关系型数据库
mysql数据库备份与恢复
mysql数据库备份与恢复
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下定时备份mysql数据库
Linux环境下定时备份mysql数据库
|
2月前
|
存储 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
22 7
|
2月前
|
监控 容灾 安全
规划阿里云RDS跨区迁移并构建容灾与备份策略
规划阿里云RDS(Relational Database Service)跨区迁移并构建容灾与备份策略
114 2
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表11、日志和备份——1、查看日志——2、数据备份和恢复(mysqldump, mysqlbinlog)
MySQL技能完整学习列表11、日志和备份——1、查看日志——2、数据备份和恢复(mysqldump, mysqlbinlog)
45 0
|
2月前
|
SQL 关系型数据库 MySQL
centos实现mysql定时备份(单机)
centos实现mysql定时备份(单机)
75 0
|
2月前
|
关系型数据库 API 数据库
rds备份与恢复
rds备份与恢复
83 4
|
2月前
|
SQL 存储 关系型数据库
"三高"Mysql - Mysql备份概览
"三高"Mysql - Mysql备份概览
42 0