1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 数据库MySQL(四)数据库备份 完整备份 增量备份 差异备份

数据库MySQL(四)数据库备份 完整备份 增量备份 差异备份

时间:2019-07-02 07:06:20

相关推荐

数据库MySQL(四)数据库备份 完整备份 增量备份 差异备份

目录

一、关于备份

1、备份原因和目标

2、备份技术

3、备份方式:完全备份、增量备份、差异备份

二、percona-xtrabackup

1、简介

2、获得软件包

3、安装

4、完全备份

5、增量备份

6、差异备份

一、关于备份

1、备份原因和目标

备份原因:丢、删

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

2、备份技术

物理备份/冷备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL。tar,cp,scp

逻辑备份/热备份:备份是建表、建库、插入等操作所执行的SQL语句(DDL DML DCL),适用于中小型数据库。mysqldump,mydumper

3、备份方式:完全备份、增量备份、差异备份

完全备份:

每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。

增量备份

只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化,因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起到最后一次增量备份依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。

差异备份

备份那些自从上次完全备份之后被修改过的所有文件,备份的时间起点是从上次完整备份起,备份数据量越来越大。恢复数据时,只需恢复上次的完全备份与最近的一次差异备份。

二、percona-xtrabackup

1、简介

它是开源免费的支持MySQL数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务创建Innodb热备份;为mysql做增量备;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。

percona是一家老牌的mysql技术咨询公司。它不仅提供mysql的技术支持、培训、咨询,还发布了mysq的分支版本﹣perconaServer。并围绕perconaServer还发布了一系列的mysql工具。

2、获得软件包

官方站点:https:

选择版本

3、安装

安装yum仓库

[root@localhost ~]# yum install /yum/percona-release-latest.noarch.rpm

YUM安装percona-xtrabackup

[root@localhost ~]# ls /etc/yum.repos.d/ CentOS-Base.repomysql-community-source.repoepel.repo percona-original-release.repomysql-community-debuginfo.repo percona-prel-release.repomysql-community.repo//这里看一下percona-xtrabackup的安装包有什么版本[root@localhost ~]# yum list | grep percona-xtrabackuppercona-xtrabackup.x86_642.3.10-1.el7 percona-release-x86_64percona-xtrabackup-22.x86_64 2.2.13-1.el7 percona-release-x86_64percona-xtrabackup-22-debuginfo.x86_64 2.2.13-1.el7 percona-release-x86_64percona-xtrabackup-24.x86_64 2.4.26-1.el7 percona-release-x86_64percona-xtrabackup-24-debuginfo.x86_64 2.4.26-1.el7 percona-release-x86_64percona-xtrabackup-80.x86_64 8.0.29-22.1.el7percona-release-x86_64percona-xtrabackup-80-debuginfo.x86_64 8.0.29-22.1.el7percona-release-x86_64percona-xtrabackup-debuginfo.x86_642.3.10-1.el7 percona-release-x86_64percona-xtrabackup-test.x86_64 2.3.10-1.el7 percona-release-x86_64percona-xtrabackup-test-22.x86_64 2.2.13-1.el7 percona-release-x86_64percona-xtrabackup-test-24.x86_64 2.4.26-1.el7 percona-release-x86_64percona-xtrabackup-test-80.x86_64 8.0.29-22.1.el7percona-release-x86_64//这里我数据库的版本是57的[root@localhost ~]# yum install -y percona-xtrabackup-24.x86_64[root@localhost ~]# yum list | grep percona-xtrabackup //看一下安装是否成功,有@就是已经安装了percona-xtrabackup-24.x86_64 2.4.26-1.el7 @percona-release-x86_64

percona-xtrbackup安装成功之后就是备份啦

4、完全备份

完全备份流程

innobackupex --user=root --password='Qian@123' /xtrabackup/full //把备份点数据放在/xtrabackup/full目录下ls /xtrabackup/full/ //查看备份目录,数据库,配置文件,日志文件-10-12_09-07-58(这个是我们备份的时间)[root@localhost ~]# cd /xtrabackup/full/-10-12_09-07-58/[root@localhost -10-12_09-07-58]# ls(可以看到我们备份的内容都在这了,可以提前看一下数据库的内容,是否和我们备份的内容一样,以免有些内容备份失败)backup-f ibdata1 sys xtrabackup_infohhh mysqltest1 xtrabackup_logfileib_buffer_pool performance_schema xtrabackup_checkpointscat /xtrabackup/full/-10-09_16-02-34/xtrabackup_binlog_info //查看二进制日志位置//这里要开启binlog才能看得见,登录数据库,看一下binlog开了没有,OFF就是没开mysql> show variables like 'log_bin';+---------------+-------+| Variable_name | Value |+---------------+-------+| log_bin | OFF |+---------------+-------+1 row in set (0.01 sec)//去/etc/f里面开启二进制

完全恢复流程

systemctl stop mysqld //停止数据库rm -rf /var/lib/mysql/* //清理环境(模拟损坏)rm -rf /var/log/mysqld.loginnobackupex --apply-log /xtrabackup/full/-10-09_16-02-34/ //生成回滚日志,指定备份点innobackupex --copy-back /xtrabackup/full/-10-09_16-02-34/ //恢复文件//登录验证[root@localhost ~]# ls -l /var/lib/mysql/total 122920drwxr-x---. 2 root root 20 Oct 12 09:48 hhh-rw-r-----. 1 root root436 Oct 12 09:48 ib_buffer_pool-rw-r-----. 1 root root 12582912 Oct 12 09:47 ibdata1-rw-r-----. 1 root root 50331648 Oct 12 09:47 ib_logfile0-rw-r-----. 1 root root 50331648 Oct 12 09:47 ib_logfile1-rw-r-----. 1 root root 12582912 Oct 12 09:48 ibtmp1drwxr-x---. 2 root root4096 Oct 12 09:48 mysqldrwxr-x---. 2 root root8192 Oct 12 09:48 performance_schemadrwxr-x---. 2 root root8192 Oct 12 09:48 sysdrwxr-x---. 2 root root 20 Oct 12 09:48 test1-rw-r-----. 1 root root427 Oct 12 09:48 xtrabackup_info-rw-r-----. 1 root root 1 Oct 12 09:48 xtrabackup_master_key_id[root@localhost ~]# chown -R mysql.mysql /var/lib/mysql //修改属主和属组[root@localhost ~]# ls -l /var/lib/mysql/total 122920drwxr-x---. 2 mysql mysql 20 Oct 12 09:48 hhh-rw-r-----. 1 mysql mysql436 Oct 12 09:48 ib_buffer_pool-rw-r-----. 1 mysql mysql 12582912 Oct 12 09:47 ibdata1-rw-r-----. 1 mysql mysql 50331648 Oct 12 09:47 ib_logfile0-rw-r-----. 1 mysql mysql 50331648 Oct 12 09:47 ib_logfile1-rw-r-----. 1 mysql mysql 12582912 Oct 12 09:48 ibtmp1drwxr-x---. 2 mysql mysql4096 Oct 12 09:48 mysqldrwxr-x---. 2 mysql mysql8192 Oct 12 09:48 performance_schemadrwxr-x---. 2 mysql mysql8192 Oct 12 09:48 sysdrwxr-x---. 2 mysql mysql 20 Oct 12 09:48 test1-rw-r-----. 1 mysql mysql427 Oct 12 09:48 xtrabackup_info-rw-r-----. 1 mysql mysql 1 Oct 12 09:48 xtrabackup_master_key_idsystemctl start mysqldmysql -uroot -p'Qian@123'

5、增量备份

增量备份流程

//准备一个数据库,写点内容mysql> create database testdb;Query OK, 1 row affected (0.00 sec)mysql> use testdb;Database changedmysql> create table test(id int);Query OK, 0 rows affected (0.02 sec)mysql> insert into test values(1);Query OK, 1 row affected (0.01 sec)mysql> select * from test;+------+| id |+------+| 1 |+------+1 row in set (0.00 sec)

[root@localhost ~]# rm -rf /xtrabackup/*[root@localhost ~]# date 10110000 //修改一下时间(模拟)[root@localhost ~]# innobackupex --user=root --password='Qian@123' /xtrabackup/ //做一次完整备份[root@localhost ~]# ls /xtrabackup/-10-11_00-00-51[root@localhost ~]# date 10122207 //更新时间[root@localhost ~]# mysql -uroot -p'Qian@123' //更新数据库,再写点内容mysql> insert into testdb.test values (2);Query OK, 1 row affected (0.01 sec)mysql> select * from testdb.test;+------+| id |+------+| 1 || 2 |+------+2 rows in set (0.00 sec)//basedir基于-10-11_00-00-51的备份会生成一个今天的备份[root@localhost ~]# innobackupex --user=root --password='Qian@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/-10-11_00-00-51221012 22:15:19 completed OK! //完成备份[root@localhost ~]# ls /xtrabackup/-10-11_00-00-51 -10-12_22-15-17//下一次的备份就可以基于-10-12_22-15-17的备份来完成备份

增量恢复流程

[root@localhost ~]# systemctl stop mysqld[root@localhost ~]# ls /xtrabackup/-10-11_00-00-51/backup-f ibdata1 sysxtrabackup_checkpointshhh mysqltest1 xtrabackup_infoib_buffer_pool performance_schema testdb xtrabackup_logfile[root@localhost ~]# rm -rf /var/lib/mysql/*//回滚合并,这里只是-10-11_00-00-51的[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/-10-11_00-00-51//回滚合并,这里是-10-12_22-15-17[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/-10-11_00-00-51 --incremental-dir=/xtrabackup/-10-12_22-15-17//恢复备份,这里直接用-10-11_00-00-51,后面的备份已经跟他合并在一起了,直接恢复完整备份就可以了[root@localhost ~]# innobackupex --copy-back /xtrabackup/-10-11_00-00-51/[root@localhost ~]# chown -R mysql.mysql /var/lib/mysql/[root@localhost ~]# ls -l /var/lib/mysql/total 12328drwxr-x---. 2 mysql mysql 20 Oct 12 22:33 hhh-rw-r-----. 1 mysql mysql436 Oct 12 22:33 ib_buffer_pool-rw-r-----. 1 mysql mysql 12582912 Oct 12 22:33 ibdata1drwxr-x---. 2 mysql mysql4096 Oct 12 22:33 mysqldrwxr-x---. 2 mysql mysql8192 Oct 12 22:33 performance_schemadrwxr-x---. 2 mysql mysql8192 Oct 12 22:33 sysdrwxr-x---. 2 mysql mysql 20 Oct 12 22:33 test1drwxr-x---. 2 mysql mysql 52 Oct 12 22:33 testdb-rw-r-----. 1 mysql mysql497 Oct 12 22:33 xtrabackup_info-rw-r-----. 1 mysql mysql 1 Oct 12 22:33 xtrabackup_master_key_id[root@localhost ~]# systemctl start mysqld[root@localhost ~]# mysql -uroot -p'Qian@123' //可以看到数据已经恢复了mysql> select * from testdb.test;+------+| id |+------+| 1 || 2 |+------+2 rows in set (0.01 sec)

6、差异备份

差异备份流程

//更新一下数据库的内容,方便做测试mysql> use testdb;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> create table test2(id int);Query OK, 0 rows affected (0.02 sec)mysql> insert into test2 values(1);Query OK, 1 row affected (0.00 sec)mysql> select * from test2;+------+| id |+------+| 1 |+------+1 row in set (0.00 sec)

//改一下时间,做一下完整备份[root@localhost ~]# date 10090101[root@localhost ~]# innobackupex --user=root --password='Qian@123' /xtrabackup221009 01:01:10 completed OK![root@localhost ~]# ls /xtrabackup/-10-09_01-01-07

//改个时间[root@localhost ~]# date 10100000//在表中再插个数据[root@localhost ~]# mysql -uroot -p'Qian@123' -e 'insert into testdb.test2 values(2)'//备份[root@localhost ~]# innobackupex --user=root --password='Qian@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/-10-09_01-01-07[root@localhost ~]# ls /xtrabackup/-10-09_01-01-07 -10-10_00-06-54[root@localhost ~]# date 10111111[root@localhost ~]# mysql -uroot -p'Qian@123' -e 'insert into testdb.test2 values(3)'[root@localhost ~]# innobackupex --user=root --password='Qian@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/-10-09_01-01-07[root@localhost ~]# ls /xtrabackup/-10-09_01-01-07 -10-10_00-06-54 -10-11_11-13-05

差异恢复流程

[root@localhost ~]# systemctl stop mysqld[root@localhost ~]# rm -rf /var/lib/mysql/*[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/-10-09_01-01-07/221011 11:16:11 completed OK![root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/-10-09_01-01-07 --incremental-dir=/xtrabackup/-10-11_11-13-05[root@localhost ~]# innobackupex --copy-back /xtrabackup/-10-09_01-01-07/[root@localhost ~]# chown -R mysql.mysql /var/lib/mysql[root@localhost ~]# systemctl start mysqld[root@localhost ~]# mysql -uroot -p'Qian@123'mysql> select * from testdb.test2;+------+| id |+------+| 1 || 2 || 3 |+------+3 rows in set (0.02 sec)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。