xtrabackup全量、增量备份恢复mysql数据库
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,一. 全量备份恢复:查看原表内容:MariaDB [(none)]> select * from testdb.students;+----+------------+------+--------+
千家信息网最后更新 2025年01月22日xtrabackup全量、增量备份恢复mysql数据库
一. 全量备份恢复:
- 查看原表内容:
MariaDB [(none)]> select * from testdb.students;+----+------------+------+--------+| id | name | age | gender |+----+------------+------+--------+| 1 | zhangsan | 15 | f || 2 | lisi | 15 | m || 3 | wanger | 25 | m || 4 | liuwu | 24 | f || 5 | wangermazi | 28 | f |+----+------------+------+--------+5 rows in set (0.00 sec)
1. 备份:
[root@jenkins ~]# innobackupex --user=lxk --host=localhost --password=lxkpass /tmp180916 11:56:18 innobackupex: Starting the backup operationIMPORTANT: Please check that the backup run completes successfully. At the end of a successful backup run innobackupex prints "completed OK!".......中间省略......180916 11:56:22 Executing UNLOCK TABLES180916 11:56:22 All tables unlocked180916 11:56:22 Backup created in directory '/tmp/2018-09-16_11-56-18'180916 11:56:22 [00] Writing backup-my.cnf180916 11:56:22 [00] ...done180916 11:56:22 [00] Writing xtrabackup_info180916 11:56:22 [00] ...donextrabackup: Transaction log of lsn (1602080) to (1602080) was copied.180916 11:56:23 completed OK![root@jenkins ~]# cat /tmp/2018-09-16_11-56-18/xtrabackup_checkpoints backup_type = full-backuped #备份类型:全量备份from_lsn = 0 #起始lsnto_lsn = 1602080 #结束lsnlast_lsn = 1602080 #总共多少个lsncompact = 0recover_binlog_info = 0[root@jenkins ~]# cat /tmp/2018-09-16_11-56-18/xtrabackup_info uuid = 7a05430c-b964-11e8-889e-000c29080758name = tool_name = innobackupex #备份工具名称tool_command = --user=lxk --host=localhost --password=... /tmp #备份时使用的命令tool_version = 2.3.6 #工具版本ibbackup_version = 2.3.6server_version = 5.5.60-MariaDBstart_time = 2018-09-16 11:56:18 #备份开始时间end_time = 2018-09-16 11:56:22 #备份结束时间lock_time = 0binlog_pos = innodb_from_lsn = 0innodb_to_lsn = 1602080partial = Nincremental = Nformat = filecompact = N compressed = N #是否启用压缩encrypted = N #是否加密
2. 准备(apply)备份
[root@jenkins ~]# innobackupex --apply-log /tmp/2018-09-16_11-56-18/180916 12:06:16 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!".......中间省略......xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: FTS optimize thread exiting.InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 1602582180916 12:06:19 completed OK! #此处显示completed OK即表示完成
3. 恢复备份:
(1)停止mysql服务
(2)删库
[root@jenkins ~]# rm -rf /var/lib/mysql/*
(3) 通过全量备份恢复数据
[root@jenkins ~]# innobackupex --copy-back /tmp/2018-09-16_11-56-18/180916 12:11:19 innobackupex: Starting the copy-back operationIMPORTANT: Please check that the copy-back run completes successfully. At the end of a successful copy-back run innobackupex prints "completed OK!".innobackupex version 2.3.6 based on MySQL server 5.6.24 Linux (x86_64) (revision id: )180916 12:11:19 [01] Copying ib_logfile0 to /var/lib/mysql/ib_logfile0180916 12:11:19 [01] ...done.....中间省略.....180916 12:11:20 [01] ...done180916 12:11:20 [01] Copying ./xtrabackup_info to /var/lib/mysql/xtrabackup_info180916 12:11:20 [01] ...done180916 12:11:20 [01] Copying ./test/db.opt to /var/lib/mysql/test/db.opt180916 12:11:20 [01] ...done180916 12:11:20 completed OK! #显示completed OK即为完成
(4) 修改恢复后文件的属主,属组为mysql
[root@jenkins ~]# ls /var/lib/mysql -ltotal 28692-rw-r----- 1 root root 18874368 Sep 16 12:11 ibdata1-rw-r----- 1 root root 5242880 Sep 16 12:11 ib_logfile0-rw-r----- 1 root root 5242880 Sep 16 12:11 ib_logfile1drwx------ 2 root root 4096 Sep 16 12:11 mysqldrwx------ 2 root root 4096 Sep 16 12:11 performance_schemadrwx------ 2 root root 4096 Sep 16 12:11 testdrwx------ 2 root root 4096 Sep 16 12:11 testdb-rw-r----- 1 root root 437 Sep 16 12:11 xtrabackup_info[root@jenkins ~]# chown -R mysql.mysql /var/lib/mysql/*[root@jenkins ~]# ll /var/lib/mysql/total 28692-rw-r----- 1 mysql mysql 18874368 Sep 16 12:11 ibdata1-rw-r----- 1 mysql mysql 5242880 Sep 16 12:11 ib_logfile0-rw-r----- 1 mysql mysql 5242880 Sep 16 12:11 ib_logfile1drwx------ 2 mysql mysql 4096 Sep 16 12:11 mysqldrwx------ 2 mysql mysql 4096 Sep 16 12:11 performance_schemadrwx------ 2 mysql mysql 4096 Sep 16 12:11 testdrwx------ 2 mysql mysql 4096 Sep 16 12:11 testdb-rw-r----- 1 mysql mysql 437 Sep 16 12:11 xtrabackup_info
(5) 启动MySQL并查看
[root@jenkins ~]# systemctl start mariadb[root@jenkins ~]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 2Server version: 5.5.60-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> select * from testdb.students; #恢复完成+----+------------+------+--------+| id | name | age | gender |+----+------------+------+--------+| 1 | zhangsan | 15 | f || 2 | lisi | 15 | m || 3 | wanger | 25 | m || 4 | liuwu | 24 | f || 5 | wangermazi | 28 | f |+----+------------+------+--------+5 rows in set (0.00 sec)
二. 增量备份及恢复:
1. 全量备份:
[root@jenkins ~]# innobackupex --user=lxk --host=localhost --password=lxkpass /tmp/180916 12:17:01 innobackupex: Starting the backup operationIMPORTANT: Please check that the backup run completes successfully. At the end of a successful backup run innobackupex prints "completed OK!"......中间省略.....180916 12:17:03 Executing UNLOCK TABLES180916 12:17:03 All tables unlocked180916 12:17:03 Backup created in directory '/tmp//2018-09-16_12-17-01'180916 12:17:03 [00] Writing backup-my.cnf180916 12:17:03 [00] ...done180916 12:17:03 [00] Writing xtrabackup_info180916 12:17:03 [00] ...donextrabackup: Transaction log of lsn (1602592) to (1602592) was copied.180916 12:17:03 completed OK!
2. 修改数据库,进行第一次增量备份
- 在testdb.students中添加一条数据:
MariaDB [testdb]> insert into students values (6,'xiaoming',20,'f');Query OK, 1 row affected (0.00 sec)MariaDB [testdb]> select * from students;+----+------------+------+--------+| id | name | age | gender |+----+------------+------+--------+| 1 | zhangsan | 15 | f || 2 | lisi | 15 | m || 3 | wanger | 25 | m || 4 | liuwu | 24 | f || 5 | wangermazi | 28 | f || 6 | xiaoming | 20 | f |+----+------------+------+--------+6 rows in set (0.00 sec)
- 增量备份:
[root@jenkins ~]# innobackupex --incremental /tmp --incremental-basedir=/tmp/2018-09-16_12-17-01/180916 12:23:28 innobackupex: Starting the backup operationIMPORTANT: Please check that the backup run completes successfully. At the end of a successful backup run innobackupex prints "completed OK!"......中间省略.....180916 12:23:30 [00] ...donextrabackup: Transaction log of lsn (1602735) to (1602735) was copied.180916 12:23:30 completed OK!
3. 添加一条数据,进行第二次增量备份:
- 增加一条数据
MariaDB [testdb]> insert into students values (8,'daming',20,'m');Query OK, 1 row affected (0.00 sec)
- 第二次增量备份(若此时--incremental-basedir指的是第一次全量备份路径,则为差异备份):
[root@jenkins ~]# innobackupex --incremental /tmp --incremental-basedir=/tmp/2018-09-16_12-23-28/180916 12:29:08 innobackupex: Starting the backup operationIMPORTANT: Please check that the backup run completes successfully. At the end of a successful backup run innobackupex prints "completed OK!"......中间省略.....180916 12:29:10 [00] Writing xtrabackup_info180916 12:29:10 [00] ...donextrabackup: Transaction log of lsn (1603615) to (1603615) was copied.180916 12:29:10 completed OK!
4. 恢复数据:
(1) 准备(prepare)数据:
- 需要在每个备份(包括完全和各个增量备份)上,将已经提交的事务进行"重放"。"重放"之后,所有的备份数据将合并到完全备份上。
- 基于所有的备份将未提交的事务进行"回滚"
(2)准备全量备份文件
[root@jenkins tmp]# innobackupex --apply-log --redo-only 2018-09-16_12-17-01180916 12:34:06 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!"......中间省略.....InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 1602592180916 12:34:06 completed OK!
(3) 准备第一次增量备份文件:
- 注: --incremental-dir所指的目录必须为绝对路径
[root@jenkins 2018-09-16_12-17-01]# innobackupex --apply-log --redo-only ./ --incremental-dir=/tmp/2018-09-16_12-23-28180916 12:38:17 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!"......中间省略.....180916 12:38:18 [00] Copying /tmp/2018-09-16_12-23-28/xtrabackup_info to ./xtrabackup_info180916 12:38:18 [00] ...done180916 12:38:18 completed OK!
(4) 准备第二次增量备份文件:
[root@jenkins 2018-09-16_12-17-01]# innobackupex --apply-log --redo-only ./ --incremental-dir=/tmp/2018-09-16_12-29-08/180916 12:42:56 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!"......中间省略.....180916 12:42:57 [01] ...done180916 12:42:57 [00] Copying /tmp/2018-09-16_12-29-08//xtrabackup_info to ./xtrabackup_info180916 12:42:57 [00] ...done180916 12:42:57 completed OK!
(5) 执行回滚操作
[root@jenkins tmp]# innobackupex --apply-log /tmp/2018-09-16_12-17-01180916 12:46:15 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!"......中间省略.....xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: FTS optimize thread exiting.InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 1604128180916 12:46:18 completed OK!
(6) 关闭MySQL并删除/var/lib/mysql/下所有文件
(7) 恢复数据:
[root@jenkins tmp]# innobackupex --copy-back 2018-09-16_12-17-01/180916 12:48:39 innobackupex: Starting the copy-back operationIMPORTANT: Please check that the copy-back run completes successfully. At the end of a successful copy-back run innobackupex prints "completed OK!"......中间省略.....180916 12:48:40 [01] Copying ./test/db.opt to /var/lib/mysql/test/db.opt180916 12:48:40 [01] ...done180916 12:48:40 completed OK!
(8) 修改/var/lib/mysql/下文件的属主、属组并启动数据库并查看
[root@jenkins mysql]# chown -R mysql.mysql /var/lib/mysql/*[root@jenkins mysql]# lltotal 28692-rw-r----- 1 mysql mysql 18874368 Sep 16 12:48 ibdata1-rw-r----- 1 mysql mysql 5242880 Sep 16 12:48 ib_logfile0-rw-r----- 1 mysql mysql 5242880 Sep 16 12:48 ib_logfile1drwx------ 2 mysql mysql 4096 Sep 16 12:48 mysqldrwx------ 2 mysql mysql 4096 Sep 16 12:48 performance_schemadrwx------ 2 mysql mysql 4096 Sep 16 12:48 testdrwx------ 2 mysql mysql 4096 Sep 16 12:48 testdb-rw-r----- 1 mysql mysql 462 Sep 16 12:48 xtrabackup_info[root@jenkins mysql]# systemctl start mariadb[root@jenkins mysql]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 2Server version: 5.5.60-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> select * from testdb.students; #恢复完成+----+------------+------+--------+| id | name | age | gender |+----+------------+------+--------+| 1 | zhangsan | 15 | f || 2 | lisi | 15 | m || 3 | wanger | 25 | m || 4 | liuwu | 24 | f || 5 | wangermazi | 28 | f || 6 | xiaoming | 20 | f || 8 | daming | 20 | m |+----+------------+------+--------+7 rows in set (0.00 sec)
三. xtrabackup备份目录下文件解读
在备份的同时,innobackupex还会在备份目录中创建如下文件:
- xtrabackup_checkpoints
backup_type = full-backuped 本次备份类型 = 全量备份from_lsn = 0 起始日志序列号to_lsn = 258476374114 结束日志序列号last_lsn = 258476374114 compact = 0 是否压缩recover_binlog_info = 0 复制恢复时binlog信息
其中包括:备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
- 每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
- xtrabackup_binlog_info
- mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
[root@dev-core 11.27]# cat xtrabackup_binlog_info mysql-bin.001102 379212660 ac7a95b5-6507-11e8-b052-702084fbc6aa:1-6694,e755a417-6507-11e8-b054-702084fbc7b6:1-38396411
- xtrabackup_binlog_pos_innodb -- 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
- xtrabackup_binary -- 备份中用到的xtrabackup的可执行文件;
- backup-my.cnf -- 备份命令用到的配置选项信息;
另外在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。
备份
数据
文件
增量
日志
目录
准备
二进制
命令
序列
序列号
数据库
信息
时间
第一次
类型
加一
事务
工具
版本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
寻麓信息旗下网络安全
网络安全对国家信息安全影响
arl 数据库
网络技术例题解析
互联网科技与健康产业
上海苹果软件开发怎么样
王者一共有几个服务器
承载网络技术支撑工程师五级
优优互联网科技公司地址
焦作金蝶软件开发
分布式数据库知识大全
支付宝网络技术有限公司在哪
黑龙江虚拟主机服务器
下面关于数据库的恢复模式
南昌金鼎软件开发有限公司
hp服务器远程管理模块
南京咖啡点餐软件开发
android建数据库
网络安全法规定给予主管人员
微信第三方平台的服务器
临洮网络技术
汉族网络技术
合肥互联网科技大会
长城行动助牢网络安全
服务器设备安装
计算机软件开发师前景
亚马逊软件开发前景
购买云数据库产品的途径
用集合怎么查看数据库
嵌入式web服务器配置ip地址