在这篇文章中,我将试图掩盖一些转储和MySQL壳提供的数据加载工具。
MySQL壳是什么?
它是一个可靠的客户并为MySQL代码编辑器。除了api来处理MySQL, MySQL Shell提供了JavaScript和Python的脚本功能。它提供了一个AdminAPI管理MySQL服务器创建InnoDB集群和ReplicaSet部署。它支持X DevAPI SQL和NoSQL工作通过X协议接口。最后,它提供了实用程序使在Python中使用MySQL和Javascript模式更容易。
现在,让我们进入一些实用的东西,看看这些工具为我们提供什么。
转储工具
转储的效用,有三个工具:util.dumpInstance (), util.dumpSchemas(),和实效。dumpTables()让我们逐个讨论。
1。“util.dumpInstance()”——这是介绍了MySQL壳牌8.0.21和支持所有数据库的导出扣除information_schema, MySQL, ndbinfo, performance_schema,系统模式。可以将备份保存在本地或从MySQL远程Shell实用程序。
执行一个完整的实例转储与“util.dumpInstance ():
通过MySQL)登录到数据库层。
|
1
|
壳牌
&
gt
;
mysqlsh
- - -
uri
根
@
本地主机
|
b)做实际的备份之前,我们将首先执行一个dryRun程序,以检查任何潜在的问题或兼容性问题。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
dumpInstance
(
“/ home /备份/”
,
{
dryRun
:”真正的”}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
倾销
。
收购
全球
读
锁
全球
读
锁
收购了
初始化
- - - - - -
完成
1
出
的
5
模式
将
是
倾倒
和
在
他们
16
表
,
0
的观点
。
3
出
的
5
用户
将
是
倾倒
。
收集
信息
- - - - - -
完成
所有
交易
有
被
开始
全球
读
锁
有
被
发布
写作
全球
DDL
文件
写作
用户
DDL
写作
DDL
- - - - - -
完成
开始
数据
转储
0
%
(
0
行
/
~
1.60米
行
)
,
0.00
行
/
年代
,
0.00
B
/
年代
未压缩的
,
0.00
B
/
年代
压缩
|
这里,我们没有得到任何问题或警告我们是好来进行实际的备份过程。
c)运行的完整实例备份和保存在目标位置。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
dumpInstance
(
“/ home /备份/”
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29日
|
倾销
。
收购
全球
读
锁
全球
读
锁
收购了
初始化
- - - - - -
完成
1
出
的
5
模式
将
是
倾倒
和
在
他们
16
表
,
0
的观点
。
3
出
的
5
用户
将
是
倾倒
。
收集
信息
- - - - - -
完成
所有
交易
有
被
开始
全球
读
锁
有
被
发布
写作
全球
DDL
文件
写作
用户
DDL
运行
数据
转储
使用
4
线程
。
请注意
:
进步
信息
使用
估计
值
和
可能
不
是
准确的
。
写作
模式
元数据
- - - - - -
完成
写作
DDL
- - - - - -
完成
写作
表
元数据
- - - - - -
完成
开始
数据
转储
101年
%
(
1.63米
行
/
~
1.60米
行
)
,
114.56 k
行
/
年代
,
22.13
MB
/
年代
未压缩的
,
10.09
MB
/
年代
压缩
转储
持续时间
:
00
:
00
:
15秒
总
持续时间
:
00
:
00
:
15秒
模式
倾倒
:
1
表
倾倒
:
16
未压缩的
数据
大小
:
313.55
MB
压缩
数据
大小
:
142.87
MB
压缩
比
:
2.2
行
写
:
1629368
字节
写
:
142.87
MB
平均
未压缩的
吞吐量
:
20.01
MB
/
年代
平均
压缩
吞吐量
:
9.12
MB
/
年代
|
我们已经成功地完成了备份。默认情况下,它采用“4线程”和zstd压缩算法适用于数据库备份。
d)运行实例转储与更高级的选项。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
dumpInstance
(
“/ home /备份/”
,
{
线程
:
8
,
maxRate
:
“100”
,
一致的
:
真正的
,
组块
:
真正的
,
bytesPerchunk
:
“64”
,
压缩
:
“zstd”
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
|
收购
全球
读
锁
全球
读
锁
收购了
初始化
- - - - - -
完成
1
出
的
5
模式
将
是
倾倒
和
在
他们
16
表
,
0
的观点
。
3
出
的
5
用户
将
是
倾倒
。
收集
信息
- - - - - -
完成
所有
交易
有
被
开始
全球
读
锁
有
被
发布
写作
全球
DDL
文件
写作
用户
DDL
运行
数据
转储
使用
8
线程
。
请注意
:
进步
信息
使用
估计
值
和
可能
不
是
准确的
。
写作
模式
元数据
- - - - - -
完成
写作
DDL
- - - - - -
完成
写作
表
元数据
- - - - - -
完成
开始
数据
转储
101年
%
(
1.63米
行
/
~
1.60米
行
)
,
468.47 k
行
/
年代
,
84.22
MB
/
年代
未压缩的
,
38.41
MB
/
年代
压缩
转储
持续时间
:
00
:
00
:
03年年代
总
持续时间
:
00
:
00
:
03年年代
模式
倾倒
:
1
表
倾倒
:
16
未压缩的
数据
大小
:
313.55
MB
压缩
数据
大小
:
142.87
MB
压缩
比
:
2.2
行
写
:
1629368
字节
写
:
142.87
MB
平均
未压缩的
吞吐量
:
85.24
MB
/
年代
平均
压缩
吞吐量
:
38.84
MB
/
年代
|
有各种各样的选择控制,提高转储过程。
|
1
2
3
4
5
6
|
”dryRun”:
列表
出
所有
的
的
兼容性
问题
之前
开始
的
转储
。
”一致的”:
在
订单
来
提供
一致的
备份
,
它
自动
获得
一个
全球
读
锁
。
通过
默认的
,
它
是
转
在
。
”组块”:
分裂
每一个
表”年代
数据
成
一个
数量
的
文件
。
它
是
启用
通过
默认的
。
”bytesPerChunk”:
指定
的
近似
数量
的
字节
那
应该
是
写
为
每一个
数据
块
。
”线程”:
的
数量
的
平行
线程
来
雇佣
当
倾销
数据
从
的
MySQL
实例
。
“4”
线程
是
使用
通过
默认的
。
”maxRate”:
最大
数据
读
吞吐量
为
每一个
线程
在
的
转储
在
字节
每
第二个
。
|
2)“实效。转储模式”– This was introduced in MySQL Shell 8.0.21 and supports the export of selected databases either locally or remotely.
执行数据库转储”util.dumpSchemas ()”。在这里我们将特定数据库(sbt)备份。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
dumpSchemas
(
(
“sbt”
]
,
“/ home /备份/ sbt /”
,
{
线程
:
2
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
|
倾销
。
收购
全球
读
锁
全球
读
锁
收购了
初始化
- - - - - -
完成
1
模式
将
是
倾倒
和
在
他们
16
表
,
0
的观点
。
收集
信息
- - - - - -
完成
所有
交易
有
被
开始
全球
读
锁
有
被
发布
写作
全球
DDL
文件
运行
数据
转储
使用
2
线程
。
请注意
:
进步
信息
使用
估计
值
和
可能
不
是
准确的
。
写作
模式
元数据
- - - - - -
完成
写作
DDL
- - - - - -
完成
写作
表
元数据
- - - - - -
完成
开始
数据
转储
104年
%
(
1.63米
行
/
~
1.56米
行
)
,
424.56 k
行
/
年代
,
81.96
MB
/
年代
未压缩的
,
37.35
MB
/
年代
压缩
转储
持续时间
:
00
:
00
:
03年年代
总
持续时间
:
00
:
00
:
03年年代
模式
倾倒
:
1
表
倾倒
:
16
未压缩的
数据
大小
:
313.55
MB
压缩
数据
大小
:
142.87
MB
压缩
比
:
2.2
行
写
:
1629368
字节
写
:
142.87
MB
平均
未压缩的
吞吐量
:
81.82
MB
/
年代
平均
压缩
吞吐量
:
37.28
MB
/
年代
|
3)“实效。转储表”– In MySQL Shell 8.0.22, the table dump utility “util.dumpTables()” was released.
执行选择性表转储。在这里,我们只需要表“sbtest2”从“sbt”数据库转储。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
dumpTables
(
“sbt”
,
(
“sbtest2”
]
,
“/ home /备份/ sbt /”
,
{
线程
:
4
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
写作
模式
元数据
- - - - - -
完成
写作
DDL
- - - - - -
完成
写作
表
元数据
- - - - - -
完成
开始
数据
转储
101年
%
(
101.89 k
行
/
~
100.58 k
行
)
,
0.00
行
/
年代
,
0.00
B
/
年代
未压缩的
,
0.00
B
/
年代
压缩
转储
持续时间
:
00
:
00
:
00年代
总
持续时间
:
00
:
00
:
00年代
模式
倾倒
:
1
表
倾倒
:
1
未压缩的
数据
大小
:
19.61
MB
压缩
数据
大小
:
8.93
MB
压缩
比
:
2.2
行
写
:
101892年
字节
写
:
8.93
MB
平均
未压缩的
吞吐量
:
19.61
MB
/
年代
平均
压缩
吞吐量
:
8.93
MB
/
年代
|
数据加载工具
到目前为止,我们已经看到了如何使用各种方法来转储。现在我们将演示如何使用一个复位命令恢复相同的各种备份。
效用”util.loadDump()加载转储在MySQL中介绍了壳牌8.0.21。它使表或表的并行加载块在数据加载过程中。
加载使用util.loadDump转储文件()。
)运行一个干燥的运行过程来验证任何兼容性问题或错误之前实际的恢复过程。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
loadDump
(
“/ home /备份/”
,
{
dryRun
:
“真正的”
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
加载
DDL
和
数据
从
“/ home /备份/”
使用
4
线程
。
开放
转储
。
。
。
dryRun
启用
,
没有
变化
将
是
使
。
目标
是
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
。
转储
是
生产
从
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
扫描
元数据
- - - - - -
完成
检查
为
精准医疗
- - - - - -
现有的
对象
。
。
。
执行
常见的
序言
SQL
执行
DDL
- - - - - -
完成
执行
视图
DDL
- - - - - -
完成
开始
数据
负载
执行
常见的
后同步信号
SQL
0
%
(
0
字节
/
313.55
MB
)
,
0.00
B
/
年代
,
16
/
16
表
完成
重新创建
索引
- - - - - -
完成
没有
数据
加载
。
0
警告
是
报道
在
的
负载
。
|
请注意——没有数据加载,它只打印我们在修复过程中任何警告或错误信息。
b)运行数据恢复过程。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
loadDump
(
“/ home /备份/”
,
{
progressFile
:
“/ home / backuplog.json”
,
线程
:
4
,
backgroundThreads
:
4
,
maxBytesPerTransaction
:
“4096”
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
加载
DDL
和
数据
从
“/ home /备份/”
使用
4
线程
。
开放
转储
。
。
。
目标
是
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
。
转储
是
生产
从
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
扫描
元数据
- - - - - -
完成
检查
为
精准医疗
- - - - - -
现有的
对象
。
。
。
执行
常见的
序言
SQL
执行
DDL
- - - - - -
完成
执行
视图
DDL
- - - - - -
完成
开始
数据
负载
执行
常见的
后同步信号
SQL
One hundred.
%
(
313.55
MB
/
313.55
MB
)
,
3.03
MB
/
年代
,
16
/
16
表
完成
重新创建
索引
- - - - - -
完成
16
块
(
1.63米
行
,
313.55
MB
)
为
16
表
在
1
模式
是
加载
在
2
最小值
43
证券交易委员会
(
avg
吞吐量
1.92
MB
/
年代
)
0
警告
是
报道
在
的
负载
。
|
在这里,我们已经成功地完成了恢复过程。
有多种选项来控制,提高数据加载过程。
|
1
2
3
4
5
|
”线程”:
的
数量
的
平行
线程
来
雇佣
当
倾销
数据
从
的
MySQL
实例
。
“4”
是
使用
通过
默认的
。
”backgroundThreads”:
的
数量
的
线程
在
的
池
的
背景
线程
那
是
使用
来
检索
的
文件
数据
。
”maxBytesPerTransaction”:
的
最大
数量
的
字节
那
可以
是
加载
从
一个
数据
文件
与
一个
单
负载
数据
声明
。
”loadIndexes”:
二次
索引
是
不
建
在
的
进口
当
这
选项
是
集
来
假
;
你
必须
做
所以
后来
。
这
可能
来
在
方便的
如果
你
的单独加载的DDL文件和数据文件,希望修改后的表结构DDL文件加载。
“deferTableIndexes”:推迟建立二级索引之前加载表”
年代
内容
。
这
可能
速度
向上
加载
。
从
表示
那
所有
索引
是
建
作为
的
表
是
加载
。
|
在云存储备份(GCP和AWS S3)
MySQL壳还提供了远程存储转储的能力在一些S3-compatible云存储,如Amazon S3和谷歌云存储。在这里,我们将讨论如何去做与谷歌云存储和一个Amazon S3环境。
让我们开始通过配置谷歌云存储。
先决条件
- 在谷歌云存储桶应该存在
- 访问密钥和秘密文件中定义(“/ home /凭证”)
|
1
2
3
|
(
华东桐柏
]
aws_access_key_id
=
xxxxxxxx
aws_secret_access_key
=
xxxxxxxx
|
- GCP云存储端点——“https://storage.googleapis.com”
)运行的完整备份,并把它的GCP桶“ajpxctest”。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
dumpInstance
(
“sbt”
,
{
s3BucketName
:
“ajpxctest”
,
s3EndpointOverride
:
“https://storage.googleapis.com”
,
s3CredentialsFile
:
“/ home /凭证”
,
s3Profile
:
“gcb”
,
线程
:
4
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29日
|
倾销
。
收购
全球
读
锁
全球
读
锁
收购了
初始化
- - - - - -
完成
1
出
的
5
模式
将
是
倾倒
和
在
他们
16
表
,
0
的观点
。
3
出
的
5
用户
将
是
倾倒
。
收集
信息
- - - - - -
完成
所有
交易
有
被
开始
全球
读
锁
有
被
发布
写作
全球
DDL
文件
写作
用户
DDL
运行
数据
转储
使用
4
线程
。
请注意
:
进步
信息
使用
估计
值
和
可能
不
是
准确的
。
写作
模式
元数据
- - - - - -
完成
写作
DDL
- - - - - -
完成
写作
表
元数据
- - - - - -
完成
开始
数据
转储
104年
%
(
1.63米
行
/
~
1.56米
行
)
,
172.12 k
行
/
年代
,
34.60
MB
/
年代
未压缩的
,
15.75
MB
/
年代
压缩
转储
持续时间
:
00
:
00
:
12个年代
总
持续时间
:
00
:
00
:
14世纪
模式
倾倒
:
1
表
倾倒
:
16
未压缩的
数据
大小
:
313.55
MB
压缩
数据
大小
:
142.87
MB
压缩
比
:
2.2
行
写
:
1629368
字节
写
:
142.87
MB
平均
未压缩的
吞吐量
:
25.21
MB
/
年代
平均
压缩
吞吐量
:
11.49
MB
/
年代
|
b),使用这些相同的细节,我们将从S3 bucket恢复数据到本地数据库中。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
loadDump
(
“sbt”
,
{
s3BucketName
:
“ajpxctest”
,
s3EndpointOverride
:
“https://storage.googleapis.com”
,
s3CredentialsFile
:
“/ home /凭证”
,
s3Profile
:
“gcb”
,
线程
:
4
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
加载
DDL
和
数据
从
AWS
S3
桶
=
ajpxctest
,
前缀
=
“sbt”
使用
4
线程
。
开放
转储
。
。
。
目标
是
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
。
转储
是
生产
从
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
抓取
转储
数据
从
远程
位置
。
。
。
清单
文件
- - - - - -
完成
扫描
元数据
- - - - - -
完成
检查
为
精准医疗
- - - - - -
现有的
对象
。
。
。
执行
常见的
序言
SQL
执行
DDL
- - - - - -
完成
执行
视图
DDL
- - - - - -
完成
开始
数据
负载
1
野
加载
/
One hundred.
%
(
313.55
MB
/
313.55
MB
)
,
6.23
MB
/
年代
,
14
/
16
表
完成
重新创建
索引
- - - - - -
完成
执行
常见的
后同步信号
SQL
16
块
(
1.63米
行
,
313.55
MB
)
为
16
表
在
1
模式
是
加载
在
1
最小值
8
证券交易委员会
(
avg
吞吐量
7.41
MB
/
年代
)
0
警告
是
报道
在
的
负载
。
|
S3选项:
|
1
2
3
4
|
”s3BucketName”:
的名字
的
的
s3
桶
在哪里
的
转储
将
是
保持
。
”s3EndpointOverride”:
s3
端点
或
url
。
”s3CredentialsFile”:
凭证
文件
包含
关键
&
amp
;
秘密
细节
。
”s3Profile”:
的
的名字
的
的
s3
配置文件
来
识别
的
凭证
细节
。
|
让我们为Amazon S3配置相同
先决条件
- AWS S3 bucket应该存在
- 配置AWS CLI
|
1
2
3
4
5
6
7
8
|
# # # # # # ~ / .aws /凭证
(
默认的
]
aws_access_key_id
=
xxxxxxx
aws_secret_access_key
=
xxxxxxx
# # # ~ / .aws /配置# # #
(
默认的
]
地区
=
我们
- - - - - -
东
- - - - - -
1
|
)现在,我们执行实例备份过程中保持的转储文件”ajtestbkp“S3 bucket。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
dumpInstance
(
“sbt”
,
{
s3bucketName
:
“ajtestbkp”
,
线程
:
4
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
|
收购
全球
读
锁
全球
读
锁
收购了
初始化
- - - - - -
完成
1
出
的
5
模式
将
是
倾倒
和
在
他们
16
表
,
0
的观点
。
3
出
的
5
用户
将
是
倾倒
。
收集
信息
- - - - - -
完成
所有
交易
有
被
开始
全球
读
锁
有
被
发布
写作
全球
DDL
文件
写作
用户
DDL
运行
数据
转储
使用
4
线程
。
请注意
:
进步
信息
使用
估计
值
和
可能
不
是
准确的
。
写作
模式
元数据
- - - - - -
完成
写作
DDL
- - - - - -
完成
写作
表
元数据
- - - - - -
完成
开始
数据
转储
101年
%
(
1.63米
行
/
~
1.61米
行
)
,
287.53 k
行
/
年代
,
53.81
MB
/
年代
未压缩的
,
24.51
MB
/
年代
压缩
转储
持续时间
:
00
:
00
:
06年年代
总
持续时间
:
00
:
00
:
07年年代
模式
倾倒
:
1
表
倾倒
:
16
未压缩的
数据
大小
:
313.55
MB
压缩
数据
大小
:
142.87
MB
压缩
比
:
2.2
行
写
:
1629368
字节
写
:
142.87
MB
平均
未压缩的
吞吐量
:
49.93
MB
/
年代
平均
压缩
吞吐量
:
22.75
MB
/
年代
|
b)现在,让我们从S3恢复转储到本地数据库中。
|
1
|
mysql
壳牌
&
gt
;
跑龙套
。
loadDump
(
“sbt”
,
{
s3BucketName
:
“ajtestbkp”
,
线程
:
4
}
)
|
输出:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
加载
DDL
和
数据
从
AWS
S3
桶
=
ajtestbkp
,
前缀
=
“sbt”
使用
4
线程
。
开放
转储
。
。
。
目标
是
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
。
转储
是
生产
从
MySQL
5.7.38
- - - - - -
41
- - - - - -
57
- - - - - -
日志
抓取
转储
数据
从
远程
位置
。
。
。
清单
文件
- - - - - -
完成
扫描
元数据
- - - - - -
完成
检查
为
精准医疗
- - - - - -
现有的
对象
。
。
。
执行
常见的
序言
SQL
执行
DDL
- - - - - -
完成
执行
视图
DDL
- - - - - -
完成
开始
数据
负载
1
野
加载
/
One hundred.
%
(
313.55
MB
/
313.55
MB
)
,
8.80
MB
/
年代
,
15
/
16
表
完成
重新创建
索引
- - - - - -
完成
执行
常见的
后同步信号
SQL
16
块
(
1.63米
行
,
313.55
MB
)
为
16
表
在
1
模式
是
加载
在
38
证券交易委员会
(
avg
吞吐量
9.14
MB
/
年代
)
0
警告
是
报道
在
的
负载
。
|
总结
这些实用程序是一个伟大的除了MySQL壳牌和非常有用的备份/恢复场景的大型表通过使用不同的控制选项。现在,我们可以有更好的处理转储/加载过程通过定义选项,例如线程、最大速度和maxBytesPerTransaction。转储工具都支持(MySQL 5.6, 5.7, 8.0),然而,数据加载,数据库应该是MySQL 5.7或8.0。





