刚接触的 tidb 集群日常备份到S3的存储,之前都是云上申请的 S3 存储,拿来直接用,听前同事说,直接用阿里云的S3 好像有点问题,再就是目前我的阿里云的 S3,现在不免费了。那就本地自建存储,进行模拟一把。本次采用了 MinIO 软件。本篇先记录本地使用 MinIO 自建存储 S3 ,S3 全名是Simple Storage Service,Amazon S3 (Simple Storage Service) 简单存储服务,是 Amazon 的公开云存储服务,与之对应的协议被称为 S3 协议,目前 S3 协议已经被视为公认的行业标准协议,因此目前国内主流的对象存储厂商基本上都会支持 S3 协议。
TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS 作为备份恢复的存储。具体来说,可以在 br 的 --storage 或 -s 选项中指定备份存储的 URI。
本地环境信息:
操作系统:Oracle Linux 9.5 arm 架构
安装步骤 1. 下载 MinIO Server (ARM64 版本) 1 2 3 4 5 6 7 8 wget https://dl.min.io/server/minio/release/linux-arm64/minio chmod +x miniosudo mv minio /usr/local/bin/
2. 创建 MinIO 用户和数据目录 1 2 3 4 5 6 7 8 sudo useradd -r minio-user -s /sbin/nologin sudo mkdir -p /mnt/data sudo chown minio-user:minio-user /mnt/data
3. 创建 systemd 服务文件 1 sudo vim /etc/systemd/system/minio.service
添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [Unit] Description =MinIODocumentation =https://docs.min.ioWants =network-on line.targetAfter =network-on line.targetAssertFileIsExecutable =/usr/local/bin/minio[Service] WorkingDirectory =/usr/local/User =minio-userGroup =minio-userEnvironment ="MINIO_ROOT_USER=minioadmin" Environment ="MINIO_ROOT_PASSWORD=minioadmin123" ExecStart =/usr/local/bin/minio server /mnt/data --console-address ":9001" Restart =alwaysLimitNOFILE =65536 TasksMax =infinity[Install] WantedBy =multi-user.target
4. 配置防火墙 1 2 3 4 sudo firewall-cmd --permanent --add-port=9000/tcp sudo firewall-cmd --permanent --add-port=9001/tcp sudo firewall-cmd --reload
5. 启动 MinIO 服务 1 2 3 4 5 6 7 8 9 10 11 sudo systemctl daemon-reload sudo systemctl start minio sudo systemctl enable minio sudo systemctl status minio
6. 访问 MinIO
API 端点 : http://your-server-ip:9000
Web Console : http://your-server-ip:9001
默认登录凭据:
用户名: minioadmin
密码: minioadmin123
可选:安装 MinIO Client (mc) 1 2 3 4 5 6 7 8 9 wget https://dl.min.io/client/mc/release/linux-arm64/mc chmod +x mcsudo mv mc /usr/local/bin/ mc alias set myminio http://localhost:9000 minioadmin minioadmin123
安全建议
修改默认密码 :在生产环境中务必修改 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD
使用 HTTPS :配置 SSL/TLS 证书
配置访问策略 :设置合适的存储桶策略和用户权限
验证安装 1 2 3 4 5 minio --version sudo journalctl -u minio -f
安装过程遇到的问题
sudo systemctl status minio × minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; preset: disabled) Active: failed (Result: exit-code) since Tue 2025-11-18 09:02:43 GMT; 38s ago Duration: 2ms Docs: https://docs.min.io Process: 444020 ExecStart=/usr/local/bin/minio server /mnt/data –console-address :9001 (code=exited, status=203/EXEC) Main PID: 444020 (code=exited, status=203/EXEC) CPU: 2ms Nov 18 09:02:43 tihtap systemd[1]: minio.service: Scheduled restart job, restart counter is at 6. Nov 18 09:02:43 tihtap systemd[1]: Stopped MinIO. Nov 18 09:02:43 tihtap systemd[1]: minio.service: Start request repeated too quickly. Nov 18 09:02:43 tihtap systemd[1]: minio.service: Failed with result ‘exit-code’. Nov 18 09:02:43 tihtap systemd[1]: Failed to start MinIO.
经过排查是本机启用了 SELinux
解决方案:
1、关闭 SELinux
1 2 3 4 5 6 7 8 9 getenforce sudo setenforce 0 sudo systemctl restart minio sudo systemctl status minio
2、配置 SELinux 上下文:
1 2 3 4 5 6 7 8 9 10 sudo semanage fcontext -a -t bin_t /usr/local/bin/minio sudo restorecon -v /usr/local/bin/minio sudo setenforce 1 sudo systemctl restart minio sudo systemctl status minio
附截图:
这里采用 命令行的方式进行管理
创建 bucket 及用户、密码,权限设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@tihtap ~] Bucket created successfully `myminio/tidb-backup`. [root@tihtap ~] [root@tihtap ~] Added user `tidb` successfully. [root@tihtap ~] Attached Policies: [readwrite] To User: tidb [root@tihtap ~] enabled tidb readwrite [root@tihtap ~] PD_IP="10.0.0.15" MINIO_IP="10.0.0.15" ACCESS_KEY="tidb" SECRET_KEY="SecurePassword123" BUCKET_NAME="tidb-backup" [tidb@tihtap ~]$ [tidb@tihtap ~]$ [tidb@tihtap ~]$ tiup br backup full \ --pd "$PD_IP :2379" \ --storage "s3://$BUCKET_NAME /snapshot-$(date +%F%T) ?access-key=$ACCESS_KEY &secret-access-key=$SECRET_KEY &endpoint=http://$MINIO_IP :9000&force-path-style=true" \ --log-file backupfull.log Starting component br: /home/tidb/.tiup/components/br/v8.5.3/br backup full --pd 10.0.0.15:2379 --storage s3://tidb-backup/snapshot-2025-11-1906:41:10?access-key=tidb&secret-access-key=SecurePassword123&endpoint=http://10.0.0.15:9000&force-path-style=true --log-file backupfull.log Detail BR log in backupfull.log Full Backup <------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00% Checksum <---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00% [2025/11/19 06:41:14.847 +00:00] [INFO] [collector.go:77] ["Full Backup success summary" ] [total-ranges=34] [ranges-succeed=34] [ranges-failed=0] [backup-checksum=22.974113ms] [backup-total-ranges=102] [backup-total-regions=102] [total-take=3.688120772s] [total-kv=45996] [total-kv-size=3.253MB] [average-speed=882.1kB/s] [backup-data-size(after-compressed)=640.7kB] [Size=640679] [BackupTS=462299980425854977]
查看备份:
1 2 3 4 5 6 [root@tihtap ~] [2025-11-19 06:41:11 GMT] 78B STANDARD backup.lock [2025-11-19 06:41:14 GMT] 369B STANDARD backupmeta [2025-11-19 06:41:14 GMT] 7.7KiB STANDARD backupmeta.datafile.000000001 [2025-11-19 06:41:14 GMT] 242KiB STANDARD backupmeta.schema.000000002 [2025-11-19 06:44:16 GMT] 0B 1/
web 页面查看:
原文作者:
liups.com
原文链接:
http://liups.com/posts/1a3359b9/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议