MySQL Enterprise Backup使用简介

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL Enterprise Backup是一款专门用于备份MySQL数据库发工具。

MySQL Enterprise Backup的特点


MySQL Enterprise Backup是一款专门用于备份MySQL数据库发工具。它是一个跨平台的高性能备份工具,它具有丰富的功能,包括:热备份,增量备份,选择备份,直接备份到云,加密,压缩备份等。

此工具是针对Innodb引擎进行优化的,但它同时可以备份和恢复所有MySQL能支持的引擎。它以block级别进行并行备份,性能大大优于逻辑备份工具如mysqldump。

它是一款商业收费软件。


下载和安装

到Oracle的edelivery网站上下载:

image.png


选择平台

image.png


安装

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 scutech@192.168.17.149 ‘cat > /home/scutech/back/full4/my_backup.img’


传输临时目录

scp -r /home/scutech/back/full4/* scutech@192.168.17.149: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;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
关系型数据库 MySQL 数据库
Mysql基础第五天,Mysql简介
Mysql基础第五天,Mysql简介
46 0
Mysql基础第五天,Mysql简介
|
关系型数据库 MySQL 数据库
阿里云rds简介和如何使用
阿里云关系型数据库服务(RDS)是一种在云端提供的高可用性、可扩展、安全的关系型数据库服务。它支持多种数据库引擎,包括MySQL、PostgreSQL、Oracle等,并提供了丰富的监控、备份、恢复、容灾等功能,帮助企业快速构建和运维高可用、高性能的数据库系统。
2206 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
119 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
51 3
|
1月前
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
55 2
|
3月前
|
存储 关系型数据库 MySQL
[mysql]MGR简介与部署
[mysql]MGR简介与部署
|
4月前
|
SQL 安全 关系型数据库
MySQL的binlog日志的简介与查看
MySQL的binlog日志的简介与查看
605 4
|
5月前
|
存储 SQL 关系型数据库
Mysql简介
是由瑞典的Mysql AB公司开发的; 是Oracle旗下的一款产品; 是当下最流行的关系型数据库管理系统之一; 是web应用存储数据最好的DBMS之一; 是开源的,同时也是使用标准SQL语言操作数据库的; 二、使用数据库的好处 实现数据的持久化; 使用完整的管理系统来完成对数据的管理; 便于对数据的操作,例如:增删改查; 三、数据库的相关概念 DB:database的简称,用于存储数据的仓库,它采取了一系列有组织的数据;
43 4
|
5月前
|
存储 安全 关系型数据库
|
5月前
|
SQL 安全 关系型数据库
MySQL数据库——事务-简介、事务操作、四大特性、并发事务问题、事务隔离级别
MySQL数据库——事务-简介、事务操作、四大特性、并发事务问题、事务隔离级别
85 1

推荐镜像

更多