目录:一,增量备份与恢复
二,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命令执行后所产生的数据)