mysql> CREATE USER 'backuser'@'%' IDENTIFIED BY 'backpassword'; mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backuser'@'%'; mysql> FLUSH PRIVILEGES;所有权限的用户:
mysql> CREATE USER 'backuser'@'%' IDENTIFIED BY 'backpassword'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'backuser'@'%'; mysql> FLUSH PRIVILEGES;2.2.3 连接到数据库服务
[root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword --stream=tar /tmp/backup > /tmp/backup_`date +%F_%T`.tar [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword --stream=tar /tmp/backup | gzip > /tmp/backup_`date +%F_%T`.tar.gz [root@localhost bin]# ./xtrabackup --user=backuser --password=backpassword --backup --target-dir=/tmp/backup注:如果不指定--user,Percona XtraBackup会默认使用调用它的用户作为数据库用户名。
[root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup/查看最后一行输出的确认信息
[root@localhost bin]# ./innobackupex --defaults-file=/etc/my-other.cnf --user=backuser --password=backpassword /tmp/backup--no-timestamp:将备份文件直接存储在指定目录下,不在该目录下创建以时间戳命名的文件夹。
[root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup --no-timestamp3.2 使用innobackupex准备全备
[root@localhost bin]# ./innobackupex --apply-log /tmp/backup/2014-12-20_00-46-25/查看最后一行输出的确认信息,成功则会输出
[root@localhost bin]# ./innobackupex --apply-log --use-memory=2G /tmp/backup/2014-12-20_00-46-25/3.3 使用innobackupex还原全量备份
[root@localhost bin]# ./innobackupex --user=backuser --password=backpassword --copy-back /tmp/backup/2014-12-20_00-46-25/通过配置文件my.cnf,拷贝所有数据相关文件到mysql数据库data目录下,查看最后一行输出的确认信息,成功则会输出
[root@localhost bin]# chown -R mysql:mysql /usr/local/mysql/data/4 增量备份还原
[root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup查看备份文件夹下xtrabackup_checkpoints文件,该文件记录了备份类型,最后的LSN,及是否压缩等信息
[root@localhost bin]# cat /tmp/backup/2014-12-23_02-17-11/xtrabackup_checkpoints
[root@localhost bin]# innobackupex --incremental /tmp/backup --incremental-basedir=/tmp/backup/2014-12-23_02-17-11/查看备份,可见生成了增备文件夹2014-12-23_02-40-22
[root@localhost bin]# ll /tmp/backup/ total 8 drwxr-xr-x. 6 root root 4096 Dec 23 02:17 2014-12-23_02-17-11 drwxr-xr-x. 6 root root 4096 Dec 23 02:40 2014-12-23_02-40-22查看增备文件夹下xtrabackup-checkpoints文件。
[root@localhost bin]# cat /tmp/backup/2014-12-23_02-40-22/xtrabackup_checkpoints
[root@localhost bin]# innobackupex --incremental /tmp/backup --incremental-basedir=/tmp/backup/2014-12-23_02-40-22/查看备份,可见生成了增备文件夹2014-12-23_02-51-30
[root@localhost bin]# ll /tmp/backup/
[root@localhost bin]# cat /tmp/backup/2014-12-23_02-51-30/xtrabackup_checkpoints
[root@localhost bin]# ./innobackupex --incremental /tmp/backup --incremental-lsn=1821776这种方法非常有用,比如:上一次的增备并不一定总是可用。
innobackupex --apply-log --redo-only BASE-DIR具体实例如下:
[root@localhost bin]# ./innobackupex --apply-log --redo-only /tmp/backup/2014-12-23_02-17-11成功后我们会得到类似如下输出:
xtrabackup: starting shutdown with innodb_fast_shutdown = 1 InnoDB: Starting shutdown... InnoDB: Shutdown completed; log sequence number 1817140 141223 22:14:03 innobackupex: completed OK!应用第一个增备到基础备份
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
具体实例:
[root@localhost bin]# ./innobackupex --apply-log --redo-only /tmp/backup/2014-12-23_02-17-11 --incremental-dir=/tmp/backup/2014-12-23_02-40-22成功后我们会得到类似如下输出:
InnoDB: Shutdown completed; log sequence number 1819077 ..................................... 141223 22:30:07 innobackupex: completed OK!注意:注意LSN的变化。
[root@localhost bin]# ./innobackupex --apply-log --redo-only /tmp/backup/2014-12-23_02-17-11 --incremental-dir=/tmp/backup/2014-12-23_02-51-30 [root@localhost bin]# ./innobackupex --apply-log /tmp/backup/2014-12-23_02-17-11 --incremental-dir=/tmp/backup/2014-12-23_03-04-16注:准备最后一个增量备份没有必要使用--redo-only,加上也没事,数据依然连续,数据在服务器启动阶段会执行回滚操作。
innobackupex --apply-log BASE-DIR实例如下:
[root@localhost bin]# ./innobackupex --apply-log /tmp/backup/2014-12-23_02-17-11prepere完以后,备份文件就准备好可以快速还原了。prepare准备过程是可选的,如果我们忽略这一步,数据库开始的时候也会执行回滚未提交的事务,类似数据库宕机发生后的重启。会延迟数据库服务的启动,如果想要在启动时吧避免延迟,最要提前在进行prepare准备操作。
innobackupex --copy-back BASE-DIR具体实例:
[root@localhost bin]# ./innobackupex --copy-back /tmp/backup/2014-12-23_02-17-11注意:还原前数据库实例为停止状态,且data目录为空。
[root@localhost bin]# ssh-keygen -t rsa -P '' Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 23:a5:a8:32:d7:b4:75:4b:2a:8d:ba:44:00:fe:8d:f0 [email protected] The key's randomart image is: +--[ RSA 2048]----+ |. | |o | |.o . | | .+ o. o | | .Eo.+ S | | . + = = o | |o + = o . | | = . . | | o. | +-----------------+查看生成的秘钥。
[root@localhost bin]# ll /root/.ssh/ total 12 -rw-------. 1 root root 1671 Dec 24 03:32 id_rsa -rw-r--r--. 1 root root 408 Dec 24 03:32 id_rsa.pub -rw-r--r--. 1 root root 394 Dec 24 00:58 known_hosts将公钥传输应用到远程机器
[root@localhost bin]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] [email protected]'s password:配置成功!
[root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup4.7.3 创建一个本地增备:
innobackupex --incremental --incremental-lsn=LSN-number --stream=xbstream --user=backuser --password=backpassword ./ > incremental.xbstream具体实例:
[root@localhost bin]# ./innobackupex --incremental --incremental-lsn=1829189 --stream=xbstream --user=backuser --password=backpassword ./ > incremental.xbstream解包方法:
[root@localhost bin]# ./xbstream -x < incremental.xbstream综合步骤(包含上面2个步骤):
[root@localhost bin]# ./innobackupex --incremental --incremental-lsn=1829189 --stream=xbstream --tmpdir=/tmp/backup/tmp --user=backuser --password=backpassword ./ | ssh [email protected] "cat - | xbstream -x -C /tmp/backup/"查看远程备份目录
[root@HA1 backup]# ll
innobackupex --include=’^mydatabase[.]mytable’ /tmp/backup实例如下:
[root@localhost bin]# ./innobackupex --include='^test.partial' /tmp/backup执行完该命令后将会在指定文件夹创建一个以时间戳命名的文件夹,里面包含innobackupex创建的一些文件,以及正则表达式所指定的数据表。
[root@localhost bin]# echo "test.table1" > /tmp/tables.txt [root@localhost bin]# echo "test.table2" >> /tmp/tables.txt [root@localhost bin]# ./innobackupex --tables-file=/tmp/tables.txt /tmp/backup执行完该命令后将会在指定文件夹创建一个以时间戳命名的文件夹,里面包含innobackupex创建的一些文件,以及文本文件所指定的数据表。
[root@localhost bin]# ./innobackupex --databases="test.table2 testdb" /tmp/backup执行完该命令后将会在指定文件夹创建一个以时间戳命名的文件夹,里面包含innobackupex创建的一些文件,以及test库下的table2表和整个testdb数据库。
[root@localhost bin]# ./innobackupex --apply-log --export /tmp/backup/2014-12-30_00-33-57我们应该会看到为每个备份表创建.exp文件的一些信息
InnoDB: Shutdown completed; log sequence number 1891862 141230 00:47:26 innobackupex: completed OK!5.3 还原部分备份
[root@localhost bin]# ./innobackupex --compact /tmp/backup6.2 准备(Prepar)紧凑备份
[root@localhost bin]# ./innobackupex --apply-log --rebuild-indexes /tmp/backup/2014-12-30_01-34-41/对于增量备份的应用可以先不重建索引,在应用最后一个差异备份的时候使用—rebuild-index来创建索引,每次都应用都重建索引太花时间。
[root@localhost bin]# ./innobackupex --copy-back /tmp/backup/2014-12-30_01-34-41注意:需要还原数据的mysql数据库在还原数据前应该是关闭状态,且data目录为空,因为innobackupex --copy-back不会覆盖已存在的文件。
[root@localhost bin]# chown -R mysql:mysql /usr/local/mysql/data/7 加密备份
[root@localhost bin]# openssl enc -aes-256-cbc -pass pass:Password -P -md sha1
[root@localhost bin]# ./innobackupex --encrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" /tmp/backup通过--encrypt-key-file
[root@localhost bin]# echo -n "B8EEACE100AADB5F3A0D94F3112AAFA5" > /tmp/keyfile.txt [root@localhost bin]# ./innobackupex --encrypt=AES256 --encrypt-key-file=/tmp/keyfile.txt /tmp/backup7.1.4 优化加密过程
[root@localhost bin]# ./innobackupex --encrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" --encrypt-threads=16 --encrypt-chunk-size=256K /tmp/backup7.1.5 解密备份
[root@localhost bin]# ./innobackupex --decrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" /tmp/backup/2014-12-30_03-51-42/使用innobackupex --decrypt将会删除原有加密文件,将解密后的文件保存在相同的备份目录。--parallel选项可同--decrypt选项一起使用。
[root@localhost bin]# ./innobackupex --decrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" --parallel=16 /tmp/backup/2014-12-30_03-51-42/7.2 准备加密备份
[root@localhost bin]# ./innobackupex --apply-log /tmp/backup/2014-12-30_03-51-42/7.3 还原加密备份
[root@localhost bin]# ./innobackupex --copy-back /tmp/backup/2014-12-30_03-51-42/8 复制环境下进行备份
[root@localhost bin]# ./innobackupex --parallel=16 /tmp/backup流式备份时使用xbstream可以通过--compress-threads选项加速压缩进程,该选项指定了xtrabackup进行并行压缩时使用的线程数。默认线程数为1。
[root@localhost bin]# ./innobackupex --stream=xbstream --compress --compress-threads=16 ./ > backup.xbstream注:对于压缩备份,重放备份前需要解压缩。
[root@localhost bin]# ./innobackupex --parallel=16 --rsync /tmp/backup注:该选项不能和--remote-host 或--stream一起使用。