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恢复所有数据
原文地址:https://www.cnblogs.com/liushi-Oscar/p/9577521.html