外观
GaussDB 容器化部署
Docker 部署 GaussDB
环境准备
- 安装 Docker:版本 18.09 或以上
- 配置 Docker 镜像加速
- 准备数据存储目录
部署步骤
拉取 GaussDB 镜像
bashdocker pull huaweicloud/gaussdb:latest创建数据存储目录
bashmkdir -p /data/gaussdb/data mkdir -p /data/gaussdb/log chmod 755 /data/gaussdb运行 GaussDB 容器
bashdocker run -d \ --name gaussdb \ --privileged=true \ -p 5432:5432 \ -e GAUSSDB_PASSWORD=Gauss@123 \ -v /data/gaussdb/data:/var/lib/gaussdb/data \ -v /data/gaussdb/log:/var/lib/gaussdb/log \ huaweicloud/gaussdb:latest验证部署
bash# 查看容器状态 docker ps # 进入容器 docker exec -it gaussdb bash # 连接数据库 gsql -d postgres -U gaussdb -p 5432 -W Gauss@123
Docker 部署最佳实践
- 使用固定端口映射:避免端口冲突
- 挂载数据卷:确保数据持久化
- 设置合理的资源限制:避免容器占用过多资源
- 配置日志收集:便于监控和故障排查
- 定期备份数据:确保数据安全
Kubernetes 部署 GaussDB
环境准备
- Kubernetes 集群:版本 1.16 或以上
- Helm:版本 3.0 或以上
- 存储类:配置持久化存储
使用 Helm 部署
添加 Helm 仓库
bashhelm repo add huaweicloud https://helm-charts.huaweicloud.com helm repo update创建命名空间
bashkubectl create namespace gaussdb配置部署参数
yaml# gaussdb-values.yaml replicaCount: 3 image: repository: huaweicloud/gaussdb tag: latest pullPolicy: IfNotPresent service: type: ClusterIP port: 5432 persistence: enabled: true storageClass: "csi-disk" size: 100Gi resources: requests: cpu: "2" memory: "8Gi" limits: cpu: "4" memory: "16Gi" env: GAUSSDB_PASSWORD: Gauss@123部署 GaussDB 集群
bashhelm install gaussdb huaweicloud/gaussdb \ -f gaussdb-values.yaml \ -n gaussdb验证部署
bash# 查看 Pod 状态 kubectl get pods -n gaussdb # 查看服务状态 kubectl get svc -n gaussdb # 连接数据库 kubectl exec -it gaussdb-0 -n gaussdb -- gsql -d postgres -U gaussdb -p 5432 -W Gauss@123
自定义部署
创建配置文件
yaml# gaussdb-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: gaussdb-config namespace: gaussdb data: postgresql.conf: | listen_addresses = '*' max_connections = 1000 shared_buffers = 2GB创建持久卷声明
yaml# gaussdb-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: gaussdb-pvc namespace: gaussdb spec: accessModes: - ReadWriteOnce storageClassName: csi-disk resources: requests: storage: 100Gi创建 Deployment
yaml# gaussdb-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: gaussdb namespace: gaussdb spec: replicas: 1 selector: matchLabels: app: gaussdb template: metadata: labels: app: gaussdb spec: containers: - name: gaussdb image: huaweicloud/gaussdb:latest ports: - containerPort: 5432 env: - name: GAUSSDB_PASSWORD value: Gauss@123 volumeMounts: - name: gaussdb-data mountPath: /var/lib/gaussdb/data - name: gaussdb-config mountPath: /var/lib/gaussdb/config volumes: - name: gaussdb-data persistentVolumeClaim: claimName: gaussdb-pvc - name: gaussdb-config configMap: name: gaussdb-config创建 Service
yaml# gaussdb-service.yaml apiVersion: v1 kind: Service metadata: name: gaussdb namespace: gaussdb spec: selector: app: gaussdb ports: - port: 5432 targetPort: 5432 type: ClusterIP应用部署配置
bashkubectl apply -f gaussdb-configmap.yaml kubectl apply -f gaussdb-pvc.yaml kubectl apply -f gaussdb-deployment.yaml kubectl apply -f gaussdb-service.yaml
容器化部署最佳实践
1. 存储配置
- 使用持久化存储,确保数据不丢失
- 选择高性能存储,满足数据库 I/O 需求
- 配置存储快照,便于数据备份和恢复
2. 资源管理
- 为容器设置合理的资源限制和请求
- 监控容器资源使用情况,及时调整配置
- 考虑使用节点亲和性,将容器调度到合适的节点
3. 高可用配置
- 部署多个容器实例,实现负载均衡
- 配置健康检查,自动重启故障容器
- 考虑使用 StatefulSet 部署有状态应用
4. 安全配置
- 使用私有镜像仓库,确保镜像安全
- 配置容器网络策略,限制容器间通信
- 定期更新容器镜像,修复安全漏洞
- 配置数据库访问控制,限制访问权限
5. 监控和日志
- 集成 Prometheus 和 Grafana,监控容器和数据库性能
- 配置日志收集,便于故障排查和分析
- 设置告警规则,及时发现和处理问题
常见问题(FAQ)
Q1: Docker 部署 GaussDB 时如何配置参数?
A1: 可以通过以下方式配置参数:
- 在启动容器时使用
-e参数设置环境变量 - 挂载配置文件到容器内的配置目录
- 进入容器后直接修改配置文件
Q2: Kubernetes 部署 GaussDB 时如何实现高可用?
A2: 实现高可用的方法包括:
- 使用 StatefulSet 部署有状态应用
- 配置多个副本,实现负载均衡
- 配置健康检查和自动重启
- 使用持久化存储确保数据安全
- 配置主从复制,实现数据冗余
Q3: 如何备份和恢复容器化部署的 GaussDB 数据?
A3: 备份和恢复方法包括:
- 使用 Docker 卷备份:直接备份挂载的数据卷
- 使用 Kubernetes 快照:配置存储类支持快照,创建数据快照
- 使用数据库备份工具:进入容器执行数据库备份命令
- 恢复时将备份数据挂载到新的容器实例
Q4: 容器化部署 GaussDB 时如何优化性能?
A4: 性能优化方法包括:
- 为容器分配足够的资源(CPU、内存)
- 使用高性能存储设备
- 优化数据库配置参数
- 配置合理的容器网络
- 监控性能指标,及时调整配置
Q5: 如何升级容器化部署的 GaussDB 版本?
A5: 升级方法包括:
- 拉取新版本镜像
- 停止并删除旧容器
- 使用新版本镜像启动新容器,挂载原有数据卷
- 执行数据库升级操作
- 验证升级后的数据库状态
对于 Kubernetes 部署,可以使用 Helm 升级或滚动更新 Deployment
