MySQL Enterprise Backup 4.1.3 简介

MySQL Enterprise Backup的特点

MySQL Enterprise Backup是一款专门用于备份MySQL数据库发工具。它是一个跨平台的高性能备份工具,它具有丰富的功能,包括:热备份,增量备份,选择备份,直接备份到云,加密,压缩备份等。
此工具是针对Innodb引擎进行优化的,但它同时可以备份和恢复所有MySQL能支持的引擎。它以block级别进行并行备份,性能大大优于逻辑备份工具如mysqldump。
它是一款商业收费软件。

下载和安装

Oracle的edelivery网站上下载:

选择版本

选择平台

在这里插入图片描述

安装

root@scutech:/home/scutech# dpkg -i meb-4.1.3-ubuntu18.04-x86-64bit.deb 
Selecting previously unselected package meb.
(Reading database ... 166554 files and directories currently installed.)
Preparing to unpack meb-4.1.3-ubuntu18.04-x86-64bit.deb ...
Unpacking meb (4.1.3) ...
Setting up meb (4.1.3) ...
root@scutech:/home/scutech# which mysqlbackup
/usr/bin/mysqlbackup
root@scutech:/home/scutech# mysqlbackup --version
MySQL Enterprise Backup version 4.1.3 Linux-4.15.0-39-generic-x86_64 [2019/02/11 21:24:08] 
Copyright (c) 2003, 2019, Oracle and/or its affiliates. All Rights Reserved.
[Build ID : 14320005.49c44c9da9b35aaeff39804d8708eb5d2b857392]

200114 19:28:38 MAIN    INFO: A thread created with Id '140031108136192' 

Run mysqlbackup --help for help information.

root@scutech:/home/scutech# 

最佳实践

参数文件

在参数文件中加一节[mysqlbackup],把每次都要用到且不变化的参数写入到这个文件中

单个目录或带时间戳的子目录

–with-timestamp会在指定的目录下创建一个带时间戳到子目录。
如果为了更方便的进行备份周期的管理,可以选择这个参数。
但进行增量备份时在–incremental-base参数需要指定前一次备份的目录,如果需要前一次备份的目录可以被预测,请不要使用–with-timestamp

全量备份或增量备份

如果数据小,或数据变化量大,可以考虑进行全量备份,否则考虑增量备份

压缩或不压缩

LZ4的压缩效率高,速度快,通常是推荐选项。但最后进行测试。

全量备份恢复

全量备份到单个文件

$ mysqlbackup --backup-image=./my210.mbi --backup-dir=/home/scutech/back backup-to-image
......
200210 10:06:30 MAIN    INFO: Full Image Backup operation completed successfully.
200210 10:06:30 MAIN    INFO: Backup image created successfully.
200210 10:06:30 MAIN    INFO: Image Path = /home/scutech/back/my210.mbi
200210 10:06:30 MAIN    INFO: MySQL binlog position: filename master-binlog.000004, position 194
200210 10:06:30 MAIN    INFO: GTID_EXECUTED is 3ea8f636-36bd-11ea-b292-fa163e0ec694:1-180351

-------------------------------------------------------------
   Parameters Summary         
-------------------------------------------------------------
   Start LSN                  : 99457536
   End LSN                    : 99457762
-------------------------------------------------------------

mysqlbackup completed OK!

流备份

单个备份文件备份到远端主机
mysqlbackup --defaults-file=~/my_backup.cnf --backup-image=- --backup-dir=/tmp backup-to-image |
ssh @ ‘cat > ~/backups/my_backup.img’

备份到云

备份到Oracle云
mysqlbackup
–cloud-service=openstack --cloud-container=
–cloud-user-id=-: --cloud-password=’’
–cloud-tempauth-url=https://.storage.oraclecloud.com
–cloud-trace=1 --cloud-object=image_900.mbi
–backup-dir=/home/user/dba/orbackuptmpdir
–backup-image=-
backup-to-image

在openstack对象存储上创建一个云备份
mysqlbackup
–include-tables=testdb.t1 --use-tts=with-full-locking
–cloud-service=openstack --cloud-container=
–cloud-user-id= --cloud-password=
–cloud-region= --cloud-tenant=
–cloud-identity-url=
–cloud-trace=1 --cloud-object=image_800.mbi
–backup-dir=/home/user/dba/opbackuptmpdir
–backup-image=-
backup-to-image

在Amazon S3上创建一个云备份
mysqlbackup
–cloud-service=s3 --cloud-aws-region=
–cloud-access-key-id= --cloud-secret-access-key=< aws secret access key>
–cloud-bucket= --cloud-object-key=
–backup-dir=/home/user/dba/s3backuptmpdir
–backup-image=-
backup-to-image

将Amazon S3上的一个云备份解到备份目录
mysqlbackup
–cloud-service=s3 --cloud-aws-region=
–cloud-access-key-id= --cloud-secret-access-key=< aws secret access key>
–cloud-bucket= --cloud-object-key=
–backup-dir=/home/user/dba/s3backupdir
–backup-image=-
image-to-backup-dir

增量备份

Differential 和 Incremental Backup

Differential Backup是在上次全量备份的增量备份
Incremental Backup是在上次备份的增量备份

–incremental 和 --incremental-with-redo-log-only

–incremental 从datafile中读取变化的块
–incremental-with-redo-log-only 从redo logfile中读取变化的块
从redo中读取变化的块通常比从datafile中读取要快,但不绝对
从redo中读取块的增量备份的备份频率设置要考虑redo logfile的大小和redo log的产生量。

–incremental-base和–start-lsn

–incremental-base=history:last_backup从mysql.backup_history表中查找最后的lsn号,作为增量备份的起始点。
–incremental-base=dir:directory_path,从备份文件中查找最后的lsn号,作为增量备份的起始点。
–start-lsn从输入中接收lsn号,作为增量备份的起始点。

增量备份案例

从最后一次备份进行增量备份
mysqlbackup --incremental=optimistic --incremental-base=history:last_backup --backup-dir=/home/scutech/back/incr1 --backup-image=incremental_image1.bi backup-to-image

以指定的目录做基准目录进行备份
mysqlbackup --incremental=optimistic --incremental-base=dir:/home/scutech/back/full1 --backup-dir=/home/scutech/back/incr1 --backup-image=incremental_image1.bi backup-to-image
用在backup-dir目录下的meta/backup_variables.txt中end_lsn加一作为增量start_lsn。

在上次增量备份的基础上再次进行增量备份
mysqlbackup --incremental=optimistic --incremental-base=dir:/home/scutech/back/incr1 --backup-dir=/home/scutech/back/incr2 --backup-image=incremental_image2.bi backup-to-image

优化备份(Optimistic Backup)

优化备份的两个阶段

优化阶段,备份不活跃的表。
常规阶段,备份活跃的表,和redo,undo和系统表空间

判断活跃表的标准

optimistic-time=YYMMDDHHMMSS在这个时间后变更过的表是活跃表;
optimistic-time=now 所有的表都是活跃表
optimistic-busy-tables 指定的表为活跃表,例如:–optimistic-busy-tables="^mydatabase.mytables-.*"表示mydatabase数据库中mytables-开头的表为活跃表;
以上两个参数同时指定,optimistic-busy-tables优先。

恢复

全量恢复

mysqlbackup --defaults-file=<my.cnf> -uroot --backup-image=<image_name>
–backup-dir= --datadir= copy-back-and-apply-log
把备份恢复到一个新建的目录:
mysqlbackup --backup-image=full1.mbi --backup-dir=/home/scutech/back/full1 --datadir=/home/scutech/back/rest1 copy-back-and-apply-log
在恢复过程中注意:

  • 恢复的目标目录应为空
  • 注意恢复后的文件属主和权限
  • mysqlbackup在备份过程中会自动把old_alter_table设置成“1”,结束时设置成“0”,这个过程在log中可以看到,如果程序异常退出需要手工设置

参数

copy-back 将备份文件拷贝到目标目录
apply-log 对–backup-dir中文件应用日志,前滚到一致的状态
copy-back-and-apply-log 前面两项工作都做
backup-and-apply-log 备份并应用日志

增量恢复

方法一:
使用copy-back-and-apply-log恢复全量
使用copy-back-and-apply-log恢复增量
方法二:
前滚全量
mysqlbackup --backup-dir=/full-backup/ apply-log
前滚增量
mysqlbackup --incremental-backup-dir=/incr-backup
–backup-dir=/full-backup apply-incremental-backup
继续前滚所以增量,随时可以用copy-back恢复

创建从服务器

在主库上进行全量备份并恢复到从库

全量备份到从服务器
mysqlbackup --backup-image=- --backup-dir=/home/scutech/back/full4 backup-to-image |
ssh [email protected] ‘cat > /home/scutech/back/full4/my_backup.img’

传输临时目录
scp -r /home/scutech/back/full4/* [email protected]:back/full4

恢复
mysqlbackup --backup-image=/home/scutech/back/full4/my_backup.img --backup-dir=/home/scutech/back/full4 --datadir=/var/lib/mysql copy-back-and-apply-log --force

修改权限
chown -R mysql. /var/lib/mysql

启动mysql服务

修改配置文件,增加两个参数skip-slave-start 和 event_scheduler=off,然后启动mysql服务

记录binlog位置

启动时,在error log中可以查看到binlog的位置,但不一定准确,因为Innodb引擎记录的binlog的位置不包括DDL语句和非Innodb表的变更,要在备份记录中查询binlog的位置
cat /home/scutech/back/full4/meta/backup_variables.txt | grep binlog_position
binlog_position=master-binlog.000002:194

配置主库信息

例如:

CHANGE MASTER TO master_host='192.168.17.40',master_port=3306,master_user='root',master_password='dingjia',MASTER_LOG_FILE='master-binlog.000002', MASTER_LOG_POS=194,master_auto_position=0;

启动复制

先在从库上disable所有事件的状态:
UPDATE mysql.event SET status = ‘SLAVESIDE_DISABLED’;
修改配置文件,删除前面增加人两个参数skip-slave-start 和 event_scheduler=off,然后启动复制。
start slave;
show slave status \G;

发布了23 篇原创文章 · 获赞 2 · 访问量 1239

猜你喜欢

转载自blog.csdn.net/weixin_43424368/article/details/103978144