使用XtraBackup备份恢复MariaDB数据库(2)

(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
[root@MariaDB 2015-06-15_23-49-43]# catxtrabackup_binlog_info
mysql-bin.000005  245

(3)backup-my.cnf —— 备份命令用到的配置选项信息和备份无关的不会记录,备份配置文件的话需要单独备份
[root@MariaDB 2015-06-15_23-49-43]# catbackup-my.cnf
# This MySQL options file was generated byinnobackupex.
 
# The MySQL server
[mysqld]
innodb_checksum_algorithm=innodb
innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=5242880
innodb_fast_checksum=0
innodb_page_size=16384
innodb_log_block_size=512
innodb_undo_tablespaces=0

(4)xtrabackup_info —— 记录了mariadb的版本信息和一些属性信息,还原是检测版本匹配度时用到
[root@MariaDB 2015-06-15_23-49-43]# catxtrabackup_info
uuid = 25b79086-1376-11e5-980a-000c29bad792
name =
tool_name = innobackupex
tool_command = --user=root --password=... /backup/
tool_version = 1.5.1-xtrabackup
ibbackup_version = xtrabackup version 2.2.3 basedon MySQL server 5.6.17 Linux (x86_64) (revision id: )
server_version = 5.5.43-MariaDB-log
start_time = 2015-06-15 23:49:43
end_time = 2015-06-15 23:49:46
lock_time = 1
binlog_pos = filename 'mysql-bin.000005', position245
innodb_from_lsn = 0
innodb_to_lsn = 1597945
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N

2、准备一个完全备份
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
 
innobakupex命令的--apply-log选项可用于实现上述功能。如下面的命令:
 
[root@MariaDB 2015-06-15_23-49-43]# innobackupex--apply-log /backup/2015-06-15_23-49-43/
如果执行正确,其最后输出的一行信息通常如下:
150615 23:58:59 innobackupex: completed OK!
在实现“准备”的过程中,innobackupex通常还可以使用--use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成速度。
3、从一个完全备份中恢复数据
innobackupex命令的--copy-back选项用于执行恢复操作,其通过复制所有数据相关的文件至mysql服务器DATADIR目录中来执行恢复过程。innobackupex通过backup-my.cnf来获取DATADIR目录的相关信息。
语法:
# innobackupex --copy-back  /path/to/BACKUP-DIR
 
当数据恢复至DATADIR目录以后,还需要确保所有数据文件的属主和属组均为正确的用户,如mysql,否则,在启动mysqld之前还需要事先修改数据文件的属主和属组。

模拟数据库损坏
删除mariadb数据目录中的所有内容,模拟数据库损坏
[root@MariaDB~]# rm -rf /mydata/data/*
[root@MariaDB~]# ll /mydata/data/
total0

恢复数据
[root@MariaDB~]# innobackupex --copy-back /backup/2015-06-15_23-49-43/
[root@MariaDB ~]# chown -R  mysql:mysql /mydata/data/
[root@MariaDB~]# ll /mydata/data/
total 28692
drwxr-xr-x2 mysql mysql    4096 Jun 16 00:01hellodb
-rw-r--r--1 mysql mysql 18874368 Jun 16 00:01 ibdata1
-rw-r--r--1 mysql mysql  5242880 Jun 16 00:01ib_logfile0
-rw-r--r--1 mysql mysql  5242880 Jun 16 00:01ib_logfile1
drwxr-xr-x2 mysql mysql    4096 Jun 16 00:01 mysql
drwxr-xr-x2 mysql mysql    4096 Jun 16 00:01performance_schema
drwxr-xr-x2 mysql mysql    4096 Jun 16 00:01 test
-rw-r--r--1 mysql mysql      559 Jun 16 00:01xtrabackup_info


恢复完成之后,还需要启动一下Mysql服务,否则Mariadb是是不会记录二进制日志的,这个时候启动起来是重新记录二进制日志的。
[root@MariaDB ~]# service mysqld start

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2f67218c4a3fbe45d0c295a824e3fbb6.html