0
1
0
0
专栏/.../

通过docker安装单机版minio简单测试br通过s3存储备份恢复数据

 tidb菜鸟一只  发表于  2023-08-03

一、首先通过docker安装minio

以下是最新版,有坑,建议装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:

image.png

 综上,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:

image.png

 综上,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 = r'E:\desktop\system.sql'
#
# client.fput_object("dong", "system.sql", file_path)
# # 文件不存在会报错FileNotFoundError

file_path = r'E:\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

0
1
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论