xtra+binlog增量备份脚本(上)

2021-06-10 11:21:44 浏览数 (1)

一.备份原理

innobackupex原理

首先会启动一个xtrabackup_log后台检测的进程,实时检测mysql redo的变化,一旦发现redo有新的日志写入,立刻将日志写入到日志文件xtrabackup_log中 复制innodb的数据文件和系统表空间文件idbdata1到对应的以默认时间戳为备份目录的地方 复制结束后,执行flush table with read lock操作 复制.frm .myd .myi文件 并且在这一时刻获得binary log 的位置 将表进行解锁unlock tables 停止xtrabackup_log进程

binlog原理

MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启binlog日志大概会有1%的性能损耗。binlog在恢复的时候,逐个执行sql语句,可以根据pos点和时间来指定恢复的范围。

DDL 主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。

DML 主要的命令是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

binlog日志包括两类文件: 1)二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件 2)二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句select)语句事件。

特点

mysqldump优点:mysqldump的优点就是逻辑备份,把数据生成SQL形式保存,在单库,单表数据迁移,备份恢复等场景方便,SQL形式的备份文件通用,也方便在不同数据库之间移植。对于InnoDB表可以在线备份。

mysqldump缺点:mysqldump是单线程,数据量大的时候,备份时间长,甚至有可能在备份过程中非事务表长期锁表对业务造成影响(SQL形式的备份恢复时间也比较长)。mysqldump备份时会查询所有的数据,这可能会把内存中的热点数据刷掉

innobackupex优点:物理备份可以绕过MySQL Server层,加上本身就是文件系统级别的备份,备份速度块,恢复速度快,可以在线备份,支持并发备份,支持加密传输,支持备份限速

innobackupex缺点:要提取部分库表数据比较麻烦,不能按照基于时间点来恢复数据,并且不能远程备份,只能本地备份,增量备份的恢复也比较麻烦。如果使用innobackupex的全备 binlog增量备份就可以解决基于时间点恢复的问题

备份策略

根据需求,使用innobackupex全备份 innobackupex增量备份 binlog方式进行备份。 在出现问题时使用innobackupex快速的恢复

二.环境准备

开启binlog

编辑/etc/my.cnf文件添加在[mysqld]版块下添加如下变量,添加后重启服务。

  1. #开启,并且可以将mysql-bin改为其它的日志名
  2. log-bin=mysql-bin
  3. #添加id号,如果做主从,就不能一样
  4. server-id=1
  5. #超过200M将生产新的文件,最大和默认值是1GB
  6. max_binlog_size=1G
  7. #此参数表示binlog使用最大内存的数,默认1M。
  8. max_binlog_cache_size=1M
  9. #此参数表示binlog日志保留的时间,默认单位是天。
  10. expire_logs_days=7

创建授权用户

create user 'back'@'localhost' identified by '123456'; grant reload,lock tables,replication client,create tablespace,process,super on *.* to 'back'@'localhost' ; grant create,insert,select on percona_schema.* to 'back'@'localhost';

安装innobackupex

1.安装依赖 yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev-devel

2.下载安装 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm yum -y install percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm

0 人点赞