Mysql1.5(binlog增量备份与恢复,innobackupex)

Posted yunsshcy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql1.5(binlog增量备份与恢复,innobackupex)相关的知识,希望对你有一定的参考价值。

目录:一,增量备份与恢复

        二,mysql主从同步

一增量备份与增量恢复:

1启用Mysql服务的binlog日志文件,实现对数据的实时增量备份

     (1)binlog日志介绍

     (2)启用binlog日志

     (3)手动生成新的binlog日志文件

     (4)删除已有的binlog日志文件

     (5)使用binlog日志恢复数据

(1)binlog日志介绍:

mysql数据库服务日志文件的一种,记录用户连接

数据库服务器之后,执行的除查询之外的sql命令.

(2)启用binlog日志:

1,vim  /etc/my.cnf  (配置主配置文件)

[mysqld]

server_id=51 //定义主机编号
log_bin     //启动binlog日志
binlog_format="mixed"   //定义日志记录格式
记录格式:statement:记录每条修改数据的sql命令

                row :不记录sql语句安全上下文,仅保存哪条记录被修改
                mixed:以上两者的混合,记录sql命令并且记录安全上下文,和被修改的记录
2, systemctl restart mysqld  (重起服务)

日志文件默认的存储位置:

cd /var/lib/mysql/ 

主机名-bin.index  日志索引文件(记录当前已有的binlog日志文件名)

可以用cat查看它

主机名-bin.编号 记录sql命令的日志文件(里面存放的是二进制的执行码)

查看方式:

mysqlbinlog  [选项]   mysql51-bin.000001 

mysqlbinlog mysql51-bin.000001  | grep -i insert 

选项有:

--start-datetime="yyyy-mm-dd hh:mm:ss"  //开始日期时间

--stop-datetime="yyyy-mm-dd hh:mm:ss" //结束日期时间

--start-position=数字   --stop-position=数字

定义日志文件名字存储位置:

1,mkdir   /logdir   ; chown  mysql  /logidr

2,vim  /etc/my.cnf 

[mysqld]
server_id=51
log_bin="/logdir/hcy"
binlog_format="mixed"

3,systemctl restart mysqld

注:配置好后原先的日志文件就无效了,新生成的命令都是存在/logdir/下面.

 

(3)手动生成新的binlog日志文件

 为什么要手动生成新的binlog的日志文件?

系统默认的日志文件只有大于500M才会生成新的日志文件,且无法

对单独库单独表去记录日志文件.

1,在登陆状态下:

执行mysql->flush logs;

2在操作界面下:

执行mysql  -uroot  -p密码   -e ‘flush logs‘  

或者:mysqldump  -uroot -p密码  --fulsh-logs  库名 > xxx.sql 

3,重起mysqld服务也会新生成日志文件(生产环境下不会用这种)

 

(4)删除已有的binlog日志文件

使用系统命令删除rm(索引文件不会同步更新)

使用sql命令删除:

mysql->reset  master;删除所有的日志文件重新初始化日志文件

mysql->purge  master  logs to "日志名";删除指定编号之前的日志文件

 

(5)使用binlog日志恢复数据  的命令格式

mysqlbinlog  【选项】 日志文件名   | mysql  -uroot  -p密码

指定偏移量的选项:

--start-position=数字   --stop-position=数字

指定时间的选项:

--start-datetime="yyyy-mm-dd hh:mm:ss"  //开始日期时间

--stop-datetime="yyyy-mm-dd hh:mm:ss" //结束日期时间

 

2,使用第3方软件提供命令innobackupex

1,找资源安装软件包:

percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

rpm -Uvh 查看依赖包,且安装依赖包,才能安装主包。

perl-DBD-mysql      perl-Digest-MD5

libev-4.15-1.el6.rf.x86_64.rpm 

rpm -qa | grep percona // 列出包名

rpm -ql percona-xtrabackup-24   //列出软件包提供的文件

/usr/bin/innobackupex (集成xtrabackup支持innodb 和 xtradb以及myisam)

/usr/bin/xtrabackup (只能备份innodb,和xtradb

 

2,使用innobackupex命令做备份要求?

 (1)确保数据库中的所有库,存储引擎是innodb。

 (2)要确保主目录下只有初始配置3个库

 (3)第一次要进行完全备份,备份3个主库

以上操作为必须项,主要为软件搭建环境。

 

3,innobackupex命令的语法格式

innobackupex   <选项>

--user用户   --password 密码  --databases  数据库名列表

--incremental 目录名   --incremental-basedir  目录名

 

innobackupex  --user root --password  123456  --databases="

mysql  performance_schema  sys  gamedb" 备份目录名  --no-timestamp(完全备份)

 

4,增量备份

innobackupex  --user root --password  123456  --databases="

 

mysql  performance_schema  sys  gamedb" 备份目录名  --incremental  目录名  

 --incremental-basedir=上一次备份数据存储的目录名  (增量备份)

 

注意事项:指定的备份的目录必须为空。

 

5,完全恢复

 

innobackupex --user root --password 123456 --databases="

mysql performance_schema sys gamedb" --apply-log --redo-only  完全备份目录

增量恢复:

 

innobackupex --user root --password 123456 --databases="

 

mysql performance_schema sys gamedb"   --apply-log  --redo-only   存储完全备份数据的目录

 

--incremental-basedir=目录名

拷贝文件:

innobackupex --user root --password 123456 --databases="

mysql performance_schema sys gamedb" --copy-back 存储完全备份数据的目录

 

原理问题:如果哪天把数据库的主目录干掉了,可以使用恢复日志,先恢复完全备份目录

在迭代式的恢复增量目录数据,不能越级恢复。恢复完全备份后执行命令 --copy-back命令。              最后在chown -R  mysql:mysql   mysql(目录)

 

备份配置文件说明:

cat xtrabackup_checkpoints (记录sql命令操作序列号)

backup_type = full-backuped  //备份类型(完全备份)

from_lsn = 0   //日志序列号

to_lsn = 4624642  //日志序列号

last_lsn = 4624651 //日志序列号
compact = 0
recover_binlog_info = 0

xtrabackup_logfile(存放记录sql命令与xtrabackup_checkpoints的序列号对应关系

库目录:(存放sql命令执行后所产生的数据)

 

 

 

    

 











以上是关于Mysql1.5(binlog增量备份与恢复,innobackupex)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL第五天(增量备份和增量恢复)

mysql增量备份与恢复实战

MySQL增量备份与恢复实例

Mysql增量备份与恢复实例

Mysql 通过全量备份和binlog恢复整体数据

Mysql的增量备份 及基于时间点与位置的恢复