innobackupex 执行部份增加备份
2023年5月22日...大约 3 分钟
部分备份的相关设置
#mariadb
SET GLOBAL innodb_file_per_table=1
SET GLOBAL innodb_import_table_from_xtrabackup=1
#部分版本里叫
innodb_file_per_table
innodb_expand_import
针对表的部分备份及增量备份
相关参数见: xtrabackup-innobackupex-安装使用/
案例1:针对部分表备份,还原
现在表及表中数据

第一次完成表备份
#完成备份
[root@test05 ~]# /usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--export --include=d1.t2 /tmp/t1
更新表中数据。

第一次增量备份;从上一次备份可以知道,生成的目录为’/tmp/t1/2019-05-16_10-37-08‘
[root@test05 ~]# /usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--export --include=d1.t2 --incremental /tmp/t1/ --incremental-basedir=/tmp/t1/2019-05-16_10-40-49/
模拟表故障,删除t2 表格

准备恢复数据:
#第一次针对完成备份做导出准备,使用 --apply-log --redo-only
[root@test05 ~]# /usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--apply-log --redo-only --export --include=d1.t2 /tmp/t1/2019-05-16_10-40-49/
#针对第一次增量备份做导出准备。之后以此类推
[root@test05 ~]# /usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--apply-log --redo-only --export --include=d1.t2 /tmp/t1/2019-05-16_10-40-49/ \
--incremental-dir=/tmp/t1/2019-05-16_10-42-13/
#针对完成备份再做一次导出,仅什么 --apply-log
[root@test05 ~]# /usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--apply-log --export --include=d1.t2 /tmp/t1/2019-05-16_10-40-49/
#查看导出的文件信息。
[root@test05 d1]# pwd
/tmp/t1/2019-05-16_10-40-49/d1
[root@test05 d1]# ls
t2.cfg t2.exp t2.frm t2.ibd
[root@test05 d1]#
创建空表
MariaDB [d1]> create table t2;
ERROR 1113 (42000): A table must have at least 1 column
MariaDB [d1]> create table t2(name varchar(20),age int(10));
Query OK, 0 rows affected (0.01 sec)
MariaDB [d1]> ALTER TABLE t2 DISCARD TABLESPACE;
Query OK, 0 rows affected (0.00 sec)
MariaDB [d1]>
拷贝导出的文件到数据库目录下并修改仅限。
[root@test05 d1]# cp t2.* /var/lib/mysql/d1/
cp:是否覆盖"/var/lib/mysql/d1/t2.frm"? yes
[root@test05 d1]# chown -R mysql.mysql /var/lib/mysql/d1/
[root@test05 d1]# ll /var/lib/mysql/d1/
总用量 144
-rw-r----- 1 mysql mysql 61 5月 15 12:09 db.opt
-rw-r----- 1 mysql mysql 8586 5月 15 12:09 t1.frm
-rw-r--r-- 1 mysql mysql 421 5月 16 11:02 t2.cfg
-rw-r----- 1 mysql mysql 16384 5月 16 11:02 t2.exp
-rw-rw---- 1 mysql mysql 8588 5月 16 11:02 t2.frm
-rw-r----- 1 mysql mysql 98304 5月 16 11:02 t2.ibd
[root@test05 d1]#
数据库导入表 import
MariaDB [d1]> ALTER TABLE t2 IMPORT TABLESPACE;
Query OK, 0 rows affected (0.00 sec)
MariaDB [d1]> SELECT * FROM t2;
+-------+------+
| name | age |
+-------+------+
| TOM | 20 |
| jerry | 18 |
| marry | 19 |
+-------+------+
3 rows in set (0.00 sec)
单个表数据到此已经恢复
针对数据库部分备份/增量备份及恢复
案例1:针对部分数据库备份 使用的是 –databases 方法.
创建测试数据库
MariaDB [d1]> create database dba ;
Query OK, 1 row affected (0.00 sec)
MariaDB [d1]> use dba;
Database changed
MariaDB [dba]> create table t1 (id int(10),name varchar(20));
Query OK, 0 rows affected (0.00 sec)
MariaDB [dba]> INSERT INTO t1 VALUES(1,"tony");
Query OK, 1 row affected (0.00 sec)
MariaDB [dba]> select * from t1;
+------+------+
| id | name |
+------+------+
| 1 | tony |
+------+------+
1 row in set (0.00 sec)
创建指定数据库完成备份
/usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 --databases=dba /tmp/data/
更新数据库,增加内容方便创建增量
MariaDB [dba]> create table t2 (name varchar(20),age int(10));
Query OK, 0 rows affected (0.01 sec)
MariaDB [dba]> INSERT INTO t2 VALUES("tony",100);
Query OK, 1 row affected (0.00 sec)
MariaDB [dba]> select * from t2;
+------+------+
| name | age |
+------+------+
| tony | 100 |
+------+------+
1 row in set (0.00 sec)
MariaDB [dba]>
创建增量备份,上次备份的目录是 "/tmp/data/2019-05-16_16-16-23/"
[root@test05 data]# /usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--databases=dba --incremental /tmp/data/ --incremental-basedir=/tmp/data/2019-05-16_16-16-23/
删除数据库,模拟故障,表丢失的情况可以用表的方式还原
MariaDB [mysql]> drop database dba;
Query OK, 2 rows affected (0.02 sec)
MariaDB [mysql]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| d1 |
| db |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
MariaDB [mysql]>
准备还原数据
暂未实现
#完成数据备份
/usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 --databases=d3 /tmp/data/
#第一次增量备份
/usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--databases=d3 --incremental /tmp/data/ --incremental-basedir=/tmp/data/2019-05-15_21-40-02/
#第二次增量备份
/usr/local/xtrabackup/bin/innobackupex --user=root --password=123456 \
--databases=d3 --incremental /tmp/data/ --incremental-basedir=/tmp/data/2019-05-15_21-40-02/
#以此类推
贡献者
change