v1.1
- 关于PTK
- 快速上手
- 安装PTK
- 使用手册
- 配置文件字段说明
- 配置文件示例
- 命令介绍- ptk
- ptk completion
- ptk register
- 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 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
 
- 故障排查
- 常见问题
- 发布记录
- GPTK - 图形化部署工具
- 社区
- 附录:YAML语法
创建配置文件
手动配置
在安装数据库之前,需通过 PTK 来创建一个配置文件,用于描述期望的数据库集群拓扑结构。
如果要安装单实例数据库,可以通过以下命令生成配置文件:
ptk template -l > config.yaml如果要安装多实例集群,则可以通过以下命令生成配置文件:
ptk template > config.yaml运行后会在当前文件夹内生成 config.yaml 文件,用户需修改文件内 db_server 相关的字段。
如果存在密码字段,用户需通过 ptk encrypt 指令加密后写入配置文件。
注意: 如果您希望 PTK 使用非 root 用户来连接目标机器操作, 请确保该用户在目标机器上具有免密执行 sudo 的权限, 配置方式:可在目标机器上的 /etc/sudoers 文件中新增如下一行(USERNAME 替换为SSH连接用户名) :
[USERNAME] ALL=(ALL) NOPASSWD:ALL
交互式创建
PTK 也支持通过交互式方式创建配置文件,只需执行如下命令:
ptk template create执行后,会进入交互式终端,用户只需根据提示的问题,逐个填写即可。
注意,在填写 db_server 时,SSH 的链接信息如果相同可重复使用。
当交互式终端退出后,会自动在当前文件夹下创建一个 config.yaml 的文件。
交互式创建示例
默认情况下,大部分字段可使用系统生成的默认值,回车即可,密码字段需用户手动输入。
下面是创建一主一备的配置文件的示例,假设主在本机,备机IP为 192.168.1.100
$ ptk template create
请输入集群名称: (default: cluster_igiltry)
请输入系统用户名: (default: omm)
请输入用户组名: (default: omm)
请输入数据库初始密码(需8到16位)
请再次输入数据库密码确认:
请输入数据库监听端口,取值范围 [1024~65535]: (default: 26000)
请输入CM sever的监听端口, 取值范围[1024~65535]: (default: 15300)
请输入数据库要安装的目录(需确保为空): (default: /opt/mogdb)
接下来, 我们来添加一些数据库实例服务器
================db server 1================
请输入服务器IP(仅支持IPv4):  127.0.0.1
请选择数据库角色:
  1: primary
  2: standby
  3: cascade_standby
请输入选项编号:  1
请输出数据库的 available zone 名称: (default: AZ1)
================ end ================
Do you want to add another db server?[Y|Yes](default=N) y
================db server 2================
请输入服务器IP(仅支持IPv4):  192.168.1.100
请选择数据库角色:
  1: primary
  2: standby
  3: cascade_standby
请输入选项编号:  2
请输出数据库的 available zone 名称: (default: AZ1)
[SSH] 请输入 SSH 登录用户: (default: root)
[SSH] 请输入 SSH 端口: (default: 22)
[SSH] 请选择验证方式:
  1: Password
  2: KeyFile
请输入选项编号:  1
[SSH] 请输入 SSH 登录密码:
================ end ================
Do you want to add another db server?[Y|Yes](default=N) n
Generate /Users/vimiix/Home/enmotech/ptk/ptk_repo/config.yaml successfully配置文件字段说明
我们以下面这个完整的配置文件为例说明:
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
  # # 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: 10.0.1.100
    # # 数据库端口
    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
    #    password: 
# cm 服务器列表,如果不在这里列出,在安装时会在每个 db_server 的机器上部署
# 注意此处配置不意味着安装,需在安装时指定 --install-cm 参数才会生效
cm_servers:
  - host: 10.0.1.100
    # # CM Server 端口,默认为 global.cm_option.cm_server_port
    port: 15300 
    # # ssh 配置信息,如果 db_server 有相同机器配置过,则无需在此处配置
    ssh_option:整个配置文件分为两个部分:global 和 db_servers
- global: 定义集群内所有实例公用的信息及缺省值
- 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 | 空 | 否 | 仅支持跳一次连接 |