用第三方软件备份

本文介绍MySQL中InnoDB和XtraDB存储引擎的数据备份及恢复方法,包括使用innobackupex工具进行完全备份、增量备份及其恢复过程,并讲解了相关配置和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

物理备份缺点:跨平台性差,备份时间长,冗余备份,浪费存储空间
mysqldump备份缺点:效率比较底,备份和还原速度慢,备份过程中,数据插入和更新操作会被锁也就是挂起、
XtarBackup工具:备份过程中不锁库表,适合生产环境,由专业组织percona提供,主要含有两个组件:
                        xtrabackup:C程序,支持innoDB/XtraDB  ----该主件只支持这两种表
                 innobackupex:以Perl脚本封装xtrabackup还支持Myisam  ---都可以备份,但是是对完全备份Myisam,对innoDB/XtraDB是增量备份。


安装包
libev-4.15-1.el6.rf.x86_64.rpm
percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
perl-DBD-MySQL.x86_64.0.4.023-5.el7
perl-Digest-MD5.x86_64.0.2.52-3.el7

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |  当前运行的加载到内存的值,虚拟库,不存在
| mysql              |  当前的授权库
| performance_schema |  已有库和表的信息,视图,存储过程 ---删了服务器就挂了
| sys                  当前服务器的运行参数


[root@host51 ~]# innobackupex --host localhost  --user root --password 123456 /hhh
[root@host51 ~]# cd /hhh/
[root@host51 hhh]# ls
2018-07-27_22-03-20
[root@host51 hhh]# cd 2018-07-27_22-03-20/
[root@host51 2018-07-27_22-03-20]# ls
backup-my.cnf   ibdata1  performance_schema  xtrabackup_binlog_info  xtrabackup_info     zhuhaicheng
ib_buffer_pool  mysql    sys                 xtrabackup_checkpoints  xtrabackup_logfile  zhuhaiyan
备份的文件不用搭上时间的标签
[root@host51 ~]# innobackupex --host localhost  --user root --password 123456 /zhy --no-timestamp
[root@host51 ~]# cd /zhy/ 
[root@host51 zhy]# ls
backup-my.cnf   ibdata1  performance_schema  xtrabackup_binlog_info  xtrabackup_info     zhuhaicheng
ib_buffer_pool  mysql    sys                 xtrabackup_checkpoints  xtrabackup_logfile  zhuhaiyan


完全备份
完全恢复
数据增量备份、恢复
启用MySQL服务的binlog实现对数据的实时增量备份:
启用日志 ROW STATEMENT MIXED
自定义日志文件存储目录和文件名
mysqlbinlog 文件名

记录sql命令的方式:时间点 偏移量

完全备份
备份库的全部的信息
[root@host51 ~]# innobackupex -uroot -p123456 --databases="zhuhaiyan" /datazhuhaiyan --no-timestamp

备份指定库的所有数据
[root@host51 ~]# innobackupex -uroot -p123456 --databases="zhuhaiyan.a" /zhuhaiyana --no-timestamp

备份指定表的所有数据
[root@host51 ~]# innobackupex --host localhost  --user root --password 123456 /hhh

当恢复文件的时候要求数据库的目录是空的

rm -rf /var/lib/mysql/*
当只是备份了单个的数据库还需要备份某个表,这样才可以使得mysql可以正常启动

| mysql              |  当前的授权库
| performance_schema |  已有库和表的信息,视图,存储过程 ---删了服务器就挂了
| sys                  当前服务器的运行参数

[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" /zhuss --no-timestamp
[root@host51 ~]# ls /zhuss
backup-my.cnf   ibdata1  performance_schema  xtrabackup_binlog_info  xtrabackup_info     zhuhaiyan
ib_buffer_pool  mysql    sys                 xtrabackup_checkpoints  xtrabackup_logfile

完全恢复(要求数据库目录为空)
重做日志 --apply-log
恢复数据 --copy-back

步骤:
重做日志
[root@host51 ~]# innobackupex --user root --password 123456 --apply-log /zhuss
清空数据库目录
[root@host51 ~]# systemctl stop mysqld
[root@host51 ~]# rm -rf /var/lib/mysql/*
[root@host51 ~]# ls /var/lib/mysql
恢复数据
[root@host51 ~]# innobackupex --user root --password  123456 --copy-back /zhuss
重启数据库服务
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql
[root@host51 ~]# systemctl restart mysqld

具体的步骤:
重做日志前
[root@host51 ~]# cat /zhuss/xtrabackup_checkpoints 
backup_type = full-backuped
from_lsn = 0
to_lsn = 2573975
last_lsn = 2573984
compact = 0
recover_binlog_info = 0
重做日志后
[root@host51 zhuss]# cat xtrabackup_checkpoints 
backup_type = full-prepared
from_lsn = 0
to_lsn = 2573975
last_lsn = 2573984
compact = 0
recover_binlog_info = 0


innobackupex增量备份、恢复
做首次命令
[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" /fullzhuss --no-timestamp

[root@host51 ~]# ls /fullzhuss/
backup-my.cnf   ibdata1  performance_schema  xtrabackup_binlog_info  xtrabackup_info     zhuhaiyan
ib_buffer_pool  mysql    sys                 xtrabackup_checkpoints  xtrabackup_logfile


写入数据,做增量备份

insert into zhuhaiyan.a values(10); [写1-10]

做增量备份
[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" --incremental /newdir --incremental-basedir=/fullzhuss --no-timestamp
[root@host51 ~]# ls /fullzhuss
backup-my.cnf   ibdata1  performance_schema  xtrabackup_binlog_info  xtrabackup_info     zhuhaiyan
ib_buffer_pool  mysql    sys                 xtrabackup_checkpoints  xtrabackup_logfile
[root@host51 ~]# ls /newdir
backup-my.cnf   ibdata1.meta        sys                     xtrabackup_info
ib_buffer_pool  mysql               xtrabackup_binlog_info  xtrabackup_logfile
ibdata1.delta   performance_schema  xtrabackup_checkpoints  zhuhaiyan

[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" --incremental /newdir1 --incremental-basedir=/newdir --no-timestamp
[root@host51 ~]# ls /newdir
backup-my.cnf   ibdata1.meta        sys                     xtrabackup_info
ib_buffer_pool  mysql               xtrabackup_binlog_info  xtrabackup_logfile
ibdata1.delta   performance_schema  xtrabackup_checkpoints  zhuhaiyan
[root@host51 ~]# ls /newdir1
backup-my.cnf   ibdata1.meta        sys                     xtrabackup_info
ib_buffer_pool  mysql               xtrabackup_binlog_info  xtrabackup_logfile
ibdata1.delta   performance_schema  xtrabackup_checkpoints  zhuhaiyan

innobackupex对innodb和xtrdb是增量表

innodb支持事务和事务回滚,当使用事务和事务回滚的时候使用的是事务日志 
/var/lib/mysql/事务日志文件
ib_logfile1  ---记录正确完成的sql命令
ib_logfile0
ibdata1   ---记录未提交的sql命令 LSN日志序列号
xtrabackup_checkpoints 
内容中的lsn是从/var/lib/mysql/中的ibdata1提出来的
backup_type = full-prepared
from_lsn = 0
to_lsn = 2573975
last_lsn = 2573984
compact = 0
recover_binlog_info = 0
backup-my.cnf --备份用的系统资源的参数

增量恢复
增量备份目录名 --incremental-dir=
重做并合并日志
--apply-log --redo-only
[root@host51 /]# innobackupex --user root --password 123456 --apply-log --redo-only /fullzhuss/
[root@host51 /]# innobackupex --user root --password 123456 --apply-log --redo-only /fullzhuss --incremental-dir=/newdir
[root@host51 /]# innobackupex --user root --password 123456 --apply-log --redo-only /fullzhuss --incremental-dir=/newdir1
清空数据库目录
[root@host51 /]# systemctl stop mysqld
[root@host51 /]# rm -rf /var/lib/mysql/*
[root@host51 /]# ls /var/lib/mysql
恢复数据
[root@host51 /]# innobackupex --copy-back /fullzhuss
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql   ---如果设置权限将打不开数据库
[root@host51 /]# systemctl start mysqld
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值