快速开启数据备份
开启数据备份,首先需要部署一个存储服务用于存放备份的数据。这里使用 minio 作为备份数据存储服务。
如果使用与部署 ONES 服务不同的节点部署备份数据存储服务,这里推荐使用 Docker 部署 minio。
如果要使用相同的节点部署备份数据存储服务,这里使用相同的 k3s 集群部署 minio。注意:请不要在 k3s 节点上安装 Docker,有破坏 k3s 节点的风险。
1 部署 minio
根据是否在相同节点上部署备份数据存储服务,可以选择使用 Docker 或 k3s 部署。
注意:为了数据安全,请尽量在与部署 ONES 系统不同的节点上部署备份数据存储服务。
1.1 使用 Docker 部署 minio
异机器部署备份数据存储服务时使用 Docker 部署 minio。注意:不要在 k3s 节点上部署 Docker。
安装 Docker
CentOS下安装Docker参考文档
其他发行版参考官方文档: https://docs.docker.com/engine/install/
部署 minio
通过如下三个环境变量配置部署的必要参数,请根据部署的实际需求修改:
- onesBackupInternalMinioRootUser: minio的访问用户,同时也是 S3 协议中的 accessKey
- onesBackupInternalMinioRootPassword: minio的访问密钥,同时也是 S3 协议中的 secretKey,注意至少需要8位
- MINIO_DATA_PATH: minio在节点机上的数据存放路径
通过环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 来指定访问minio的账户名和密码。此账户密码可以用来登录minio管理后台和客户端访问对象存储。
确保宿主机上的端口 9000 和 9090 没有被占用,否则会部署失败。
# 根据部署实际需要调整
onesBackupInternalMinioRootUser=miniouser
onesBackupInternalMinioRootPassword=QJndse89 # 注意密码至少需要8位
MINIO_DATA_PATH=/data/ones/minio/data
mkdir -p ${MINIO_DATA_PATH}
docker run -d --restart always \
--name minio \
-p 9000:9000 \
-p 9090:9090 \
-v ${MINIO_DATA_PATH}:/data \
-e "MINIO_ROOT_USER=${onesBackupInternalMinioRootUser}" \
-e "MINIO_ROOT_PASSWORD=${onesBackupInternalMinioRootPassword}" \
docker.io/minio/minio:RELEASE.2024-06-26T01-06-18Z server /data --console-address ":9090"
# 容器运行后,检查管理后台可访问
curl http://localhost:9090
# 浏览器打开管理后台 http://[host-ip]:9090,并使用 onesBackupInternalMinioRootUser 和 onesBackupInternalMinioRootPassword 对应的账户密码登录
1.2 使用 ONES 内置的备份 minio
在 ONES 服务节点上部署备份数据存储服务时使用此方案。
修改配置
可选修改配置: onesBackupInternalMinioConsoleNodePort, onesBackupInternalMinioNodePort, 默认值分别是 31901、 31900
ones-ai-k8s.sh
vi config/private.yaml
onesBackupInternalMinioRootUser: miniouser
onesBackupInternalMinioRootPassword: QJndse89
onesBackupInternalMinioUserDefinedDataHostPath: "/data/ones/ones-local-storage" # minio 文件存储目录,可按需修改
部署内置 minio
make setup-ones-backup
效果检查:
# 等待服务启动
kubectl -n ones-backup get po -l 'app=minio' -w
# 在能访问节点的浏览器上访问
curl http://<IP>:31901
2 快速开启备份
这里直接开启默认配置的数据备份,默认的3类备份有:
- 审计日志备份:6.1.93及以下版本支持采用Kafka备份,默认早上7点和晚上7点执行增量备份;6.1.94及以上版本支持采用clickhouse备份,默认每周六23点做一次全量备份,每天分别在13点和20点各做一次增量备份;
- 业务数据备份:内置数据库支持MySQL备份,默认凌晨3点20分执行全量备份,每小时的30分(例如6:30, 7:30等)执行一次增量备份;如果业务数据存储在客户提供的达梦等外置数据库上,由客户自行备份;
- 文件备份:默认凌晨2点执行全量备份;如果文件存储到客户提供的OSS等外置设备上,由客户自行备份。
2.1 编辑配置文件
# 进入操作容器
ones-ai-k8s.sh
vi config/private.yaml
注意需要根据部署环境调整的配置:
- backupS3AccessKeyID - 上面部署minio时所配置的账户密码,即部署时 onesBackupInternalMinioRootUser 的值
- backupS3SecretAccessKey - 上面部署minio时所配置的账户密码,即部署时 onesBackupInternalMinioRootPassword 的值
- backupS3Endpoint - 上面部署minio的访问地址
- 对于 Docker 部署,请使用
http://<IP>:<PORT>
。IP: docker 所在节点的 IP 地址; PORT: minio 暴露出来的端口 - 对于ONES 内置 minio 部署,请直接使用
http://minio.ones-backup:9000
- 对于 Docker 部署,请使用
clickhouseBackupEnable: 'true'
clickhouseBackupCleanEnable: "true"
clickhouseBackupCleanDaysMinAge: "60" # 清理几天前的备份, 这个60天是最近一次全量备份的60天前,假如最近一次全量备份是 2025-01-08, 那么实际清理的就是 2024-11-09 之前的备份
# 业务数据库备份,开启MySQL备份配置
## 开启备份服务端和MySQL状态服务
internalComponentMysqlEnable: true # 部署内置mysql
mysqlXbackupEnable: true # 配置mysql-xbackup-server
mysqlStatusServerEnable: true # 必须开启
mysqlXbackupToken: "47bce5c7" # 随机生成的字符串作为token
## 开启备份代理,使用 htpasswd 生成代理服务的账户密码, 进入网页 https://tool.oschina.net/htpasswd
## 输入用户名和密码(请记下密码明文用于客户端配置),加密算法选择MD5,生成结果为 [用户名]:[密码密文]。 以 : 为分隔,分别取出用户名和密文,用于下面的配置:
xbackupNginxEnable: true # 开启备份代理
xbackupNginxBasicAuthUser: "12345" # 用户名
xbackupNginxBasicAuthPasswordSecret: "$apr1$xAF/EcYh$HOTn.2.CVTEAhhqHqRxOW1" # 密码密文
## 开启MySQL备份策略
mysqlXbackupInternalEnable: true # 开启MySQL备份策略集群内部署,注意组件机已有的情况下不要开启
mysqlXbackupNginxBasicAuthPassword: 12345 # 对应xbackupNginxBasicAuthPasswordSecret的密码明文
mysqlXbackupcleanBackupMinAge: "180d" # 清理几天前的备份, 默认清除180天(6个月)前备份, 表达式 m|d|w|M|y 含义: minute|day|week|month|year
mysqlXbackupServerInstance: master
# 开启文件备份
backupS3Endpoint: http://minio.ones-backup:9000
backupS3AccessKeyID: miniouser
backupS3SecretAccessKey: QJndse89
backupS3Region: us-east-1
backupS3PublicBucket: ones-public-files-backup
backupS3PrivateBucket: ones-private-files-backup
backupS3MySQLXbackupBucket: mysql-xbackup
backupS3ClickhouseBucket: clickhouse-backup
backupEnabledForObjectStorage: 'true'
2.2 生效配置, 检查效果
make setup-ones
make setup-ones-built-in-mysql
# 检测clickhouse的pod启动
kubectl get pod -A|grep -i clickhouse-backup
# 检查MySQL变更
kubectl -n ones get po | grep mysql
# 确认 mysql-cluster-mysql 和 mysql-operator 有更新,增加 mysql-status-server-deployment
# 检查文件备份
kubectl get po -n ones -l app=mc-backup-tools # 确认pod起来
到这里,数据备份已经开启,请参考数据备份&恢复详细说明执行备份效果验证和数据恢复验证。