2021年底,我第一个码头工人的形象hub.docker.com。这是第一个官方形象和自那时以来,我们一直在改善我们的测试和包装过程基于码头工人,CircleCI, GitHub的行动。然而,当我编码,我不是在码头工人测试。但几个星期前,当我正在评估一个问题,我意识到,我想分享一些有趣的码头工人用例。
常见用例
首先,我们要回顾一下如何把一个简单的备份与MyDumper温暖的你:
|
1
2
3
4
5
6
7
8
9
10
11
|
码头工人
运行
- - -
的名字
mydumper
- - -
rm
- - - - - -
v
美元
{
备份
}
:
/
备份
mydumper
/
mydumper
:
半
。
14.4
- - - - - -
7
上海
- - - - - -
c
“rm射频/备份/数据;
mydumper - h 172.17.0.5
- o /备份/数据
- b测试
- v 3
- r 1000
- l /备份/ mydumper.log”
|
你会找到备份文件和日志在${备份}。然后你就可以恢复使用:
|
1
2
3
4
5
6
7
8
9
10
|
码头工人
运行
- - -
的名字
mydumper
- - -
rm
- - - - - -
v
美元
{
备份
}
:
/
备份
mydumper
/
mydumper
:
半
。
14.4
- - - - - -
7
上海
- - - - - -
c
“myloader中- h 172.17.0.4
- d /备份/数据
- b测试
- v 3
- o
- l /备份/ myloader.log”
|
如果你想快,你可以:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
码头工人
运行
- - -
的名字
mydumper
- - -
rm
- - - - - -
v
美元
{
备份
}
:
/
备份
mydumper
/
mydumper
:
半
。
14.4
- - - - - -
7
上海
- - - - - -
c
“rm射频/备份/数据;
mydumper - h 172.17.0.5
- o /备份/数据
- b测试
- v 3
- r 1000
- l /备份/ mydumper.log;
myloader中- h 172.17.0.4
- d /备份/数据
- b测试
- v 3
- o
- l /备份/ myloader.log”
|
我们可以删除选择挂载卷(- v ${备份}:/备份),作为数据将驻留在容器中。
之前的用例
从版本0.14.4-7,我创建了ZSTD代替GZIP的码头工人的形象,因为它更快。其他选项总是有用的行/ - r和-chunk-filesize / - f。在最新的版本中,您可以运行“100:1000:0”- r,这意味着:
- 100年为最小的块大小
- 1000年将会是起点
- 0意味着不会有最大限制
在这种情况下,我们想要小文件尽快发给myloader中,因为我们不关心文件数量,- f将被设置为1。
在下一个用例,我们将通过标准输出流备份mydumper myloader中,流媒体内容没有共享备份dir:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
|
码头工人
运行
- - -
的名字
mydumper
- - -
rm
- - - - - -
v
美元
{
备份
}
:
/
备份
mydumper
/
mydumper
:
半
。
14.4
- - - - - -
7
上海
- - - - - -
c
“rm射频/备份/数据;
mydumper - h 172.17.0.5
- o /备份/数据
- b测试
- v 3
- r 100:1000:0
- l /备份/ mydumper.log
- f 1
——流
- c
| myloader中- h 172.17.0.4
- d /备份/ data_tmp
- b测试
- v 3
- o
- l /备份/ myloader.log
——流”
|
在这种情况下,备份文件将被创建在/备份/数据,通过管道发送和存储/备份/ data_tmp直到myloader中导入备份文件,然后它会删除它。
为了优化这个过程,现在,我们可以共享备份目录设置NO_STREAM_AND_NO_DELETE流,这是不会流的内容文件但流文件名,它不会删除它,我们想要的文件共享myloader中:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
|
码头工人
运行
- - -
的名字
mydumper
- - -
rm
- - - - - -
v
美元
{
备份
}
:
/
备份
mydumper
/
mydumper
:
半
。
14.4
- - - - - -
7
上海
- - - - - -
c
“rm射频/备份/数据;
mydumper - h 172.17.0.5
- o /备份/数据
- b测试
- v 3
- r 100:1000:0
- l /备份/ mydumper.log
- f 1
——流= NO_STREAM_AND_NO_DELETE
- c
| myloader中- h 172.17.0.4
- d /备份/数据
- b测试
- v 3
- o
- l /备份/ myloader.log
——流”
|
正如您可以看到的,该目录是一样的。Myloader中后将删除的文件导入它们,但是如果你想保持备份文件,您应该使用流= NO_DELETE。
性能将取决于数据库的大小和数量的表。这也可以与另一个MyDumper特性相结合,伪装你的备份,它允许您构建更安全的QA /测试环境。
结论
MyDumper,这已经证明了它是最快的逻辑备份解决方案,现在提供了一个简单而强大的方法在dockerized环境中迁移数据。
雷竞技下载官网Percona MySQL是最完整,分布稳定、可伸缩的、安全的MySQL开源解决方案,提供企业级的数据库环境最关键业务应用程序…和它的免费使用!






对大型表(例如> 1 tb)如何执行?多少磁盘空间你会建议我分配给码头工人在这种情况下吗?两倍的尺寸最大的表吗?
埃里克,你需要考虑几件事情:
正如你所看到的,有很多事情要考虑,我认为最好的是开始的一半大小的数据库和空间的减少当你得到一个更好的主意。