Xtrabackup数据库热备份记录
Posted liushi-oscar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xtrabackup数据库热备份记录相关的知识,希望对你有一定的参考价值。
Xtrabackup数据库热备份记录
- 安装Xtrabackup
wget https://repo.percona.com/apt/percona-release_0.1-6.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-6.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
- 创建数据库备份用户和数据库备份存储目录
- 备份用户user
- 如果已有备份用户,则跳到下一步
CREATE USER ‘bkpuser‘@‘localhost‘ IDENTIFIED BY ‘bkppassword‘;
- 为备份用户增加权限
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ‘bkpuser‘@‘localhost‘;
flush privileges;
- 如果已有备份用户,则跳到下一步
- 创建存储目录
mkdir -p /home/dw/backup/fullbak
mkdir -p /home/dw/backup/incbak
- 备份用户user
- 全备份
innobackupex --user=dw --password=123 --no-timestamp path_to_fullbak;
- 增量备份
innobackupex --user=dw --password=123 --no-timestamp --incremental path_to_increbak --incremental-basedir=which_backup_to_base;
- 注意,每次增量备份需指定其基于哪个备份做的增量,可以为某次全备份,也可以为前一次增量备份
- 数据恢复
- 备份prepare
- 全备份恢复
innobackupex --apply-log --redo-only path_to_fullbak;
- 增量备份恢复
innobackupex --apply-log --redo-only path_to_fgullbak --incremental-dir=path_to_each_increbak;
- 注意最后一个备份的prepare不需要--redo-only参数
- 备份restore
- 在执行restore命令前,要先关闭mysql服务,并且清空mysql data_dir
innobackupex --copy-back path_to_fullbak;
- 完成之后,首先chown -R mysql:mysql /data_dir,然后重启mysql服务
- 恢复binlog
- xtrabackup的增量是定期执行的,所以要恢复任一节点的数据,必须使用binlog恢复
- 在最后一个增量文件夹内,查看xtrabackup_binlog_info,获取最后一次增量备份时的binlog文件和stop-pos
mysqlbinlog --no-defaults abs_path_to_binlog --start-position=pos | mysql -udw
恢复所有数据
- 备份prepare
以上是关于Xtrabackup数据库热备份记录的主要内容,如果未能解决你的问题,请参考以下文章