如何配置,backup database 命令备份到阿里的oss

如何配置,backup database 命令备份到阿里的oss

目前 BR 支持以下存储,可以看一下,使用可参考第二个连接
https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-storages
https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-tool

文档是能找到,能否提供个oss 示例呢?

Backup failed: NoCredentialProviders: no valid providers in chain.

你好,
提供下 br 的版本和 backup log 看下.
备份的环境也请明示下,

  1. 采用SQL 语句backup database 备份数据库
  2. 直接备份到阿里的oss上
  3. 配置了access id 和secret
  4. 执行backup database test to ‘s3://xxx/xxx’ 发生错误。

帮忙确认下所有 tikv 节点是否可以访问这个 S3

可以考虑使用阿里云提供的ossfs把oss挂载在本地,然后使用br像备份到nfs一样就可以了

#1.安装ossfs(所有TiKV、PD都要安装,可以整个集群所有机器都安装)

wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
yum -y localinstall ossfs_1.80.6_centos7.0_x86_64.rpm

2.挂载oss的bucket到本地的/dbbak目录(所有TiKV、PD都要挂载,可以整个集群所有机器都挂上去)

#配置好oss参数
AccessKey=OSS的access-key-id
SecretKey=OSS的access-key-secret
bucketName='bucket名称'
Endpoint=http://oss-cn-shenzhen-internal.aliyuncs.com   
#Endpoint地址请参考:https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.6.626.581e7a6cMIuIYO

#开始挂载
mkdir -p /dbbak
echo "${bucketName}:${AccessKey}:${SecretKey}" > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
ossfs ${bucketName} /dbbak -ourl=${Endpoint} -oallow_other

#开机启动
echo '#! /bin/bash' > /etc/init.d/ossfs
echo '# chkconfig: 2345 90 10' >> /etc/init.d/ossfs
echo "ossfs ${bucketName} /dbbak -ourl=${Endpoint} -oallow_other" >> /etc/init.d/ossfs
chmod a+x /etc/init.d/ossfs
chkconfig ossfs on

#3.执行备份

su - tidb
mkdir -p /dbbak/20210122
br backup table --pd "192.168.68.129:2379" --db aaa --table t -s "local:///dbbak/20210122" --log-file backup-nfs.log

你好,请教下。如果我有三台TiKV,是不是要建3个bucket,分别挂载?如果只需一个bucket的话,都是dbbak目录不会覆盖吗?

不需要3个bucket,一个bucket即可,不会覆盖

你好,请教下。我按照你的方法创建了一个bucket并分别成功挂载到3台tikv,然后在主控机运行br报下面错误:


mkdir -p /ossfs

chown -R tidb:tidb /ossfs

su tidb

cd ~

echo xxx-cluster:LTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > ~/.passwd-ossfs

chmod 600 ~/.passwd-ossfs

ossfs xxx-cluster /ossfs -ourl=http://oss-cn-shenzhen.aliyuncs.com

报错信息:
Found br newer version:

The latest version:         v5.0.0-rc
Local installed version:    v4.0.9
Update current component:   tiup update br
Update all components:      tiup update --all

Starting component br: /root/.tiup/components/br/v4.0.9/br backup db --pd 10.0.0.80:2379 --db dbname --storage local:///ossfs --ratelimit 120 --log-file backupdb.log
Detail BR log in backupdb.log
Database backup <…> 0.00%
Error: msg:“Io(Os { code: 13, kind: PermissionDenied, message: “Permission denied” })” : [BR:KV:ErrKVUnknown]unknown tikv error
Error: run /root/.tiup/components/br/v4.0.9/br (wd:/root/.tiup/data/SNutuqb) failed: exit status 1
请问是什么原因?

权限问题,请参照我最新更新的来挂载,

先把刚才挂载的分区卸载了然后再按我上面更新的方法来挂载,

ossfs卸载分区的方法

fusermount -u /dbbak

你好,最新的挂载脚本区别多了参数oallow_other以及开机启动。我按上面最新的方式来挂载并且是在root用户下跑的脚本。然后br的时候还是报Error: msg:“Io(Os { code: 1, kind: PermissionDenied, message: “Operation not permitted” })” : [BR:KV:ErrKVUnknown]unknown tikv error错误。是否要在脚本里加入su tidb?

你要先切么tidb用户里做备份,定时任务的话也在tidb用户里做