MySQL Enterprise Backup使用简介

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 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;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
关系型数据库 MySQL 数据库
Mysql基础第五天,Mysql简介
Mysql基础第五天,Mysql简介
103 0
Mysql基础第五天,Mysql简介
|
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
207 0
|
5月前
|
存储 SQL 关系型数据库
MySQL存储引擎简介
在选择相应的存储引擎时,需要充分考虑实际业务场景、性能需求和数据一致性要求,从而为数据管理提供最佳支持。
306 17
|
6月前
|
SQL 缓存 关系型数据库
MySQL8.4 Enterprise安装Firewall及测试
MySQL8.4 Enterprise安装Firewall及测试
142 0
|
8月前
|
SQL 关系型数据库 MySQL
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
|
9月前
|
自然语言处理 Java 关系型数据库
Java mysql根据很长的富文本如何自动获取简介
通过使用Jsoup解析富文本并提取纯文本,然后根据需要生成简介,可以有效地处理和展示长文本内容。该方法简单高效,适用于各种应用场景。希望本文对您在Java中处理富文本并生成简介的需求提供实用的指导和帮助。
134 9
|
10月前
|
存储 Oracle 关系型数据库
索引在手,查询无忧:MySQL索引简介
MySQL 是一款广泛使用的关系型数据库管理系统,在2024年5月的DB-Engines排名中得分1084,仅次于Oracle。本文介绍MySQL索引的工作原理和类型,包括B+Tree、Hash、Full-text索引,以及主键、唯一、普通索引等,帮助开发者优化查询性能。索引类似于图书馆的分类系统,能快速定位数据行,极大提高检索效率。
157 8
|
12月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
292 3
|
12月前
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
161 2
|
存储 关系型数据库 MySQL
[mysql]MGR简介与部署
[mysql]MGR简介与部署
287 1

推荐镜像

更多