openGauss源码解析(16)
openGauss源码解析:第2章 openGauss开发快速入门(6)
2.1.6 创建XML配置文件
安装openGauss前需要创建cluster_config.xml文件。cluster_config.xml文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss如何部署。用户需根据不同场配置对应的XML(extensible markup language,可扩展标记语言)文件。
下面以一主一备的方案为例,说明如何创建XML配置文件。
1. 配置数据库名称及各项目录
在“script/gspylib/etc/conf/cluster_config_template.xml”获取模板。数据库名称和各项目录的配置项如下,加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- 整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAM name="clusterName" value="Cluster_template" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="node1_hostname,node2_hostname" />
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<!-- 临时文件目录-->
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" />
<!--数据库工具目录-->
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
<!--数据库core文件目录-->
<PARAM name="corePath" value="/opt/huawei/corefile"/>
<!-- 节点IP,与nodeNames一一对应 -->
<PARAM name="backIp1s" value="192.168.0.1,192.168.0.2"/>
</CLUSTER>
配置文件中参数说明请见表2-5。
表2-5 参数说明
实例类型 | 参数 | 说明 |
---|---|---|
整体信息 | clusterName | openGauss名称 |
nodeNames | openGauss中主机名称 通过hostname命令可以获取数据库节点的主机名称 | |
backIp1s | 主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通信 | |
gaussdbAppPath | openGauss程序安装目录。此目录应满足如下要求。
| |
gaussdbLogPath | openGauss运行日志和操作日志存储目录。此目录应满足如下要求。
| |
tmpMppdbPath | 数据库临时文件存放目录 若不配置tmpMppdbPath,默认存放在/opt/huawei/wisequery/安装用户名_mppdb目录下,其中"opt/huawei/wisequery"是默认指定的数据库系统工具目录 | |
gaussdbToolPath | openGauss系统工具目录,主要用于存放互信工具等。此目录应满足如下要求。
| |
corePath | openGauss core文件的指定目录 |
配置数据库名称及各项目录时请注意如下事项。
(1) “/opt/huawei/install/om”目录存放互信等工具,具有特殊权限。为了避免权限冲突问题,不要将实例数据目录放在此目录下。
(2) 安装目录和数据目录需为空或者不存在,否则可能导致安装失败。
数据库节点的实例目录之间不相互耦合。即各个配置目录不关联,删除其中任意一个目录,不会级联删除其他目录。如gaussdbAppPath为"/opt/huawei/install/app",gaussdbLogPath为"/opt/huawei/install/app/omm"。当gaussdbAppPath目录被删除时,会级联删除gaussdbLogPath目录,从而引起其他问题。
(3) 如果需要安装脚本自动创建安装用户时,配置的目录不能与系统创建的默认用户目录耦合关联。
(4) 配置openGauss路径和实例路径时,路径中不能包含这些引号中的特殊字符:“|;&$<>`\\'\"{}()[]~*?”。
2. 配置Host基本信息
每台Host服务器都必须有如下基本信息,加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- node1上的节点部署信息 -->
<DEVICE sn="node1_hostname">
<!-- node1的hostname -->
<PARAM name="name" value="node1_hostname"/>
<!-- node1所在的AZ(availability zone,可用区)及AZ优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- node1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.0.1"/>
<PARAM name="sshIp1" value="192.168.0.1"/>
配置文件中的参数说明请参见表2-6。
表2-6 参数说明
实例类型 | 参数 | 说明 |
整体信息 | name | 主机名称 |
azName | 指定azName(available zone name),字符串(不能含有特殊字符),例如AZ1、AZ2、AZ3 | |
azPriority | 指定azPriority的优先级。优先级与azName无关 | |
backIp1 | 主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通信 | |
sshIp1 | 设置SSH可信通道IP地址(外网IP)。若无外网,则可以不设置该选项或者同backIp1设置相同IP |
配置文件中所有IP参数(包含backIp、sshIp、listenIp等)均只支持配置一个IP。如果配置第二个IP参数,则不会读取第二个参数的配置值。例如,XML配置文件中同时配置backIp1和backIp2参数,在解析配置文件时仅读取backIp1参数的配置值,不会读取backIp2参数的配置值。
<PARAM name="backIp1" value="192.168.0.1"/>
<PARAM name="backIp2" value="192.168.0.2"/>
3. 配置数据库主节点信息
数据库主节点需要配置以下信息,加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。
<!--DBnode-->
<PARAM name="dataNum" value="1"/>
<!--DBnode端口号-->
<PARAM name="dataPortBase" value="15400"/>
<!--DBnode主节点上数据目录,及备机数据目录-->
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn,node2_hostname,/opt/huawei/install/data/dn"/>
<!--DBnode节点上设定同步模式的节点数-->
<PARAM name="dataNode1_syncNum" value="0"/>
代码中的参数说明请参见表2-7。
表2-7 参数说明
实例类型 | 参数 | 说明 |
---|---|---|
DBnode | dataNum | 当前主机上需要部署的数据库节点个数 |
dataPortBase | 数据库节点的基础端口号,默认值40000 | |
dataNode1 | 用于指定当前主机上的数据库节点的数据存储目录。此目录为数据库的数据存储目录,应规划到数据盘上 | |
dataNode1_syncNum | 可选参数,用于指定当前集群中同步模式的节点数目。取值范围为0~数据库备机节点数 |
4. 一主一备配置文件示例
完整的一主一备XML配置文件请参见如下示例,可以直接拷贝使用,加粗字体内容为示例,可自行替换。
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<PARAM name="clusterName" value="Cluster_template" />
<PARAM name="nodeNames" value="node1_hostname,node2_hostname" />
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/>
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
<PARAM name="corePath" value="/opt/huawei/corefile"/>
<PARAM name="backIp1s" value="192.168.0.1,192.168.0.2"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- node1上的节点部署信息 -->
<DEVICE sn="node1_hostname">
<PARAM name="name" value="node1_hostname"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.0.1"/>
<PARAM name="sshIp1" value="192.168.0.1"/>
<!--dn-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn,node2_hostname,/opt/huawei/install/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<!-- node2上的节点部署信息,其中“name”的值配置为主机名称 -->
<DEVICE sn="node2_hostname">
<PARAM name="name" value="node2_hostname"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.0.2"/>
<PARAM name="sshIp1" value="192.168.0.2"/>
</DEVICE>
</DEVICELIST>
</ROOT>