5ol.cc 发表于 2018-10-1 15:22:42

linux mysql 物理备份-增量备份

大家好,我是霸王卸甲,今天给大家带来的是数据库中的物理备份,物理备份又包括增量备份和差异备份,今天要讲的是增量备份!!!!!!!  

  
物理备份 + binlog
  

  准备工作:
  PERCONAXtraBakuo
  它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务创建Innodb热备份;
  为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。
  percona是一家老牌的mysql技术咨询公司。它不仅提供mysql的技术支持、培训、咨询,还发布了mysql的分支版本--percona Server。并围绕
  percona Server还发布了一系列的mysql工具。
  官方站点:https://www.percona.com/
  安装:wget http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm   下载yum源
  yum -y install percona-release-0.1-3.noarch.rpm安装yum源
  yum -y install percona-xtrabackup-24.x86_64安装percona
  rpm -ql percona-xtrabackup-24查询安装结果 安装文件
  单一完全备份
  首先准备备份目录
  mkdir /xtrabackup/full -p
  连接数据库,开始备份。
  innobackupex --user=root --password='QianFeng@123' /xtrabackup/full
  请注意备份结果是否完成
  xtrabackup: Transaction log of lsn (74182721) to (74182730) was copied.
  171127 15:04:12 completed OK!
  查看备份目录。数据库,配置文件,日志文件
  ls /xtrabackup/full/
  2018-08-01_00-00-02/
  二进制日志位置
  cat /xtrabackup/full/2017-08-01_00-00-18/xtrabackup_binlog_info
  完全恢复流程
  首先停止数据库
  systemctl stop mysqld
  清理环境(模拟损坏)
  rm -rf /var/lib/mysql/*
  rm -rf /var/log/mysqld.log
  rm -rf /var/log/mysql-slow/slow.log
  生成回滚日志
  innobackupex --apply-log /xtrabackup/full/2018-08-01_00-00-18/
  恢复文件
  innobackupex --copy-back /xtrabackup/full/2018-08-01_00-00-18/
  登陆验证
  ls /var/lib/mysql
  给权限
  chown -R mysql.mysql /var/lib/mysql
  重启
  systemctl start mysqld
  mysql -uroot -p'QianFeng@123'
  增量备份流程
  create database testdb;
  use testdb;
  create table test(id int);
  insert into test values (1);
  select * from test;
  模拟数据
  首先完整备份下周一的
  rm -rf /xtrabackup/*
  自己设置下时间 以免做乱了
  date 09010000
  innobackupex --user=root --password='QianFeng@123' /xtrabackup
  ll /xtrabackup/
  2018-09-01_00-00-04
  数据库中的记录是1条
  备份下周二的
  date 09020000
  mysql -uroot -p'QianFeng@123' -e'insert into testdb.test values (2)'
  basedir基于周一的备份。
  会生成一个今天的。
  innobackupex --user=root --password='QianFeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2017-09-01_00-00-04
  ls/xtrabackup/
  2018-09-01_00-00-04
  2018-09-02_00-00-58
  备份下周三的
  date 09030000
  mysql -uroot -p'QianFeng@123' -e'insert into testdb.test values (3)'
  innobackupex --user=root --password='QianFeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2017-09-02_00-00-26
  ls/xtrabackup/
  2018-09-01_00-00-04
  2018-09-02_00-00-58
  2018-09-03_00-00-36
  备份就到此结束
  接下来是:增量恢复流程
  停止数据库
  systemctl stop mysqld
  清理环境模拟数据丢失
  rm -rf /var/lib/mysql/*
  回滚周一日志
  innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04
  回滚周二日志
  innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04--incremental-dir=/xtrabackup/2018-09-02_00-00-26
  开始恢复数据
  innobackupex --copy-back /xtrabackup/2017-09-01_00-00-06
  chown -R mysql.mysql /var/lib/mysql
  systemctl start mysqld
  登陆查询记录。发现是周二的
  想要恢复周三还得在回滚一次日志
  innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04--incremental-dir=/xtrabackup/2018-09-03_00-00-27
  停止数据库
  systemctl stop mysqld
  恢复备份
  innobackupex --copy-back /xtrabackup/2018-09-01_00-00-04
  给下权力
  chown -R mysql.mysql /var/lib/mysql
  systemctl start mysqld
  进入数据库查看数据是否恢复
  mysql -uroot -p'QianFeng@123'


页: [1]
查看完整版本: linux mysql 物理备份-增量备份