当前位置:   article > 正文

MySQL备份一-percona-xtrabackup(2024.1.2更新)_percona xtrabackup备份mysql数据库

percona xtrabackup备份mysql数据库

关于备份:我们为什么要进行数据备份,第一是为了防止系统崩溃及不可抗力因素造成的服务器损坏造成数据丢失,第二是为了人为误操作的数据删除。

备份目标:保证数据的一致性、保证服务的可用性

一、备份技术

1.1 物理备份

物理备份是冷备份,直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。使用tar,cp,scp拷贝数据,  优点快,缺点服务停止。

1.2 逻辑备份

备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库。mysqldump,mydumper,效率相对较低

二、备份种类

2.1 完全备份。

备份全部字符集。

2.2 增量备份。

上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。

2.3 差异备份。

上次完全备份以来改变了的数据。特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。

三、实战案例

3.1 案例一

percona-xtrabackup
它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务创建Innodb热备份;
为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。percona是一家老牌的mysql技术咨询公司。它不仅提供mysql的技术支持、培训、咨询,还发布了mysql的分支版本--percona Server。并围绕percona Server还发布了一系列的mysql工具。 

官方地址:官方地址

3.1.1 安装percona需要的mysql包

mysql官方源:

yum install -y  https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

安装yum工具

yum install -y yum-utils

查看mysql可用版本

yum repolist all | grep mysql

禁用80,启用57

  1. yum-config-manager --disable mysql80-community
  2. yum-config-manager --enable mysql57-community
  3. yum install mysql-community-libs-compat -y
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

3.1.2 YUM安装percona-xtrabackup

yum -y install percona-xtrabackup-24.x86_64

查询安装结果

rpm -ql percona-xtrabackup-24 

3.1.3 完全备份流程

二进制日志开启看MySQL语言三-DCL-CSDN博客2.3 Binary Log

innobackupex --user=root --password='Aa.123456' /xtrabackup/full

请注意备份结果是否完成

 查看备份目录。数据库,配置文件,日志文件

ls /xtrabackup/full

查看二进制日志位置

ls /xtrabackup/full/2023-12-31_20-25-53

3.1.4 完全备份恢复流程

停止数据库,清理环境(模拟损坏)

  1. systemctl stop mysqld
  2. rm -rf /var/lib/mysql/*
  3. rm -rf /var/log/mysqld.log

生成回滚日志

innobackupex --apply-log /xtrabackup/full/2023-12-31_20-25-53

恢复文件

innobackupex --copy-back /xtrabackup/full/2017-08-01_00-00-18/

登录验证

  1. ls /var/lib/mysql
  2. chown -R mysql.mysql /var/lib/mysql
  3. systemctl start mysqld
  4. mysql -uroot -p'Aa.123456'

3.1.4 增量备份流程

准备工作,创建一个数据库

  1. create database testdb;
  2. use testdb;
  3. create table test(id int);
  4. insert into test values (1);
  5. select * from test;

 

完整备份:周一

innobackupex --user=root --password='Aa.123456' /xtrabackup

 查看备份数据

ll /xtrabackup/

增量备份:周二

  1. date 01030000 #手动更新时间
  2. mysql -uroot -p'QianFeng@123' -e 'insert into testdb.test values (2)' #免交互插入数据

基于周一的备份生成一个周二的备份

  1. innobackupex --user=root --password='Aa.123456' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2024-01-02_20-57-16
  2. ls /xtrabackup/

增量备份:周三

  1. date 01040000
  2. mysql -uroot -p'Aa.123456' -e 'insert into testdb.test values (3)'
  3. innobackupex --user=root --password='Aa.123456' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2024-01-03_00-02-27

周四到周日依次类推

3.1.5 增量备份恢复流程

停用数据库,清理数据模拟损坏

  1. systemctl stop mysqld
  2. rm -rf /var/lib/mysql/*

回滚合并

innobackupex --apply-log --redo-only /xtrabackup/2024-01-02_20-57-16

周二

  1. innobackupex --apply-log --redo-only /xtrabackup/2024-01-02_20-57-16
  2. --incremental-dir=/xtrabackup/2024-01-03_00-02-27

周三

  1. innobackupex --apply-log --redo-only /xtrabackup/2024-01-02_20-57-16
  2. --incremental-dir=/xtrabackup/2024-01-04_00-02-45

后面的依次类推,将后面的增量备份合并到周一的完整备份中

恢复日志

  1. innobackupex --copy-back /xtrabackup/2024-01-02_20-57-16
  2. chown -R mysql.mysql /var/lib/mysql
  3. systemctl start mysqld

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/728796
推荐阅读
相关标签
  

闽ICP备14008679号