暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Dumpning 备份到腾讯云对象存储 COS

TiDB之路 2022-03-29
2066

前言

最近在测试TiDB备份到对象存储,选择的产品是腾讯云COS。我自己申请了一个对象存储,感觉对象存储做备份还是很划算的。

比如申请1TB做备份,使用1年,费用900多元。

这个费用感觉很多客户还是容易接受的。毕竟对于很多客户的备份来说,不用一直存储,保留个7天的备份集就行了。当然选择深度归档容量包作为长期存储,会将使用费进一步降低。

很多客户还是不那么容易接受,认为自己的数据放在云上不是很安全。不过备份到云上的对象存储应该是未来一大趋势。

下载s3cmd工具

首先为了方便调试,我们可以下载s3cmd工具,从网址:https://s3tools.org/download 进行下载。

我这边是从SourceForge直接下载最新版2.2.0,下载完后解压即可。

wget -c https://nchc.dl.sourceforge.net/project/s3tools/s3cmd/2.2.0/s3cmd-2.2.0.tar.gz --no-check-certificatetar -zxf s3cmd-2.2.0.tar.gz -C /usr/local/cd /usr/localmv /usr/local/s3cmd-2.2.0/ /usr/local/s3cmd/ln -s /usr/local/s3cmd/s3cmd /usr/bin/s3cmd

执行s3cmd,这里需要安装python-dateutil
依赖模块。

[root@copy-of-vm-ee-centos76-v1 s3cmd]# ./s3cmd --configure!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ImportError trying to import dateutil.parser.Please install the python dateutil module:$ sudo apt-get install python-dateutil  or$ sudo yum install python-dateutil  or$ pip install python-dateutil!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

安装一下依赖。

yum install python-dateutil

然后对s3cmd进行配置。

[root@copy-of-vm-ee-centos76-v1 ~]# s3cmd --configureEnter new values or accept defaults in brackets with Enter.Refer to user manual for detailed description of all options.Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.//密钥 IDAccess Key: //密钥 keySecret Key://默认区域Default Region [US]: //腾讯云COS的Endpoint接入地址Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.S3 Endpoint [s3.amazonaws.com]: //DNS-style风格,bucket+hostname接入地址Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be usedif the target S3 system supports dns based buckets.DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: //加密密码Encryption password is used to protect your files from readingby unauthorized persons while in transfer to S3Encryption password: Path to GPG program [/usr/bin/gpg]: //使用安全 HTTPS 协议时,所有与 Amazon S3 的通信服务器免受第三方窃听。这种方法比普通HTTP慢,并且只能使用 Python2.7或更高版本进行代理When using secure HTTPS protocol all communication with Amazon S3servers is protected from 3rd party eavesdropping. This method isslower than plain HTTP, and can only be proxied with Python 2.7 or newerUse HTTPS protocol [Yes]: //是否使用HTTP代理On some networks all internet access must go through a HTTP proxy.Try setting it here if you can't connect to S3 directlyHTTP Proxy server name: New settings:  Access Key:   Secret Key:   Default Region: US  S3 Endpoint: s3.amazonaws.com  DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.s3.amazonaws.com  Encryption password:   Path to GPG program: /usr/bin/gpg  Use HTTPS protocol: True  HTTP Proxy server name:   HTTP Proxy server port: 0

简单说一下,密钥id和key,需要到对象存储里面的API密钥管理上去查看。

最后配置内容如下:

配置好之后,执行s3cmd ls
,测试看是否能通,能列出文件夹说明能通,接下来我们使用dumpning进行备份。

[root@copy-of-vm-ee-centos76-v1 ~]# s3cmd ls2022-03-28 03:01  s3://tidbtest-xxxxxxxxx

dumpning 备份到S3

dumpning 直接备份到S3很简单,我们需要输入两个环境变量。

  • AWS_ACCESS_KEY_ID :访问密钥id
  • AWS_SECRET_ACCESS_KEY :Secret 访问密钥
export AWS_ACCESS_KEY_ID=xxxxxxexport AWS_SECRET_ACCESS_KEY=xxxxxxxxxexport CURDATE=$(date +%Y%m%d)

备份的时候需要关注的三个参数

  • s3.endpoint
    :S3 兼容服务自定义端点的 URL地址。
  • s3.provider
    : S3 兼容服务类型,这里需要输入alibaba。腾讯云输入alibaba
    感觉怪怪的。
  • -o
    : 存储导出文件的目录,这里是S3文件的目录。
./dumpling \  -u root \  -P 4000 \  -h 172.xxx.xxx.xxx \  -r 200000 \  --filetype sql \  -o "s3://tidbtest-xxxxxxxxx/${CURDATE}" \  --s3.endpoint="https://cos.ap-nanjing.myqcloud.com" \  --s3.provider 'alibaba'

备份执行成功,登陆到腾讯云COS上查看,每日备份的文件夹已经创建。

点击文件夹,可以看到数据库备份文件。

也可以使用s3cmd ls
来查看备份集了。

[root@copy-of-vm-ee-centos76-v1 ~]# s3cmd ls s3://tidbtest-***********/                          DIR  s3://tidbtest-***********/20220328/                          DIR  s3://tidbtest-***********//backup/

执行s3cmd del可以把指定的目录删除。

[root@copy-of-vm-ee-centos76-v1 ~]# s3cmd del s3://tidbtest-***********//20220328/*delete: 's3://tidbtest-***********/20220328/metadata'delete: 's3://tidbtest-***********/20220328/test-schema-create.sql'delete: 's3://tidbtest-***********//20220328/test.a-schema.sql'delete: 's3://tidbtest-***********/20220328/test.a.000000001.sql'delete: 's3://tidbtest-***********/20220328/test.threads-schema.sql'delete: 's3://tidbtest-***********/20220328/test.threads.000000001.sql'delete: 's3://tidbtest-***********/20220328/test.threads.000000002.sql'
delete: 's3://tidbtest-***********/20220328/test.tr-schema.sql'
delete: 's3://tidbtest-***********/20220328/test.tr.000000001.sql'
delete: 's3://tidbtest-***********/20220328/test.tr.000000002.sql'
delete: 's3://tidbtest-***********/20220328/test.tr.000000003.sql'
delete: 's3://tidbtest-***********/20220328/test.tr.000000004.sql'
delete: 's3://tidbtest-***********/20220328/test.tr.000000005.sql'
delete: 's3://tidbtest-***********/20220328/test.tr.000000006.sql'

至此整个dumpning备份到腾讯云COS就顺利完成了,我们可以写一个备份脚本,每天进行备份,然后使用s3cmd
删除7天之前的备份集。

Refenerce

https://docs.pingcap.com/zh/tidb/v5.2/backup-and-restore-storages#s3-%E7%9A%84-url-%E5%8F%82%E6%95%B0


文章转载自TiDB之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论