day05 增量备份备份与增量恢复 一、启用binlog日志 实现时时增量备份 1.1 binlog日志介绍: 又被称为二进制日志 是mysql数据库服务日志文件的一种。记录连接服务器后,执行的除查询之外的sql命令。 mysql> 查看的 : show desc select
写的: insert update delete

1.2 启用binlog日志
#vim /etc/my.cnf [mysqld] server_id=id号 #1-255 log-bin binlog_format="mixed"
:wq #systemctl restart mysqld 默认存储路径 /var/lib/mysql/ 默认文件名 主机名-bin.000001 >500M 主机名-bin.000002 >500M 主机名-bin.000003

日志索引文件: 主机名-bin.index 记录当前已有的binlog日志文件名。 ++++++++++++++++++++++++++++++++ 1.2 查看binlog日志文件内容 #mysqlbinlog binlog日志文件名 +++++++++++++++++++++++++++ 启用日志是指定日志文件的存储目录和名称 #mkdir /logdir #chown mysql /logdir

#vim /etc/my.cnf [mysqld] server_id=id号 #1-255 log-bin=/logdir/plj binlog_format="mixed" #设置日志文件的记录格式 :wq #systemctl restart mysqld #ls /logdir/plj.* ++++++++++++++++++++++++++++++ 1.3 binlog日志文件记录sql命令的方式: 时间点 pos点 ++++++++++++++++++++++++++++++ 执行binlog里记录的sql命令恢复数据? #mysqlbinlog 选项 binlog日志文件名 | mysql -uroot -pabc123

时间点 --start-datetime="yyyy-mm-dd hh:mm:ss" --stop-datetime="yyyy-mm-dd hh:mm:ss"

pos点 --start-position=数字 --stop-position=数字

#mysqlbinlog --start-position=296 --stop-position=1073 /logdir/plj.000001 | mysql -uroot -pabc123 ++++++++++++++++++++++++++++++++++++++++ 收到生成新的binlog日志文件(默认>500M后自动创建新的) #systemctl restart mysqld mysql> flush logs; #mysql -uroot -pabc123 -e "flush logs" #mysqldump -uroot -pabc123 --flush-logs userdb > userdb.sql

删除日志文件 #rm -rf 日志文件名; mysql> reset master; mysql> purge master log to "日志文件名"; +++++++++++++++++++++++++++++++++++++++++ binlog日志 1 binlog日志介绍 2 启用binlog #vim /etc/my.cnf [mysqld] server_id=11 log-bin【=目录名/文件名】 binlog_format="mixed" :wq #systemctl restart mysqld 3 查看日志文件内容 #mysqlbinlog binlog文件名

4 binlog文件是如何记录sql命令 时间点 pos

5 执行binlog文件里记录的sql命令恢复数据 #mysqlbinlog 选项 binlog文件名 | mysql -uroot -pabc123

6 手动创建日志文件

7 删除日志文件 +++++++++++++++++++++++++++++++++++++++ 1 在12数据库服务器上启用binlog日志:要求如下 日志文件存储目录是 /logdir 文件名 master12 2 把gamedb库的初始数据保存在日志文件编号1里。 create database gamedb; create table gamedb.t1(id int); insert into gamedb.t1 values(100); insert into gamedb.t1 values(200); insert into gamedb.t1 values(300); 3 其他数据保存在日志文件编号1之后的文件里 insert into gamedb.t1 values(400); insert into gamedb.t1 values(500); insert into gamedb.t1 values(600); insert into gamedb.t1 values(700); delete from gamedb.t1 where id=200 or id=300 4 使用binlog日志恢复删除的数据。

++++++++++++++++++++++++++++++++++++++++++ 二、使用第3方软件percona提供的命令innobackupex做增量备份 2.1 安装软件包 percona 2.2 命令格式 #innobackupex <选项> 选项 --user --password --databases --no-timestamp --apply-log --copy-back

支持事务 和 事务回滚 ls /var/lib/mysql
事务日志文件 ibdata

LSN 日志序列号 ib_logfile0 sql命令 ib_logfile1

完全备份 #innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" 备份目录名 --no-timestamp

#rm -rf /var/lib/mysql #mkdir /var/lib/mysql

完全恢复数据 #innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log 备份目录名

#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --copy-back 备份目录名 #ls /var/lib/mysql/ #chown -R mysql:mysql /var/lib/mysql #systemctl stop mysqld #systemctl start mysqld #mysql -uroot -pabc123 mysql>show databases; +++++++++++++++++++++++++++++++++++ --incremental 目录名 --incremental-basedir=目录名

增量备份(必须先有一次备份,通常会先做一次完全备份) #innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --incremental 目录名 --incremental-basedir=目录名 --no-timestamp

+++++++++++++++++++++++++++++++++ --incremental-dir=目录名 --redo-only #rm -rf /var/lib/mysql #mkdir /var/lib/mysql 增量恢复 1恢复日志文件 #innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log --redo-only /allbak

#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log --redo-only /allbak --incremental-dir=目录

#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log --redo-log /allbak --incremental-dir=目录

xtraback_checkpositions lsn

2恢复数据 #innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --copy-back 完全备份目录名

#chown -R mysql:mysql /var/lib/mysql

3重启服务 #systemctl stop mysqld #systemctl start mysqld