美文网首页
MySQL之:Xtrabackup备份示例

MySQL之:Xtrabackup备份示例

作者: Simon_Ye | 来源:发表于2020-04-01 18:02 被阅读0次

示例:Xtrabackup完全备份及还原

在原主机(备份)

  1. 完全备份:innobackupex --user=root --password=123456 /backups
  2. 复制备份文件到远程主机:scp -r /backups/2020-03-31_11-55-57/ 192.168.27.17:/data/

在目标主机(还原)

  1. 整理完全备份,且回滚事务日志:innobackupex --user=root --password=123456 --apply-log /data/2020-03-31_11-55-57/
  2. 停止服务:systemctl stop mariadb.service
  3. 清空数据库目录:rm -rf /var/lib/mysql/*
  4. 恢复数据库:innobackupex --user=root --password=123456 --copy-back /data/2020-03-31_11-55-57/
  5. 修改数据库文件权限:chown -R mysql.mysql /var/lib/mysql/
  6. 启动数据库:systemctl start mariadb.service

示例:Xtrabackup完全、增量备份+二进制日志备份及还原

在原主机(备份)

  1. 完全备份:innobackupex --user=root --password=123456 /backups
  2. 创建增量备份文件夹:mkdir /backups/inc{1,2}
  3. 修改数据库
  4. 第一次增量备份:innobackupex --user=root --password=123456 --incremental /backups/inc1 --incremental-basedir=/backups/2020-03-31_12-54-33
  5. 修改数据库
  6. 第二次增量备份:innobackupex --user=root --password=123456 --incremental /backups/inc2 --incremental-basedir=/backups/inc1/2020-03-31_12-58-06
  7. 备份二进制日志文件:cp /data/mariadb/bin_log/mariadb-bin.* /backups/
  8. 复制备份文件到远程主机:scp -r /backups/* 192.168.27.17:/data/

在目标主机(还原)

  1. 不启动 mariadb
  2. 清空数据库目录:rm -rf /var/lib/mysql/*
  3. 整理完全备份,不回滚事务日志:innobackupex --apply-log --redo-only /data/2020-03-31_12-54-33/
  4. 整理第一次增量备份,不回滚事务日志:innobackupex --apply-log --redo-only /data/2020-03-31_12-54-33/ --incremental-dir=/data/inc1/2020-03-31_12-54-33
  5. 整理第二次增量备份,不回滚事务日志:innobackupex --apply-log --redo-only /data/2020-03-31_12-54-33/ --incremental-dir=/data/inc2/2020-03-31_12-59-16/
  6. 整理所有备份,且回滚事务日志:innobackupex --apply-log /data/2020-03-31_12-54-33/
  7. 检查数据库是否清空:ls /var/lib/mysql/
  8. 恢复数据库:innobackupex --copy-back /data/2020-03-31_12-54-33/
  9. 修改数据库文件权限:chown -R mysql:mysql /var/lib/mysql/
  10. 禁止用户访问数据库:vim /etc/my.cnf,在[mysqld]下添加skip-networking
  11. 查看最后一次增量备份记录二进制日志文件名和 position
  12. 生成二进制日志文件 sql 脚本:mysqlbinlog --start-position=XXX /data/mariadb-bin.000003 > /data/binlog.sql
  13. 重启数据库:systemctl restart mariadb.service
  14. 导入二进制日志文件 sql 脚本:mysql -uroot -p123456 /data/binlog.sql
  15. 解除禁止用户访问:vim /etc/my.cnf,删除[mysqld]下的skip-networking
  16. 重启数据库:systemctl restart mariadb.service

示例:Xtrabackup单表导出和导入

  1. 单表备份
    innobackupex --include='hellodb.students' /backups
  2. 备份表结构
    mysql -e 'show create table hellodb.students' > students.sql
  3. 删除表
    mysql -e 'drop table hellodb.students
  4. innobackupex --apply-log --export /backups/2020-03-31_15-03-28
  5. 创建表
    mysql> CREATE TABLE 'studetns'(
    `StuID` int(10) unsigned NOT NULL AUTO_INCREMENT,
    'Name' varchar(50) NOT NULL,
    'Age' tinyint(3) unsigned NOT NULL,
    'Gender' enum('F','M') NOT NULL,
    'ClassID' tinyint(3) unsigned DEFAULT NULL,
    'TeacherID' int(10) unsigned DEFAULT NULL,
    PRIMARY KEY ('StuID')
    ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8
    
  6. 删除表空间
    alter table students discard tablespace;
  7. cp /backups/2020-03-31_15-03-28/hellodb/students.{cfg,exp,ibd}
  8. chown -R mysql:mysql /var/lib/mysql/hellodb/
  9. mysql> alter table students import tablespace;

相关文章

网友评论

      本文标题:MySQL之:Xtrabackup备份示例

      本文链接:https://www.haomeiwen.com/subject/pcvauhtx.html