通过Docker安装Minio进行TiDB备份恢复数据测试

网友投稿 540 2024-04-30



一、首先通过docker安装minio

通过Docker安装Minio进行TiDB备份恢复数据测试

以下是最新版,有坑,建议装2021版

1. 拉取docker镜像

docker pull minio/minio

2. 设置minio用到的文件路径

mkdir minio

进入minio目录:

cd minio

mkdir data

mkdir config

3. 启动服务:注意,这里要单独设置console的端口,不然会报错,且无法访问

这种安装方式 MinIO 自定义 Access 和 Secret 密钥要覆盖 MinIO 的自动生成的密钥

docker run --name minio \

-p 9000:9000 \

-p 9999:9999 \

-d --restart=always \

-e "MINIO_ROOT_USER=admin" \

-e "MINIO_ROOT_PASSWORD=admin123" \

-v /root/minio/data:/data \

-v /root/minio/config:/root/.minio \

minio/minio server /data \

--console-address 0.0.0.0:9999

4. 防火墙设置,需要为minio开放两个端口,一个9000端口,一个静态端口,此处为9999

firewall-cmd --zone=public --add-port=9000/tcp --permanent

firewall-cmd --zone=public --add-port=9999/tcp --permanent

firewall-cmd --reload

5. 登录客户端(浏览器):注意—>此处的端口,是你设置的console的端口:9999

http://10.10.10.15:9999

 此处的用户名密码为启动服务时,设置的用户名密码:admin  admin123:

 综上,minio部署成功。

但是新版比较难用,换个老版本的。

1. 拉取docker镜像---2021年6月17日版

docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z

2. 设置minio用到的文件路径

mkdir minio

进入minio目录:

cd minio

mkdir data

mkdir config

3. 启动服务:注意,这里要单独设置console的端口,不然会报错,且无法访问

这种安装方式 MinIO 自定义 Access 和 Secret 密钥要覆盖 MinIO 的自动生成的密钥

docker run --name minio2021 \

-p 9000:9000 \

-d --restart=always \

-e "MINIO_ACCESS_KEY=admin" \

-e "MINIO_SECRET_KEY=admin123" \

-v /root/minio/data:/data \

-v /root/minio/config:/root/.minio \

minio/minio:RELEASE.2021-06-17T00-10-46Z server /data 

4. 防火墙设置,需要为minio开放9000端口

firewall-cmd --zone=public --add-port=9000/tcp --permanent

firewall-cmd --reload

5. 登录客户端(浏览器):注意—>此处的端口,是你设置的console的端口:9000

http://10.10.10.15:9000

此处的用户名密码为启动服务时,设置的用户名密码:admin  admin123:

 综上,minio部署成功。

python测试

pip install minio

from minio import Minio from minio.error import S3Error try: client = Minio(10.10.10.15:9000,access_key=admin,secret_key=admin123,secure=False) found = client.bucket_exists("dong") except S3Error as e: print("error:", e) print(found)# 返回布尔值 True or False # file_path = rE:\desktop\system.sql # # client.fput_object("dong", "system.sql", file_path) # # 文件不存在会报错FileNotFoundError file_path = rE:\desktop\1.sql data = client.get_object("dong", "system.sql") with open(file_path,"wb") as fp: for d in data.stream(1024): fp.write(d) client.fget_object("buk2", "1.jpg", "/opt/static/new.jpg") file_name=1.txt client.remove_object("buk2", file_name) client.remove_objects("buk2", ["baidu.html", "taobao.html"])客户端测试

10.10.10.16安装客户端

```

下载 mc 客户端 

cd /data

wget https://dl.minio.io/client/mc/release/linux-amd64/mc

chmod +x mc

cp mc /usr/bin

在 mc 客户端添加主机信息

mc config host add myminio http://10.10.10.15:9000 admin admin123

查看 mc 客户端已经添加的主机信息

mc config host ls myminio

在 minio 中创建名为 tidbbackup 的 buket

mc mb myminio/tidbbackup

上传文件到 bucket 中

echo test_upload > minio_test_upload.log

mc cp minio_test_upload.log myminio/tidbbackup

查看 buket 中的文件

mc ls myminio/tidbbackup

下载 buket 中的文件

mc cp myminio/tidbbackup/minio_test_upload.log /tmp/

cat /tmp/minio_test_upload.log

删除 buket 中的文件

mc rm myminio/tidbbackup/minio_test_upload.log

在 minio 中查看创建的 buket

mc ls myminio

mc ls myminio/tidbbackup

级联删除目录

mc rm myminio/tidbbackup/bak_20210922/ --recursive --force

递归强制删除8天之前的文件,单位支持天,小时,分钟等

mc rm myminio/tidbbackup/fullbackup/ --recursive --force --older-than 8d

```

二、通过minio来测试tidb的br备份到s3存储

1.首先是备份到本机,备份时需要每个节点都创建本地目录,恢复时需要将所有文件拷贝到每个节点的本地目录,比较麻烦

wget https://download.pingcap.org/tidb-toolkit-v5.4.3-linux-amd64.tar.gz 

tar -xvzf tidb-toolkit-v5.4.3-linux-amd64.tar.gz

/home/tidb/tidb-toolkit-v5.4.3-linux-amd64/bin

mkdir /tmp/backup

chmod 777 /tmp/backup

每个tikv节点都要创建

备份表

./br backup table --pd "10.10.10.16:2379"  --db "test"  --table "emp" --storage "local:///tmp/backup"  --ratelimit 120 --log-file backup_emp.log

备份库

mkdir /tmp/backup1

chmod 777 /tmp/backup1

./br backup db --pd "10.10.10.16:2379"  --db "test"   --storage "local:///tmp/backup1"  --ratelimit 120 --log-file backup_test.log

drop table emp

恢复表

./br restore  table --pd "10.10.10.16:2379"  --db "test"  --table "emp" --storage "local:///tmp/backup"  --log-file restore_emp.log

drop database test

恢复库

./br restore  db --pd "10.10.10.16:2379"  --db "test"   --storage "local:///tmp/backup1"  --log-file restore_test.log

2.通过minio来备份及恢复

export AWS_ACCESS_KEY_ID=admin

export AWS_SECRET_ACCESS_KEY=admin123

./br backup table --db test --table t1 --ratelimit 60 --pd "10.10.10.14:2379" --storage "s3://tidbbackup/bak_20230725" --send-credentials-to-tikv=true --s3.endpoint "http://10.10.10.15:9000" --log-file /tmp/backup.log

truncate table test.t1;

export AWS_ACCESS_KEY_ID=admin

export AWS_SECRET_ACCESS_KEY=admin123

./br restore table --db test --table t1 --ratelimit 60 --pd "10.10.10.14:2379" --storage "s3://tidbbackup/bak_20230725" --send-credentials-to-tikv=true --s3.endpoint "http://10.10.10.15:9000" --log-file /tmp/restore.log

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:通过 TiDB Operator 为已有 TiDB 集群部署异构集群
下一篇:部署 TiDB 集群监控与告警的 TiDB Operator 教程
相关文章