实时增量备份 、 XtraBackup 备份 、 MySQL 主从同步
day05 增量备份备份与增量恢复一、启用binlog日志 实现时时增量备份
1.1binlog日志介绍: 又被称为二进制日志 是mysql数据库服务日志文件的一种。记录连接服务器后,执行的除查询之外的sql命令。
mysql>
查看的:show desc select
写的:insert update delete
1.2启用binlog日志
#vim /etc/my.cnf
server_id=id号 #1-255
log-bin
binlog_format="mixed"
:wq
#systemctlrestartmysqld
默认存储路径/var/lib/mysql/
默认文件名 主机名-bin.000001 >500M
主机名-bin.000002 >500M
主机名-bin.000003
日志索引文件:主机名-bin.index记录当前已有的binlog日志文件名。
++++++++++++++++++++++++++++++++
1.2 查看binlog日志文件内容
#mysqlbinlog binlog日志文件名
+++++++++++++++++++++++++++
启用日志是指定日志文件的存储目录和名称
#mkdir/logdir
#chownmysql/logdir
#vim /etc/my.cnf
server_id=id号 #1-255
log-bin=/logdir/plj
binlog_format="mixed" #设置日志文件的记录格式
:wq
#systemctlrestartmysqld
#ls/logdir/plj.*
++++++++++++++++++++++++++++++
1.3binlog日志文件记录sql命令的方式:
时间点
pos点
++++++++++++++++++++++++++++++
执行binlog里记录的sql命令恢复数据?
#mysqlbinlog 选项 binlog日志文件名 |mysql-uroot-pabc123
时间点 --start-datetime="yyyy-mm-ddhh:mm:ss"
--stop-datetime="yyyy-mm-ddhh:mm:ss"
pos点 --start-position=数字
--stop-position=数字
#mysqlbinlog--start-position=296--stop-position=1073/logdir/plj.000001 |mysql -uroot-pabc123
++++++++++++++++++++++++++++++++++++++++
收到生成新的binlog日志文件(默认>500M后自动创建新的)
#systemctlrestartmysqld
mysql> flush logs;
#mysql-uroot-pabc123 -e"flushlogs"
#mysqldump -uroot-pabc123--flush-logsuserdb > userdb.sql
删除日志文件
#rm-rf日志文件名;
mysql> resetmaster;
mysql> purgemaster logto"日志文件名";
+++++++++++++++++++++++++++++++++++++++++
binlog日志
1binlog日志介绍
2 启用binlog
#vim /etc/my.cnf
server_id=11
log-bin【=目录名/文件名】
binlog_format="mixed"
:wq
#systemctl restartmysqld
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里。
createdatabase gamedb;
create table gamedb.t1(id int);
insert intogamedb.t1 values(100);
insert intogamedb.t1 values(200);
insert intogamedb.t1 values(300);
3 其他数据保存在日志文件编号1之后的文件里
insert intogamedb.t1 values(400);
insert intogamedb.t1 values(500);
insert intogamedb.t1 values(600);
insert intogamedb.t1 values(700);
deletefrom gamedb.t1where > 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--userroot --passwordabc123--databases="系统库列表 存储数据库" 备份目录名 --no-timestamp
#rm-rf/var/lib/mysql
#mkdir/var/lib/mysql
完全恢复数据
#innobackupex--userroot --passwordabc123--databases="系统库列表 存储数据库"--apply-log备份目录名
#innobackupex--userroot --passwordabc123--databases="系统库列表 存储数据库"--copy-back备份目录名
#ls /var/lib/mysql/
#chown-R mysql:mysql/var/lib/mysql
#systemctl stop mysqld
#systemctl start mysqld
#mysql-uroot-pabc123
mysql>showdatabases;
+++++++++++++++++++++++++++++++++++
--incremental目录名
--incremental-basedir=目录名
增量备份(必须先有一次备份,通常会先做一次完全备份)
#innobackupex--userroot --passwordabc123--databases="系统库列表 存储数据库"--incremental 目录名 --incremental-basedir=目录名--no-timestamp
+++++++++++++++++++++++++++++++++
--incremental-dir=目录名
--redo-only
#rm -rf /var/lib/mysql
#mkdir/var/lib/mysql
增量恢复
1恢复日志文件
#innobackupex--userroot --passwordabc123--databases="系统库列表 存储数据库"--apply-log--redo-only/allbak
#innobackupex--userroot --passwordabc123--databases="系统库列表 存储数据库"--apply-log--redo-only/allbak --incremental-dir=目录
#innobackupex--userroot --passwordabc123--databases="系统库列表 存储数据库"--apply-log--redo-log/allbak --incremental-dir=目录
xtraback_checkpositionslsn
2恢复数据
#innobackupex--userroot --passwordabc123--databases="系统库列表 存储数据库"--copy-back完全备份目录名
#chown -Rmysql:mysql/var/lib/mysql
3重启服务
#systemctlstop mysqld
#systemctlstart mysqld
页:
[1]