欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用Xtrabackup对数据库备份和恢复

程序员文章站 2022-08-10 14:07:53
须安装Xtrabackup工具 注:生产环境中还原恢复操作不可直接使用备份源文件,须单独拷贝一份做恢复使用 一、完全备份及还原 1、备份数据库 2、破坏数据库 3、恢复数据库 二、完全、增量备份及还原 1、完全备份数据库 2、对数据库修改并做增量备份 3、破坏数据库 4、恢复数据库 三、单表导出和导 ......

须安装Xtrabackup工具

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

注:生产环境中还原恢复操作不可直接使用备份源文件,须单独拷贝一份做恢复使用

一、完全备份及还原

1、备份数据库

innobackupex --user=root --password=li123456 /backups

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 2、破坏数据库

rm -rf /app/mysqldb/*

使用Xtrabackup对数据库备份和恢复

3、恢复数据库

systemctl stop mysqld  #停止服务
innobackupex --apply-log /backups/2018-03-05_18-11-28/ #对备份进行整理
innobackupex --copy-back /backups/2018-03-05_18-11-28/ #还原数据库,还原前需确认数据库目录为空
chown -R mysql.mysql /app/mysqldb/  #修复属主属组
systemctl start mysqld  #启动服务

 使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 

二、完全、增量备份及还原

 1、完全备份数据库

innobackupex --user=root --password=li123456 /backups/

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 

2、对数据库修改并做增量备份

MariaDB [(none)]> create database ceshi;

使用Xtrabackup对数据库备份和恢复

 

mkdir /backups/inc1    #创建存储第一次增量备份的目录,便于管理
innobackupex --user=root --password=li123456 --incremental /backups/inc1 --incremental-basedir=/backups/2018-03-07_15-23-30

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 

MariaDB [(none)]> drop database test ;

使用Xtrabackup对数据库备份和恢复

 

mkdir /backups/inc2  #创建存储第二次增量备份的目录
innobackupex --user=root --password=li123456 --incremental /backups/inc2 --incremental-basedir=/backups/inc1/2018-03-07_15-42-56

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 

 3、破坏数据库

rm -rf /app/mysqldb/*

4、恢复数据库

systemctl stop mysqld    #停止服务
innobackupex --apply-log --redo-only /backups/2018-03-07_15-23-30/  #对完全备份进行整理
innobackupex --apply-log --redo-only /backups/2018-03-07_15-23-30/ --incremental-dir=/backups/inc1/2018-03-07_15-42-56  #对第一次增量备份进行整理
innobackupex --apply-log --redo-only /backups/2018-03-07_15-23-30/ --incremental-dir=/backups/inc2/2018-03-07_16-00-17  #对第二次增量备份进行整理
innobackupex --copy-back /backups/2018-03-07_15-23-30/  #还原数据库,还原前需确认数据库目录为空
chown -R mysql.mysql /app/mysqldb/  #修复属主属组
systemctl start mysqld  #启动服务

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 

三、单表导出和导入

注:需MySQL 5.6及以上版本才支持此功能

1、单表备份

innobackupex --user=root --password=li123456 --include='reset_gq.wp_users' /backups

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 

2、导出表结构

mysql -uroot -p -e 'show create table reset_gq.wp_users'

使用Xtrabackup对数据库备份和恢复

 

3、删除表

mysql -uroot -p -e 'drop table reset_gq.wp_users'

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复

 

 4、单表恢复

innobackupex --apply-log --export /backups/2018-03-09_12-26-33/

创建表结构

MariaDB [reset_gq]> CREATE TABLE `wp_users` (
-> `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
-> `user_login` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_pass` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_nicename` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_url` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-> `user_activation_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_status` int(11) NOT NULL DEFAULT 0,
-> `display_name` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> PRIMARY KEY (`ID`),
-> KEY `user_login_key` (`user_login`),
-> KEY `user_nicename` (`user_nicename`),
-> KEY `user_email` (`user_email`)
-> ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 

MariaDB [reset_gq]> alter table wp_users discard tablespace;  #删除wp_users表空间

 

cp /backups/2018-03-09_12-26-33/reset_gq/wp_users.{cfg,exp,ibd} /app/mysqldb/reset_gq/

chown -R mysql.mysql /app/mysqldb/reset_gq/

MariaDB [reset_gq]> alter table wp_users import tablespace;  #导入表空间

使用Xtrabackup对数据库备份和恢复

使用Xtrabackup对数据库备份和恢复