MYSQL mysqlshell 新的备份MYSQL的方式,更快,更强,更高

617a13cabf325a6b81535408de280933.png

MYSQL 从MYSQL 8 后,整体的管理方式相较于MYSQL 5.7 都有了大幅度的改变,在备份的方面MYSQL 8.021 后推出的备份方式,或者说导出的方式,通过新的方式来替换原来的mysqldump 。

这里主要有几个模块

1  table export utility 

2  table export utiltity 

3  parallel table import utility

4  instance Dump utility , schema dump , table dump utility

今天主要要说的就是第四个问题 instance dump utility , schema dump , table dump utility

这三个模块分别发布在 MYSQL 8.021  和 MYSQL 8.022 的 util.dumpInstance() , util.dumpSchemas(), util.dumpTables() 这三个,通过这三种方式来将对应的数据快速的DUMP 下来。

首先这三个模块的推出的意义在于针对 oracle cloud的方式,并且兼容本地MYSQL 的数据导出服务,这里通过多线程并行的方式增加的导出数据的速度。

在官方的文档中,提到通过这样的方式大幅度的提高了MYSQL DB system的数据的从本地导出的速度,并且快速的转移到ORACLE could的场景中。

在文件导出的过程中可以选择是数据,还是数据加表结构的方式来进行,导出的表以 tsv方式进行存储。

同时需要说明在早期的设计中如果选择部分表导出的时候,有一些选择方面的选择确实,如果你想弥补这个问题需要将你的MYSQL SHELL 调整到 MYSQL SHELL 8.028 这个版本。

如果要使用这个功能是有条件的

条件为:

1   mysql 5.7 及以上的MYSQL 版本,其他的版本则无法支持,并且这个版建议是GA ,而不是 M, P 两个系列的MYSQL 

2   整体在各种问题和版本的控制下,建议MYSQL shell 8.027 以上的版本,可以解决大部分问题。

3   必须是mysql innodb 的数据引擎

4   在数据库的一致性被需要的时候,需要 backup admin ,reload priviliege 权限被序要,否则不被需要。

5  其他的选择还有不少,这里还是本着 ,先实践,在找问题的方式,来操作

下面简单的用提供的功能来对数据库的instance , schemas , table 来进行数据的dump

1   导出一个表的数据

util.export_table("world_x.city","file:///home/mysql/city.txt")

368c598cdc7999d4a6ccc16b51d2ae7a.png

feb4ac0194eacdabd8876a83621a36a0.png

2  直接DUMP 一个表,通过多线程的模式

这个功能中的一个卖点是通过 util.dump_tables 来对数据库表DUMP 时采用多个线程来进行,并且可以通过控制导出的速率,多少线程进行导出,是否要具有一致性,以及压缩,和对数据库的字段或数据进行导出的选择。

644031f831046099375c67500af2470c.png

util.dump_tables("world_x",["city"],"/home/mysql/backup",{"threads":4,"showProgress": "true","maxRate": "10k","consistent":"false","compression":"gzip","dataOnly":"true"})

threads : 线程数

showProgress :  是否展示过程

maxRate: 对导出的速率进行控制

consistent:  导出时是否具有一致性

dataOnly: 

ddlOnly: 

all: true   导出所有的数据表和VIEW

2b3df109bc99b9b0ed2f6084142732aa.png

2a0c074413b934df0004273562fe03bb.png

单表导出数据库后,产生6个文件

导出所有的表

util.dump_tables("world_x",[],"/home/mysql/backup",{"threads":4,"showProgress": "true","maxRate": "10k","consistent":"false","compression":"gzip","all":"true"})

 util.dump_instance("/home/mysql/backup",{"threads":4,"showProgress":"true","compression":"gzip","maxRate":"10k"})

上面导出数据的方式,主要有两种,一种通过dump_tables 的方式,一种是通过dump_instance 的方式来整体将数据库的表来导出。

通过 dump 出的文件可以通过,util.load_dump("/home/mysql/backup")

命令将文件导入到系统内

 set global local_infile=ON;

f47a388c50635affadaf64fbefd48f4b.png

999d94824617aab97032fb3813031d5e.png

基于目前整体的相关的使用的说明和方案还都比较少,此项功能的测试和评估还需要继续。

bd82569f371dc3252b866c6d5cda5a57.png

基于目前

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值