mysql五
day05增量备份一、启用binlog日志 实现 实时增量备份
二、使用第3方软件提供的命令做增量备份
+++++++++++++++++++++++++++++++++
一、启用binlog日志 实现 实时增量备份
1.1binlog日志介绍:二进制日志, 是MySQL数据库服务日志文件中的一种,记录执行的除查询之外的sql命令。默认没有启用。
查询的sql命令 :show desc select
1.2启用binlog日志?
vim /etc/my.cnf
server_id=50 #1-255
log-bin
binlog-format="mixed" #ROW
....
:wq
#systemctlrestartmysqld
日志文件默认存储位置: 数据库目录/var/lib/mysql/
日志文件的默认名称:主机名-bin.编号 500M
日志索引文件 host50-bin.index
1.3 查看日志文件内容?
#mysqlbinlog 目录名/日志文件名
#mysqlbinlog/var/lib/mysql/host50-bin.000001
1.4 自定定义日志文件的名字和存储目录?
#mkdir/logdir
#chowmysql/logdir
#setenforce0
#vim /etc/my.cnf
server_id=50 #1-255
#log-bin
log-bin=/logdir/plj
binlog-format="mixed"
....
:wq
#systemctlrestartmysqld
#ls /logdir/
1.5 日志文件记录sql命令的方式?
时间点
偏移量(pos)
1.6 执行日志文件内的sql命令恢复数据?
#mysqlbinlog [选项] 目录名/日志文件名| mysql-uroot-p123456
时间点
--start-datetime="yyyy-mm-ddhh:mm:ss"
--stop-datetime="yyyy-mm-ddhh:mm:ss"
偏移量(pos)
--start-position=数字 --stop-position=数字
#mysqlbinlog--start-position=293--stop-position=1490/logdir/plj.000001 |mysql -uroot-p123456
1.7手动创建新的binlog日志文件?
mysql>flush logs;
#mysql-uroot-p123456 -e"flush logs"
#mysqldump-uroot-p123456--flush-logsdb4> /root/db4.sql
systemctlrestartmysqld
1.7 删除已有的binlog日志文件
mysql> reset master;
mysql> purgemasterlogsto"日志文件名";
mysql> purgemasterlogsto "plj.000006";
++++++++++++++++++++++++++++++++++++++++++
二、使用第3方软件提供的命令做增量备份---
2.1 percona 介绍?
2.2 安装percona
#yum-yinstallperl-Digest-MD5 perl-DBD-MySQL
#rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
#rpm -ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
2.3innobackupex命令的语法格式 ?
#innobackupex
选项?
--user用户名
--password密码
--databases库名
--no-timestamp不使用系统日期做备份目录的子目录名
--apply-log恢复日志
--copy-back恢复数据
A、使用innobackupex名字只做完全 和完全恢复?
A.1完全备份
#innobackupex --userroot --password123456--databases="mysqlperformance_schema sys db66" /allbak--no-timestamp
#ls /allbak
A.2 完全恢复
#innobackupex --userroot --password123456--databases="mysqlperformance_schema sys db66" --apply-log /allbak
#rm-rf/var/lib/mysql
#mkdir/var/lib/mysql
#innobackupex --userroot --password123456--databases="mysqlperformance_schema sys db66" --copy-back /allbak
#ls/var/lib/mysql
#chown -Rmysql:mysql /var/lib/mysql
#systemctlstop mysqld
#systemctlstart mysqld
#mysql -uroot-p123456
mysql> showdatabases;
/var/lib/mysql
++++++++++++++++++++++++++++++++++++++
增量备份
--incremental目录名 #增量备份数据存储目录
--incremental-basedir=目录名 #上次备份数据存储目录
1 先要有一次完全备份/onedir
#innobackupex --userroot --password123456--databases="mysqlperformance_schema sys db66" /onedir--no-timestamp
2 增量备份
第一次增量备份 存储目录/new1dir
#innobackupex --userroot --password123456
--databases="mysqlperformance_schema sys db66"
--incremental /new1dir --incremental-basedir=/onedir --no-timestamp
第二增量备份数据存储的目录 /new2dir
#innobackupex --userroot --password123456
--databases="mysqlperformance_schema sys db66"
--incremental /new2dir --incremental-basedir=/new1dir--no-timestamp
增量备份的工作原理:
innobackupex 命令-----> innodb 存储引擎的表
数据库目录/var/lib/mysql下
事务日志文件 记录 执行的sql 操作 和 数据信息
ib_logfile1 ib_logfile0 ibdata1
LSN日志序列号
备份目录的文件说明: /onedir /new1dir /new2dir
cat xtrabackup_checkpoints
xtrabackup_logfile
增量恢复(要求数据库目录必须是空的)
--redo-only合并日志
--incremental-dir=目录名 #增量恢复时,指定使用哪个备份目录的恢复数据。
1 #rm -rf/var/lib/mysql
2 恢复日志
#innobackupex --userroot --password123456
--databases="mysqlperformance_schema sys db66"
--apply-log--redo-only/onedir
#innobackupex --userroot --password123456
--databases="mysqlperformance_schema sys db66"
--apply-log--redo-only /onedir --incremental-dir=/new1dir
#innobackupex --userroot --password123456
--databases="mysqlperformance_schema sys db66"
--apply-log--redo-only /onedir --incremental-dir=/new2dir
3 恢复数据
#innobackupex --userroot --password123456
--databases="mysqlperformance_schema sys db66"
--copy-bak /onedir
4 修改文件所有者
chown-R mysql:mysql/var/lib/mysql
5 重启数据库服务
#systemctl restartmysqld
6 查看数据
#mysql -uroot -p123456
mysql>
++++++++++++++++++++++++++++++++++++++++
恢复完全备份数据中的某张表
innobackupex命令信息:
--export导出表信息
import导入表空间
删除表空间
mysql>> db66.a
db66.b
完全备份:
#innobackupex --userroot --password123456
--databases="db66" /db66bak --no-timestamp
#ls /db66bak
mysql> use db66;
mysql> droptablea;
mysql> createtable a(id int);
#ls /var/lib/mysql/db66/
a.frma.ibd
导出表信息
#innobackupex --user root --password 123456
--databases="db66" --apply-log --export /db66bak
#ls /db66bak/db66/
删除表空间
mysql>> #ls /var/lib/mysql/db66/
把备份目录下导出的表信息文件拷贝到数据库目录下
cp /db66bak/db66/a.{cfg,exp,ibd}/var/lib/mysql/db66/
chown mysql /var/lib/mysql/db66/a.*
导入表空间
mysql>> mysql> select froma;
mysql> select fromb;
++++++++++++++++++++++++++++++++++++++++
innobackupex 增量备份
选项:
--user --password --databases
--incremental
--incremental-basedir
--apply-log --redo-only --incremental-dir
--export import
mysql>> 完全备份完全恢复
增量备份增量恢复 (增量备份原理)
使用完全备份文件恢复某张表的数据
+++++++++++++++++++++++++++++++++++++++++
53 :scp-r/var/lib/mysql 192.168.4.51:/var/lib/
51 : chown -Rmysql:mysql/var/lib/mysql
systemctlrestartmysql
页:
[1]