绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
简单总结mysql物理备份
2019-05-02 19:34:19

===============================================================

001-xtrabackup、innobackupex物理备份简介


1、是由percona开源的免费数据库热备份软件,是专门用来非阻塞地备份InnoDB表的;

2、innobackupex是封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁(FTWRL)、获取位点(SHOW SLAVE STATUS)等。

3、备份开始时开启检测进程检测redo变化,一旦发现有新的redo日志写入,立刻将日志记入后台日志文件xtrabackup_log中,成功后输出 10:17:52 completed OK!类似信息。

4、增量备份原理:首先完成完全备份,并记录下此时检查点LSN;然后增量备份时,比较表空间中每个页的LSN是否大于上次备份的LSN,若是则备份该页并记录当前检查点的LSN。




========================================================================

002-逻辑备份或物理备份对比

一、必须在业务低峰期, 物理备份恢复快,逻辑备份恢复慢

1、100G 内的库,可以每天进行mysqldump全量备份

(mysqldump 备份出来的文件比较小,压缩之后更小)。

2、100G 以上的库,可以用 xtranbackup一周一个全备,其余每天进行增量

( xtranbackup备份备份速度快)。

二、备份恢复时间

1、逻辑导入时间一般是备份时间约5倍以上

2、跟机硬盘cpu内存有关系,以下列举几个仅供参考

举例:100GB备份

逻辑备mysqldump,30分钟左右

物理备innobackupex,一分钟10多GB,10分钟(写性能按200MB/S)


========================================================================

003-案例:innobackupex全量备份与恢复

一、全量备份

1、全量备份

# innobackupex --user=backup --password=y --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf /data/backup/


2、全量备份生成的文件

(1)# ll  /data/backup/2014-04-07_23-05-04/以时间戳命名的目录

(2)# cat xtrabackup_info

start_time = x-05-17 01:00:01

end_time = x-05-17 01:11:55

lock_time = 2

binlog_pos = filename 'mysql-bin.xxx', position xxx, GTID of the last change 'x-x-x'

从上面看到,备份开始时间为x-05-17 01:00:01,完成时间为x-05-17 01:11:55,对应的的binlog为mysql-bin.xxx,position为xxx。

(3)# cat xtrabackup_checkpoints 

backup_type = full-backuped   #备份类型为全备

from_lsn = 0                  #起始LSN号(由于是全备所以起始LSN号为0开始) 

to_lsn = 5324782783           #截止LSN号 

last_lsn = 5324782783

compact = 0

(4)# cat xtrabackup_binlog_info 用innobackupex可以获取位点

mysql-bin.000014        2983

二、恢复

准备目录与my.cnf,然后恢复全备

# innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/2014-04-07_23-05-04/

--rsync:该选项表示通过rsync工具优化本地传输,替换cp,当有很多DB和表的时候会快很多,不能--stream一起使用。



===============================================================

004-案例:innobackupex完全备份+两次增量备份

一、在原主机备份

1、完全备份数据库

innobackupex --defaults-file=/etc/my.cnf --user=r --password=1 /backup/


2、修改数据,并执行次增量备份(基于次备份的目录/backup/2018-02-27_14-44-54)

innobackupex --defaults-file=/etc/my.cnf --user=r --password=1 --incremental  --incremental-basedir=/backup/2018-02-27_14-44-54 /backup/up1


3、再次修改数据,进行第二次增量备份(基于第二次备份的目录/backup/up1/2018-02-27_14-48-24)

innobackupex --defaults-file=/etc/my.cnf --user=r --password=1 --incremental  --incremental-basedir=/backup/up1/2018-02-27_14-48-24 /backup/up2/


二、在新主机恢复

1、恢复前准备

#回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态:

innobackupex --apply-log --redo-only /root/2018-02-27_14-44-54/

增量备份整合进全备份中:

innobackupex --apply-log --redo-only /root/2018-02-27_14-44-54/ --incremental-dir=/root/up1/2018-02-27_14-48-24

innobackupex --apply-log --redo-only /root/2018-02-27_14-44-54/ --incremental-dir=/root/up2/2018-02-27_14-50-03


2、开始恢复--拷贝文件到数据目录

innobackupex --copy-back --datadir=/var/lib/mysql  /root/2018-02-27_14-44-54/



===============================================================

005-案例:innobackupex克隆slave

1、比如线上有一主一从两个数据库

由于业务的需要,一台从库的读取无法满足现在的需求,这样就需要我们在线添加从库,

由于出于安全考虑,我们通常需要在从库上进行在线克隆slave。

2、克隆slave时,常用参数

(1)-slave-info

会将master的binlog文件名和偏移量位置保存到xtrabackup_slave_info文件中。

(2)-safe-slave-backup

会暂停slave的SQL线程直到没有打开的临时表的时候开始备份。

备份结束后SQL线程会自动启动,这样操作的目的主要是确保一致性的复制状态。




动力小刚于2019年4月  个人邮箱:zcs0237#163.com


分享好友

分享这个小栈给你的朋友们,一起进步吧。

MySQL干货资料
创建时间:2020-05-06 14:18:32
每天都有干货输出哦
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~