书上摘抄 ---深入浅出mysql 448页
grant reload on *.* to 'backup'@'localhost' identified by '123456';
grant reload,lock tables on *.* to 'backup'@'localhost' identified by '123456';
grant reload,lock tables,replication client on *.* to 'backup'@'localhost' identified by '123456';
grant reload,lock tables,replication client,create tablespace on *.* to 'backup'@'localhost' identified by '123456';
grant reload,lock tables,replication client,create tablespace,super on *.* to 'backup'@'localhost' identified by '123456';
1.grant reload,lock tables,replication client,create tablespace,super on *.* to 'backup'@'%';
2.增量备份
在mysql中进行增量备份需要时,首先需要进行一次全量备份,之后的增量备份在上一次的增量备份
创建基础备份 base
innobackupex --user=backup --password='123456' --socket=/tmp/mysql.sock --defaults-file=/tmp/my.cnf /data/backup/hotbackup/base --no-timestamp
创建增量备份
innobackupex --user=backup --password='123456' --socket=/tmp/mysql.sock --defaults-file=/tmp/my.cnf --incremental /data/backup/hotbackup/incremental_one --incremental-basedir=/data/backup/hotbackup/base --no-timestamp --parallel=2
再次创建增量备份
innobackupex --user=backup --password='123456' --socket=/tmp/mysql.sock --defaults-file=/tmp/my.cnf --incremental /data/backup/hotbackup/incremental_two --incremental-basedir=/data/backup/hotbackup/increament_one --no-timestamp --parallel=2
3.增量备份的恢复
恢复基础备份(全备)
恢复增量备份到基础备份(开始恢复的增量备份要加--redo-only 参数,到最后一次增量备份去掉--redo-only参数)
--redo-only的意思是之应用xtrabackup日志中已经提交的事务数据,不回滚还未提交的数据
innobackupex --apply-log --redo-only --use-memory=2g /data/backup/hotbackup/base
将增量备份increament_one应用到基础备份base:
innobackupex --apply-log --redo-only --use-memory=2g /data/backup/hotbackup/base --incremental-basedir=/data/backup/hotbackup/increament_one
将增量备份increament_two应用到基础备份base:
innobackupex --apply-log --use-memory=2g /data/backup/hotbackup/base --incremental-basedir=/data/backup/hotbackup/increament_two
将所有合在一起的基础备份整体进行一次apply操作,回滚未提交的数据
innobackupex --apply-log --use-memory=2g /data/backup/hotbackup/base
将恢复完的备份复制到数据文件目录中,赋权,然后启动mysql数据库
mysqldmin -s /tm/mysql.sock shutdown
mv /home/mysql_test/mysqlhone/data /home/mysql_test/mysqlhome/_data_back
mkdir /home/mysql_test/mysqlhome/data
innodbackupex --defaults-file=/tmp/my.cnf --copy-back --rsync /data/backup/hotbackup/full
chown -R mysql.mysql /home/mysql_test/mysqlhome/data
启动数据库
*********************************************************************************************************************
操作实录:
问题:貌似只要是增量备份,一定要加--no-timestamp,否则会报错的
grant reload,lock tables,replication client,create tablespace,super on *.* to 'backup'@'localhost' identified by '123456';
***********************************************************
全量备份 + --no-timestamp
1.[root@test]#innobackupex --user=root /root/backup --no-timestamp (加上--no-timestamp参数的时候,backup目录不能存在,否则会报innobackupex: Error: Failed to create backup directory /root/backup: File exists at /usr/bin/innobackupex line 3808.)
增量备份1
innobackupex --user=root --incremental /root/backup/incremental_one --incremental-basedir=/root/backup --no-timestamp
增量备份2
innobackupex --user=root --incremental /root/backup/incremental_two --incremental-basedir=/root/backup/incremental_one --no-timestamp
************************************************************************************************************************
全量备份 不加--no-timestamp
2.[root@test]#innobackupex --user=root /root/backup (不加--no-timestamp的时候,backup目录一定要存在,要不然会报innobackupex: Error: Failed to create backup directory /root/backup/2014-05-22_02-07-14: No such file or directory at /usr/bin/innobackupex line 3808.)
[root@test]# ls -al /root/backup/
total 12
drwxr-xr-x. 3 root root 4096 May 22 02:07 .
dr-xr-x---. 6 root root 4096 May 22 02:07 ..
drwxr-xr-x. 6 root root 4096 May 22 02:07 2014-05-22_17-52-53
增量备份
增量备份1
innobackupex --user=root --incremental /root/backup/incremental_one --incremental-basedir=/root/backup/2014-05-22_17-52-53 --no-timestamp (这个参数一定要加,要不然无法备份成功)--parallel=2
增量备份2
innobackupex --user=root /root/backup/incremental_two --incremental-basedir=/root/backup/increament_one --no-timestamp --parallel=2
增量备份的恢复:
恢复基础备份(全备)
恢复增量备份到基础备份(开始恢复的增量备份要加--redo-only 参数,到最后一次增量备份去掉--redo-only参数
--redo-only的意思是之应用xtrabackup日志中已经提交的事务数据,不回滚还未提交的数据
innobackupex --apply-log --redo-only /root/backup/2014-05-22_17-52-53
将增量备份increament_one应用到基础备份base:
innobackupex --apply-log --redo-only /root/backup/2014-05-22_17-52-53 --incremental-basedir=/root/backup/increament_one
将增量备份increament_two应用到基础备份base:
innobackupex --apply-log /root/backup/2014-05-22_17-52-53 --incremental-basedir=/root/backup/increament_two
将所有合在一起的基础备份整体进行一次apply操作,回滚未提交的数据
innobackupex --apply-log /root/backup/2014-05-22_17-52-53
将恢复完的备份复制到数据文件目录中,赋权,然后启动mysql数据库
/usr/local/mysql/bin/mysqladmin shutdown 关闭数据库
mv /var/lib/mysql/ /var/lib/mysql_bak 把原数据库目录重命名
mkdir /var/lib/mysql 新建原数据库目录
innodbackupex --copy-back --rsync /root/backup/2014-05-22_17-52-53
chown -R mysql.mysql /var/lib/mysql
启动数据库