外观
GaussDB 分布式集群安装
安装前准备
- 硬件规划:
- 确定节点数量和角色分配
- 确保所有节点硬件满足要求
- 配置高速网络连接
- 操作系统准备:
- 所有节点安装相同版本的Linux操作系统
- 配置网络、防火墙和SELinux
- 安装必要的系统依赖
- 软件包准备:
- 下载GaussDB分布式版本安装包
- 验证安装包的完整性和合法性
- 用户准备:在所有节点创建GaussDB运行用户和组
- 目录准备:在所有节点创建安装目录、数据目录和日志目录
- 免密登录配置:配置节点间的SSH免密登录
集群规划
- 节点角色规划:
- 协调节点(CN):2个或更多,实现负载均衡和高可用性
- 数据节点(DN):3个或更多,建议为奇数,支持数据分片和多副本
- 全局元数据节点(GTM):1个主节点和1个或多个备节点
- GTM代理(GTM Proxy):每个协调节点部署一个
- 网络规划:
- 业务网络:用于客户端访问
- 内部通信网络:用于节点间通信
- 管理网络:用于集群管理
- 存储规划:
- 数据存储:高性能存储设备
- 日志存储:低延迟存储设备
- 备份存储:大容量存储设备
安装流程
- 环境检查:检查所有节点的环境是否满足要求
- 解压安装包:在所有节点解压GaussDB安装包
- 配置集群参数:编辑集群配置文件,指定节点角色和参数
- 执行安装脚本:运行集群安装脚本,自动部署所有节点
- 初始化集群:初始化分布式集群
- 启动集群:启动GaussDB分布式集群
- 验证集群:验证集群是否正常运行
详细安装步骤
- 配置免密登录:bash
# 在所有节点生成SSH密钥对 ssh-keygen -t rsa # 将公钥分发到所有节点 for host in node1 node2 node3; do ssh-copy-id -i ~/.ssh/id_rsa.pub gaussdb@$host done - 创建安装目录和数据目录:bash
mkdir -p /opt/gaussdb /data/gaussdb chown -R gaussdb:gaussdb /opt/gaussdb /data/gaussdb - 解压安装包:bash
tar -zxvf GaussDB-Distributed-xxx.tar.gz -C /opt/gaussdb - 编辑集群配置文件:yaml
# cluster_config.xml <Cluster> <Name>gaussdb-cluster</Name> <NodeList> <Node Name="node1" HostName="node1" IP="192.168.1.101" DBPort="5432" /> <Node Name="node2" HostName="node2" IP="192.168.1.102" DBPort="5432" /> <Node Name="node3" HostName="node3" IP="192.168.1.103" DBPort="5432" /> </NodeList> <CNList> <CN Name="cn1" HostName="node1" IP="192.168.1.101" Port="25108" /> <CN Name="cn2" HostName="node2" IP="192.168.1.102" Port="25108" /> </CNList> <DNList> <DN Name="dn1" HostName="node1" IP="192.168.1.101" Port="25109" DataDir="/data/gaussdb/dn1" /> <DN Name="dn2" HostName="node2" IP="192.168.1.102" Port="25109" DataDir="/data/gaussdb/dn2" /> <DN Name="dn3" HostName="node3" IP="192.168.1.103" Port="25109" DataDir="/data/gaussdb/dn3" /> </DNList> <GTMList> <GTM Name="gtm" HostName="node1" IP="192.168.1.101" Port="25107" DataDir="/data/gaussdb/gtm" /> <GTM Name="gtm_standby" HostName="node2" IP="192.168.1.102" Port="25107" DataDir="/data/gaussdb/gtm_standby" /> </GTMList> </Cluster> - 执行安装脚本:bash
cd /opt/gaussdb/scripts ./install_cluster.sh -c cluster_config.xml -w <数据库密码> - 初始化集群:bash
./gs_initcluster -c cluster_config.xml -D /data/gaussdb -w <数据库密码> - 启动集群:bash
./gs_ctl start -D /data/gaussdb - 验证集群状态:bash
./gs_om -t status
集群管理
- 查看集群状态:
gs_om -t status - 启动集群:
gs_ctl start -D /data/gaussdb - 停止集群:
gs_ctl stop -D /data/gaussdb - 重启集群:
gs_ctl restart -D /data/gaussdb - 添加节点:
gs_expansion -t add_node -c new_node_config.xml - 删除节点:
gs_expansion -t remove_node -n node_name
安装验证
- 集群状态验证:检查所有节点和服务是否正常运行
- 连接验证:使用客户端工具连接集群,验证连接是否正常
- 功能验证:执行分布式查询,验证集群功能是否正常
- 性能验证:运行性能测试,验证集群性能
- 故障转移验证:模拟节点故障,验证集群的高可用性
常见问题(FAQ)
Q1: 分布式集群最少需要多少个节点?
A1: 分布式集群最少需要3个节点,包括1个协调节点、1个数据节点和1个GTM节点。但实际生产环境中,建议部署更多节点以实现高可用性和负载均衡,例如2个协调节点、3个数据节点和2个GTM节点(1主1备)。
Q2: 如何配置节点间的SSH免密登录?
A2: 可以通过以下步骤配置SSH免密登录:
- 在所有节点生成SSH密钥对:
ssh-keygen -t rsa - 将公钥分发到所有节点:
ssh-copy-id -i ~/.ssh/id_rsa.pub gaussdb@$host - 验证免密登录:
ssh gaussdb@node1
Q3: 安装过程中遇到节点间通信问题怎么办?
A3: 遇到节点间通信问题,可以检查以下几点:
- 确保所有节点的网络连接正常
- 检查防火墙配置,确保必要的端口开放
- 验证SSH免密登录是否配置正确
- 检查节点间的hosts文件配置
- 查看安装日志,定位具体错误信息
Q4: 如何扩展分布式集群?
A4: 可以使用GaussDB提供的扩展工具添加节点:
- 准备新节点,确保环境满足要求
- 编辑扩展配置文件,指定新节点的信息
- 执行扩展脚本:
gs_expansion -t add_node -c expansion_config.xml - 验证新节点是否成功加入集群
Q5: 如何备份和恢复分布式集群?
A5: 分布式集群的备份和恢复可以使用GaussDB提供的备份恢复工具:
- 全量备份:
gs_backup -t backup -p <port> -h <host> -D /data/backup - 增量备份:
gs_backup -t incremental -p <port> -h <host> -D /data/backup -b /data/backup/full_backup - 恢复:
gs_restore -t restore -p <port> -h <host> -D /data/gaussdb -b /data/backup/full_backup
分布式集群的备份恢复需要考虑所有节点的数据一致性,建议在集群空闲时执行备份操作。
