JAVA对Mysql备份的优化及踩过的坑

比较精简的说一下,先说前提,用的是linux下的redhat,  公司用的是mysqldump然后用zip压缩,mysqldump套了线程池,zip没有,表的大小一般10几个G的数量级,部分表备份(有要备份的表名单)。

改进方案:mydumper + pigz。Mysqldump 没有多线程的参数,只能外面套一层,测试的数据中相同线程数mydumper可以直接提升约35%的性能。公司不用多线程做压缩是巨坑,zip非常慢,压缩的时间占了总备份的2/3,而pigz将压缩时间直接缩短到了原来的1/6。两个工具结合总共将时间减了约一半。

坑点:仅代表个人踩过的坑。linux环境下没有外网,所以mydumper是外网拉进来的,第一遍cmake的时候会报错,这时候根据readme装依赖,然后删除文件夹再解压一次跑cmake(stackoverflow上可搜到)。还有一个是pigz不支持文件夹压缩,但是可以结合tar使用。百度搜索第一来自知乎的答案和GPT给的解决方案是相同的:『tar -cvf dir1 | pigz > output.tar.gz』。其实这个解决方案终端上可用,但在java的processbuilder上将无法进行多线程,正确的写法是『 tar --use-compress-program=pigz -cf fileName folderPath』。(注,gpt给出的是"bash" , "-c" , "tar -cvf dir1 | pigz > output.tar.gz")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值