v2.0
- 关于PTK
- 快速入门
- 使用指南
- 使用参考
- 配置文件示例
- 命令介绍
- ptk
- ptk completion
- ptk view-static-config
- ptk init-cluster
- ptk collect
- ptk rec-guc
- ptk cache
- ptk gen-ptkc
- ptk manage
- ptk demo
- ptk meta
- ptk version
- ptk self
- ptk gen-om-xml
- ptk env
- ptk gen-static-config
- ptk cluster
- ptk cluster createdb
- ptk cluster uninstall-compat-tools
- ptk cluster install-compat-tools
- ptk cluster install-mogila
- ptk cluster rename
- ptk cluster throwout
- ptk cluster takeover
- ptk cluster uninstall-cm
- ptk cluster install-cm
- ptk cluster gen-cert-files
- ptk cluster load-cm-vip
- ptk cluster del-kerberos-auth
- ptk cluster add-kerberos-auth
- ptk cluster uninstall-kerberos-server
- ptk cluster install-kerberos-server
- ptk cluster is-in-upgrade
- ptk cluster upgrade-rollback
- ptk cluster upgrade-commit
- ptk cluster upgrade
- ptk cluster demote
- ptk cluster promote
- ptk cluster refresh
- ptk cluster shell
- ptk cluster modify-comment
- ptk cluster show-config
- ptk cluster set-guc
- ptk cluster show-guc
- ptk cluster set-hba
- ptk cluster show-hba
- ptk cluster scale-out
- ptk cluster scale-in
- ptk cluster uninstall-mogha
- ptk cluster install-mogha
- ptk cluster list-plugins
- ptk cluster install-plugin
- ptk cluster inspect
- ptk cluster failover
- ptk cluster switchover
- ptk cluster build
- ptk cluster status
- ptk cluster restart
- ptk cluster stop
- ptk cluster start
- ptk uninstall
- ptk ls
- ptk install
- ptk exec
- ptk template
- ptk encrypt
- ptk checkos
- ptk download
- ptk candidate
- 故障排查
- FAQ
- 发布记录
- 社区
- 附录:YAML语法
准备配置文件
配置文件简介
在安装数据库之前,需通过 PTK 来创建一个配置文件,用于描述期望的数据库集群拓扑结构。
如果要安装本地单实例数据库,可以通过以下命令生成模板配置文件:
ptk template -l > config.yaml
如果要安装多实例集群,则可以通过以下命令生成模板配置文件:
ptk template > config.yaml
运行后会在当前文件夹内生成 config.yaml
文件,用户需根据自己的服务器和目录规划修改相关配置。
如果存在密码字段,用户需通过 ptk encrypt 指令加密后写入配置文件。
注意: 如果您希望 PTK 使用非 root 用户来 SSH 连接目标机器操作, 请确保该用户在目标机器上具有免密执行 sudo 的权限, 配置方式:可在目标机器上的 /etc/sudoers 文件中新增如下一行(USERNAME 替换为SSH连接用户名) :
[USERNAME] ALL=(ALL) NOPASSWD:ALL
交互式创建
PTK 也支持通过交互式方式创建配置文件,只需执行如下命令:
ptk template create
执行后,会进入交互式终端,用户只需根据提示的问题,逐个填写即可。
注意,在填写 db_servers
时,SSH 的登录信息如果相同可重复使用。
当交互式终端退出后,会自动在当前文件夹下创建一个 config.yaml
的文件。
配置文件字段说明
我们以下面这个完整的配置文件为例说明:
yaml 语法中,如果是字符串类型默认无需加引号,如果字符串之中包含空格或特殊字符,需要放在引号之中,更多语法内容请参考附录:YAML语法
global:
# 集群名称,用户自定义
cluster_name: c1
# 运行数据的系统用户
user: omm
# 系统用户组,默认和用户名同名
group: omm
# 系统用户密码,PTK在创建用户时设置,可不填。若填写需通过 ptk encrypt 加密
user_password: ""
# 数据库密码,需通过 ptk encrypt 加密。若不填写,在安装时会通过交互式填写
db_password: ""
# 数据库端口
db_port: 26000
# 数据库的安装目录
# PTK 会在该目录下分别创建应用目录,数据目录,工具目录,日志目录以及临时目录
base_dir: /opt/mogdb
# gs_initdb 工具支持参数列表,安装时会追加到指令中
gs_initdb_opts:
- --encoding=UTF-8
- --dbcompatibility=A
# 新增允许集群外可以访问数据库的服务器IP
extra_hba_conf:
- type: host
database: all
user: all
address: <IP>/32
method: sha256
option:
# CM 组件的配置,该值在启用CM组件时生效
cm_option:
# CM 的安装目录,不填写默认会在 base_dir 目录下创建 cm 目录
# dir: /opt/mogdb/cm
# CM Server 端口
cm_server_port: 15300
# 虚拟IP,该值需CM支持的版本才生效
db_service_vip: ""
# CM Server 配置,会更新到 cm_server.conf 中
cm_server_conf:
# instance_heartbeat_timeout: 2
# ...
# CM Agent 配置,会更新到 cm_agent.conf 中
cm_agent_conf:
# log_max_size: 10240
# ...
db_servers:
- host: <IP>
# 数据库端口,可省略,自动继承 global 里配置的 db_port
db_port: 26000
# 数据库角色,支持的选项: primary, standby, cascade_standby
role: primary
# 可用区名称,该值在启用CM组件时生效
az_name: AZ1
# 可用区优先级,值越小优先级越高,最小 1,该值在启用CM组件时生效
az_priority: 1
# 级联备的上游备库IP,仅级联备时必填
upstream_host:
# postgresql.conf 中支持的参数
db_conf:
# replication_type: 1
# 连接服务器的SSH配置
ssh_option:
port: 22
user: root
# SSH 登录密码,不支持明文,需使用 ptk encrypt 加密后填写
password:
# cm 服务器列表,如果不在这里列出,在安装时会在每个 db_server 的机器上部署
# 注意此处配置不意味着会安装CM,需在安装时通过命令行指定 --install-cm 参数才会生效
cm_servers:
- host: <IP>
# CM Server 端口,默认为 global.cm_option.cm_server_port
port: 15300
# ssh 配置信息,如果 db_server 有相同机器配置过,则无需在此处配置
ssh_option:
整个配置文件分为三个部分:global
, db_servers
和 cm_servers
- global: 定义集群内所有实例公用的信息及缺省值
- db_servers: 实例列表,每个元素代表一个实例信息
- cm_servers: CM server 部署节点信息,该部分仅在指定了
--install-cm
参数时生效,也可以省略,默认和db_servers
部署在一起
global 配置
字段名 | 解释 | 值类型 | 默认值 | 是否必填 | 备注 |
---|---|---|---|---|---|
cluster_name | 集群名称 | 字符串 | cluster_ 前缀,随机生成 |
是 | |
user | 操作系统用户 | 字符串 | omm | 否 | |
group | 操作系统用户组 | 字符串 | omm | 否 | |
user_password | 操作系统用户密码 | 字符串 | 空 | 否 | 需通过 encrypt 指令加密后填写 |
db_password | 数据库密码 | 字符串 | 空 | 否 | 需通过 encrypt 指令加密后填写,若不填写,安装过程也可以填写 |
db_port | 数据库监听端口 | 整型 | 26000 | 否 | |
base_dir | 数据库安装的基础目录 | 字符串 | /opt/mogdb | 否 | 若填写该字段,app_dir, log_dir, data_dir, tool_dir, cm_dir, tmp_dir 可不填写,自动放置到该字段指定的目录下 |
app_dir | 数据库应用目录 | 字符串 | /opt/mogdb/app | 否 | |
log_dir | 数据库日志存放目录 | 字符串 | /opt/mogdb/log | 否 | |
data_dir | 数据库数据存放目录 | 字符串 | /opt/mogdb/data | 否 | |
tool_dir | 数据库工具存放目录 | 字符串 | /opt/mogdb/tool | 否 | |
tmp_dir | 数据库临时文件存放目录 | 字符串 | /opt/mogdb/tmp | 否 | |
core_file_dir | 系统 corefile 路径 | 字符串 | 空 | 否 | 若填写会修改系统 kernel.core_pattern 的值 |
gs_initdb_opts | 初始化数据库时 gs_initdb 工具的参数 | 字符串列表 | 否 | 一个元素设置一个参数,如果未设置 --locale 参数,PTK 默认设置 --no-locale |
|
ssh_option | SSH连接认证信息 | ssh_option | 否 | 实例如果需要远程连接,但实例级别的 ssh_option 未配置时会使用 global 内的该字段 | |
cm_option | CM组件配置参数 | cm_option | 否 | 该字段在安装时指定 --install-cm 时生效 |
db_servers 配置
字段名 | 解释 | 值类型 | 默认值 | 是否必填 | 备注 |
---|---|---|---|---|---|
host | 实例IP | 字符串 | 空 | 是 | |
db_port | 实例端口 | 整型 | 26000 | 否 | 若未填写,使用 global 内的配置 |
ha_ips | 实例日志复制备用IP列表 | 字符串列表 | 空 | 否 | |
ha_port | 日志复制备用端口 | 整型 | 26001 | 否 | |
role | 数据库实例角色 | 字符串 | 空 | 否 | 可选值: primary , standby , cascade_standby , 若不填写,集群内随机选择一个实例设置主,其余为备库 |
upstream_host | 级联备上游备库IP | 字符串 | 空 | 级联备时必填 | |
az_name | 可用区名 | 字符串 | AZ1 | 否 | |
az_priority | 可用区优先级 | 整型 | 1 | 数值越小优先级越高 | |
xlog_dir | xlog 日志目录 | 字符串 | 空 | 默认会放到 log_dir 的 pg_log 下,若配置该字段,不能为数据目录的子目录,否则启动报错 | |
db_conf | 数据库guc 参数配置 | 字典 | 空 | 字典键为 postgresql.conf 中的参数 | |
ssh_option | 连接实例时的ssh 连接认证信息 | ssh_option | 否 | 若未设置使用 global 内的配置 |
cm_servers 配置
字段名 | 解释 | 值类型 | 默认值 | 是否必填 | 备注 |
---|---|---|---|---|---|
host | 实例IP | 字符串 | 空 | 是 | |
port | CM Server端口 | 整型 | 15300 | 否 | 若未填写,使用 global.cm_option.cm_server_port 的值 |
ssh_option | 连接实例时的ssh 连接认证信息 | ssh_option | 否 | 若未设置使用 global 内的配置或db_servers 中相同IP的配置 |
cm_option
字段名 | 解释 | 值类型 | 默认值 | 是否必填 | 备注 |
---|---|---|---|---|---|
dir | CM 安装目录 | 字符串 | $base_dir/cm | 是 | |
cm_server_port | CM server 监听端口 | 整型 | 15300 | 否 | |
db_service_vip | 虚拟IP(需CM支持) | 字符串 | 空 | 否 | |
cm_server_conf | CM sever 配置参数 | 字典 | 空 | 否 | 该字段下字典的键支持任何 cm_server 的参数,PTK 会将值设置到 cm_server.conf 文件中 |
cm_agent_conf | CM agent 配置参数 | 字典 | 空 | 否 | 该字段下字典的键支持任何 cm_agent 的参数,PTK 会将值设置到 cm_agent.conf 文件中 |
ssh_option
字段名 | 解释 | 值类型 | 默认值 | 是否必填 | 备注 |
---|---|---|---|---|---|
host | 机器IP | 字符串 | 实例的IP | 否 | 如果配置为 proxy 跳板机时,该字段必填 |
port | ssh 连接端口 | 整型 | 22 | 否 | |
user | ssh 连接用户 | 字符串 | root | 否 | 如果连接的用户为非 root 时,需确保该用户具有免密执行 sudo 的权限 |
password | ssh 连接密码 | 字符串 | 空 | 否 | 需通过 encrypt 指令加密后填写 |
key_file | ssh 连接密钥文件 | 字符串 | 空 | 否 | |
passphrase | ssh 连接密钥文件的口令 | 字符串 | 空 | 否 | |
conn_timeout | ssh 连接超时时间 | Duration | 1m | 否 | |
exec_timeout | 执行命令超时时间 | Duration | 10m | 否 | |
proxy | 跳板机配置 | ssh_option | 空 | 否 | 仅支持跳一次连接 |