当前位置: 移动技术网 > IT编程>数据库>Mysql > Percona XtraBackup 备份还原篇

Percona XtraBackup 备份还原篇

2018年06月28日  | 移动技术网IT编程  | 我要评论

 

已经对Percona XtraBackup的功能和安装做了比较详细的介绍,那么本篇我们直接进入主题,如何使用XtraBackup做备份、还原,下面主要介绍XtraBackup备份还原操作的细节和场景,疏漏之处难免存在,如有不足,敬请指出。本篇暂时不做原理介绍,后续篇章"Percona XtraBackup 原理分析篇"再做介绍。

 

 

 

 

XtraBackup完整备份

 

备份的权限

 

    使用XtraBack做备份,需要连接到数据库服务器并在服务器上有相关目录操作权限,所以必须要有数据库的相关操作权限以及相关目录执行READ、WRITE以及EXECUTE(执行innobackupex 或xtrabackup 命令)的系统权限。下面我们来简单介绍一下:

 

    数据库所需的一些权限请参考下面表格,细节部分可以参考官方文档。此处不详细阐述!

   

   

MySQL 数据库权限

 权限描述

RELOAD/ LOCK TABLES

RELOAD权限是管理员级别权限,用来执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables,flush-threads, refresh, reload等命令的权限。XtraBackup在复制文件之前,必须先执行

FLUSH TABLES WITH READ LOCK FLUSH ENGINE LOGS

REPLICATION CLIENT

此权限是为了获取二进制日志位置(Position

CREATE TABLESPACE

此权限是为了导入表

PROCESS

此权限是因为要运行SHOW ENGINE INNODB STATUS命令,以及查看服务器上所有运行的线程。

SUPER

此权限是为了开启、关闭复制环境中的slave threads

CREATE

不是必须,Percon Server数据库才需要的。创建PERCONA_SCHEMA.xtrabackup_history的需要

INSERT

不是必须,跟上面权限一样,需要往PERCONA_SCHEMA.xtrabackup_history插入记录

SELECT

不是必须,跟上面权限一样,需要查询ERCONA_SCHEMA.xtrabackup_history中的记录

   

 

当然所需的最小权限如下所示,注意:这个仅仅是最小权限,实际情况中最好根据实际需求授予最小权限。不要放大不必要的权限。

 

 

mysql> use mysql;
Database changed
mysql> CREATE USER 'backuser'@'localhost' IDENTIFIED BY 'kkk123456';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT RELOAD, LOCK TABLES,PROCESS, REPLICATION CLIENT ON *.* TO 'backuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
 
mysql> 

 

 

如果上面的权限不够的话,可以使用下面授权语句。

 

 

GRANT RELOAD, LOCK TABLES,PROCESS, REPLICATION CLIENT, CREATE TABLESPACE,SUPER ON *.* TO 'backuser'@'localhost';

 

 

系统账号授权相关目录的操作权限。如下所示:

 

 

[root@DB-Server ~]# chown -R mysql:mysql /data
[root@DB-Server ~]# su - mysql
-bash-3.2$ 

 

 

 

完整备份

 

 

 常用的完整备份(全备)命令如下所示

 

innobackupex  --user=backuser --password=kkk123456  /u02/mysql_backup/full/
innobackupex  --user=root --password=123456  /u02/mysql_backup/full/
innobackupex --defaults-file=/usr/my.cnf --user=backuser --password=kkk123456  /u02/mysql_backup/full
innobackupex --defaults-file=/usr/my.cnf --socket=/var/lib/mysql/mysql.sock --user=backuser --password=kkk123456  /u02/mysql_backup/full
参数--no-timestamp 表示不生成带时间戳的目录
innobackupex  --user=backuser --password=kkk123456  /u02/mysql_backup/full/ --no-timestamp

 

 注意:如果你指定了参数--defaults-file,那么此参数就必须位于第一个,否则就会报--defaults-file must be specified first on the command line

 

 

 我们先在测试数据库MyDB创建一个测试表,插入几条数据,后面做还原测试验证使用。

 

mysql> use MyDB;
Database changed
 
mysql> create table test(id  int primary key);
Query OK, 0 rows affected (0.13 sec)
 
mysql> insert into test
    -> values(1000);
Query OK, 1 row affected (0.01 sec)
 
mysql> insert into test
    -> values(2000);
Query OK, 1 row affected (0.01 sec)
 
mysql> insert into test
    -> values(3000);
Query OK, 1 row affected (0.01 sec)
 
mysql> 

 

 我们使用下面命令对MySQL做了一个完整备份,那么默认就会在目录/u02/mysql_backup/full/下生成一个日期时间格式的全备文件2017-07-19_17-22-45

 

   $ innobackupex --defaults-file=/usr/my.cnf --user=backuser --password=kkk123456  /u02/mysql_backup/full

 

 

 

 

 那么备份出来的文件以及内容是什么样的呢? 如下所示,你可以检查xtrabackup_checkpoints、xtrabackup_binlog_info、xtrabackup_info三个文件了解备份的一些详细信息,例如备份类型、是否压缩等等。

 

 

[root@DB-Server 2017-07-19_17-39-56]# ls -lrt
total 12380
drwxr-x--- 2 mysql mysql     4096 Jul 19 17:39 test
drwxr-x--- 2 mysql mysql     4096 Jul 19 17:39 performance_schema
drwxr-x--- 2 mysql mysql     4096 Jul 19 17:39 mysql
drwxr-x--- 2 mysql mysql     4096 Jul 19 17:39 MyDB
-rw-r----- 1 mysql mysql 12582912 Jul 19 17:39 ibdata1
-rw-r----- 1 mysql mysql     2560 Jul 19 17:39 xtrabackup_logfile
-rw-r----- 1 mysql mysql      545 Jul 19 17:39 xtrabackup_info
-rw-r----- 1 mysql mysql      113 Jul 19 17:39 xtrabackup_checkpoints
-rw-r----- 1 mysql mysql       25 Jul 19 17:39 xtrabackup_binlog_info
-rw-r----- 1 mysql mysql      418 Jul 19 17:39 backup-my.cnf
[root@DB-Server 2017-07-19_17-39-56]# more xtrabackup_checkpoints 
backup_type = full-backuped
from_lsn = 0
to_lsn = 1637691
last_lsn = 1637691
compact = 0
recover_binlog_info = 0
[root@DB-Server 2017-07-19_17-39-56]# more xtrabackup_binlog_info 
DB-Server-bin.000001    871
[root@DB-Server 2017-07-19_17-39-56]# more xtrabackup_info 
uuid = cfb5c2d8-6cca-11e7-8113-b083fe5532e5
name = 
tool_name = innobackupex
tool_command = --defaults-file=/usr/my.cnf --user=backuser --password=... /u02/mysql_backup/full
tool_version = 2.4.6
ibbackup_version = 2.4.6
server_version = 5.6.20-enterprise-commercial-advanced-log
start_time = 2017-07-19 17:39:56
end_time = 2017-07-19 17:39:58
lock_time = 0
binlog_pos = filename 'DB-Server-bin.000001', position '871'
innodb_from_lsn = 0
innodb_to_lsn = 1637691
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N

 

 

 

<

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网