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
  • 全备份
    • 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恢复所有数据

以上是关于Xtrabackup数据库热备份记录的主要内容,如果未能解决你的问题,请参考以下文章

Xtrabackup 能不能做单库的备份恢复

使用XtraBackup热备份搭建MySQL主从同步

xtrabackup热备和恢复mysql

如何使用xtrabackup备份来恢复到已有mysql上

用XtraBackup备份时报错又一个错误,这是啥原因

Xtrabackup实现MySQL备份