mysql > CREATE USER 'bkpuser'@'localhost'> mysql > REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bkpuser'; #revoke取消ALL PRIVILEGES所有授权,GRANT OPTION授权选项从bkpuser用户中。及把bkpuser所有的
操作数据库的权限取消掉
mysql>> *************************************************************************************** 实例:执行备份恢复过程及步骤
先执行一次完全备份操作:
[root@lamp ~]# innobackupex --user=root --password=redhat /backup #执行完全备份
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona Inc 2009-2012. All Rights Reserved.
This software is published under
..............................
170609 16:34:54 innobackupex: All tables unlocked
170609 16:34:54 innobackupex: Connection to database serve r closed
innobackupex: Backup created in directory '/backup/2017-06-09_16-34-35'
innobackupex: MySQL binlog position: filename 'mysql-bin.000002', position 107
170609 16:34:54 innobackupex: completed OK! #备份完成
[root@lamp ~]# ls /backup #红色字体目录为刚才备份的数据目录
2017-06-09_16-34-35 incremental-2017-06-06-17-01-41.sql
full-backup-2017-06-06 master-2017-06-06.info
[root@lamp ~]# cd /backup/2017-06-09_16-34-35/
[root@lamp 2017-06-09_16-34-35]# ls
backup-my.cnf jiaowu performance_schema testdb xtrabackup_checkpoints
hellodb mydb stu xtrabackup_binary xtrabackup_logfile
ibdata1 mysql test xtrabackup_binlog_info
[root@lamp ~]# innobackupex --apply-log --redo-only /backup/2017-06-09_16-34-35 #执行完全备份的准备,把相关事务写入到完全备份目录中。
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona Inc 2009-2012. All Rights Reserved.
This software is published under
..........................................
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
170612 11:38:51 InnoDB: Starting shutdown...
170612 11:38:56 InnoDB: Shutdown completed; log sequence number 1631244
170612 11:38:56 innobackupex: completed OK! #执行准备完成
然后把相关的二进制日志备份好,以备到时还原所用。
[root@lamp data]# cp -a mysql-bin.* /backup/ #复制二进制日志文件至备份目录 -a:复制文件时连带权限属性一起复制。
[root@lamp data]# ls /backup/
2017-06-09_16-34-35 incremental-2017-06-06-17-01-41.sql mysql-bin.000001 mysql-bin.000003 mysql-bin.000002 mysql-bin.index
[root@lamp data]# service mysqld stop #停止mysqld服务
Shutting down MySQL.. [ OK ]
[root@lamp data]# rm -rf ./* #模拟mysqld数据目录丢失
[root@lamp data]# ls
[root@lamp data]# pwd
/mydata/data
[root@lamp data]# service mysqld start #启动mysqld服务,此时由于数据丢失无法启动
Starting MySQL....The server quit without updating PID file[FAILED]a/data/lamp.pid).
[root@lamp ~]# innobackupex --copy-back /backup/2017-06-09_16-34-35/ #执行完全备份的数据恢复
(不用初始化数据库,可以直接执行数据恢复操作)
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona Inc 2009-2012. All Rights Reserved.
This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
IMPORTANT: Please check that the copy-back run completes successfully.
At the end of a successful copy-back run innobackupex
prints "completed OK!".
innobackupex: Starting to copy files in '/backup/2017-06-09_16-34-35'
innobackupex: back to original data directory '/mydata/data'
...............................................
innobackupex: in '/backup/2017-06-09_16-34-35'
innobackupex: back to original InnoDB log directory '/mydata/data'
innobackupex: Finished copying back files.
170612 14:46:18 innobackupex: completed OK! #数据恢复完成
[root@lamp data]# pwd
/mydata/data
[root@lamp data]# ll #恢复完成后数据目录的属主和属主都为root,所以需要更改数据目录的属主和属组。
total 28712
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 hellodb
-rw-r-----. 1 root root 18874368 Jun 12 11:38 ibdata1
-rw-r--r--. 1 root root 5242880 Jun 12 14:46 ib_logfile0
-rw-r--r--. 1 root root 5242880 Jun 12 14:46 ib_logfile1
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 jiaowu
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 mydb
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 mysql
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 stu
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 test
drwxr-xr-x. 2 root root 4096 Jun 12 14:46 testdb
-rw-r--r--. 1 root root 24 Jun 12 14:46 xtrabackup_binlog_pos_innodb
-rw-r--r--. 1 root root 77 Jun 12 14:46 xtrabackup_checkpoints
[root@lamp data]# chown -R mysql:mysql /mydata/data #修改目录的属主和属组,使得mysql用户有权限操作该目录下的所有文件,-R递归修改。
[root@lamp data]# ll
total 28712
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 hellodb
-rw-r-----. 1 mysql mysql 18874368 Jun 12 11:38 ibdata1
-rw-r--r--. 1 mysql mysql 5242880 Jun 12 14:46 ib_logfile0
-rw-r--r--. 1 mysql mysql 5242880 Jun 12 14:46 ib_logfile1
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 jiaowu
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 mydb
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 mysql
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 performance_schema
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 stu
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 test
drwxr-xr-x. 2 mysql mysql 4096 Jun 12 14:46 testdb
-rw-r--r--. 1 mysql mysql 24 Jun 12 14:46 xtrabackup_binlog_pos_innodb
-rw-r--r--. 1 mysql mysql 77 Jun 12 14:46 xtrabackup_checkpoints
[root@lamp data]# service mysqld start #启动mysqld服务
Starting MySQL.. [ OK ]
[root@lamp data]# mysql -uroot -p #登录mysql客户端
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection> Server version: 5.5.28-log Source distribution
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW DATABASES; #完全备份的数据已经恢复。
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| jiaowu |
| mydb |
| mysql |
| performance_schema |
| stu |
| test |
| testdb |
+--------------------+
9 rows in set (0.00 sec)
mysql> SELECT * FROM tutors; #查看表内容
+-----+--------------+--------+------+
| TID | Tname | Gender | Age |
+-----+--------------+--------+------+
| 1 | HongQigong | M | 93 |
| 2 | HuangYaoshi | M | 63 |
| 3 | Miejueshitai | F | 72 |
| 4 | OuYangfeng | M | 76 |
| 5 | YiDeng | M | 90 |
| 6 | YuCanghai | M | 56 |
| 7 | Jinlunfawang | M | 67 |
| 8 | HuYidao | M | 42 |
| 9 | NingZhongze | F | 49 |
+-----+--------------+--------+------+
9 rows in set (0.00 sec)
打开另一个终端连接,把二进制日志导出
[root@lamp ~]#mysqlbinlog /backup/mysql-bin.000001 > /tmp/test.sql #导出二进制日志文件至
/tmp目录下的test.sql以便实现及时点恢复
mysql> SET sql_log_bin=0; #导入二进制日志文件时,先关闭二进制日志记录功能
Query OK, 0 rows affected (0.00 sec)
mysql> SOURCE /tmp/test.sql #导入二进制日志文件test.sql到数据库 source相当于./
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM tutors;
+-----+--------------+--------+------+
| TID | Tname | Gender | Age |
+-----+--------------+--------+------+
| 1 | HongQigong | M | 93 |
| 2 | HuangYaoshi | M | 63 |
| 3 | Miejueshitai | F | 72 |
| 4 | OuYangfeng | M | 76 |
| 5 | YiDeng | M | 90 |
| 6 | YuCanghai | M | 56 |
| 7 | Jinlunfawang | M | 67 |
| 8 | HuYidao | M | 42 |
| 9 | NingZhongze | F | 49 |
+-----+--------------+--------+------+
9 rows in set (0.00 sec)
mysql> SET sql_log_bin=1; #恢复完二进制日志后,千万别忘记把二进制日志记录功能打开。
Query OK, 0 rows affected (0.00 sec) 对于增量备份也可以通过增量备份准备把所有增量备份的数据都写入到完全备份保存的目录,到时候恢复只要直接回复完全备份的内容即可,当然下一次再次执行数据备份时,需再次做一次完全备份,然后再做增量备份。
**准备**(prepare)增量备份与准备完全备份有着一些不同,尤其要注意的是:
(1)需要在每个备份(包括完全和各个增量备份)上,将已经提交的事务进行“重放”,“重放”之后,所有的备份数据将合并到完全备份上。
(2)基于所有的备份将未提交的事务进行“回滚” 于是,准备操作就变成了:
1、先准备完全备份的操作:
[root@lamp ~]# innobackupex --apply-log --redo-only BASE-DIR #执行完全备份的准备,
BASE-DIR:是完全备份存放的路径,--redo-only:执行事务选择redo
2、执行提交第一次增量备份的操作:
[root@lamp ~]# innobackupex -apply-log -redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1 #其中BASE-DIR:指的是完全备份所在的目录,而INCREMENTAL-DIR-1指的是第一次增量备份的目录
3、执行提交第二次增量备份的操作:
[root@lamp ~]# innobackupex -apply-log -redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2 #其中BASE-DIR:指的是完全备份所在的目录,而INCREMENTAL-DIR-2指的是第二次增量备份的目录
如果有多次增量备份,每一次备份完后都要执行如上准备操作,才可以用于后期的恢复操作。执行完整备份和多次增量备份准备工作后,所有数据都会保存在指定的完全备份BASE-DIR路径,后期恢复的时候
只要执行innobackupex --copy-back BASE-DIR 就可以把所有数据恢复回来。BASE-DIR为完全备份存放的目录。
**************************************************************************************************
远程备份
压缩备份
[root@lamp ~]# innobackupex --user=root --password=redhat --host=127.0.0.1 --stream=tar /tmp | ssh root@10.1.2.208 "gzip - > /tmp/bak.tar.gz"
或者
[root@lamp ~]# innobackupex --user=root --password=redhat --host=127.0.0.1 --stream=tar /tmp | gzip | ssh root@10.1.2.208 " /tmp/bak.tar.gz"
--stream=tar:tar格式
gzip:压缩
非压缩备份
[root@lamp ~]# innobackupex --user=root --password=redhat --host=127.0.0.1 --stream=tar /tmp | ssh root@10.1.2.208 "cat - > /tmp/bak.tar"
远程恢复
数据压缩的文件需要加上 “i”
[root@lamp ~]# tar -izxvf bak.tar.gz
percona-xtrabackup-2.0.0-417.rhel6.x86_64.rpm
下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/