- 关于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 的配置文件采用 YAML格式。
该文件介绍了拓扑配置文件的所有参数。
在安装数据库集群时,需用户提供一个描述集群拓扑的配置文件来告诉 PTK 应该按照什么结构来部署集群。
PTK 提供了终端图形化创建配置文件的功能,通过运行下面的指令可以进入交互流程:
ptk template create --tui
你只需要按照终端提示的步骤逐步完成配置,最终会在当前文件夹下生成 config.xx.yaml 的配置文件。 另外,如果想要不使用交互式创建,直接生成一个默认配置的文件,可以运行命令:
ptk template > config.yaml
运行后可以生成一个 config.yaml 的文件,需用户根据自己的实际情况修改文件里面的字段值。
在非交互式修改时,配置文件中的系统用户密码 (user_password),数据库密码 (db_password),SSH密码 (ssh_option.password) 或密钥口令 (ssh_option.passphrase) 等敏感字段,
必须使用 PTK 提供的加密命令进行加密后填写:
// 建议使用单引号包裹要加密的字符串,避免被转义
ptk encrypt '<PASSWORD>'
Config
Config 数据库集群拓扑配置信息
示例:
- 简单配置示例
# 集群级别的配置信息,其中 `db_port` 和 `ssh_option` 字段是 **可重用字段**
global:
cluster_name: cluster_simple # 集群名称,PTK管理的集群的唯一标识
db_password: pTk6MTIxOGMxOTk8QT1CPT4+PXlnYW1DdHpXb2hCX3c3UW0wWXVkNlZwMGRCakpxRXd1WWdwQ0xDUWVrb0U= # 数据库的初始用户密码,若配置文件中未填写,会在安装时通过交互式要求输入
# 集群内的数据库实例服务器配置信息
db_servers:
- host: <ip1> # 数据库实例服务器 IP (仅支持 IPv4)
- host: <ip2> # 数据库实例服务器 IP (仅支持 IPv4)
- 复杂配置示例
# 集群级别的配置信息,其中 `db_port` 和 `ssh_option` 字段是 **可重用字段**
global:
cluster_name: cluster_complex # 集群名称,PTK管理的集群的唯一标识
user: omm # 运行数据库的操作系统用户名
group: omm # 运行数据库的操作系统用户组
db_password: pTk6MTIxOGMxOTk8QT1CPT4+PXlnYW1DdHpXb2hCX3c3UW0wWXVkNlZwMGRCakpxRXd1WWdwQ0xDUWVrb0U= # 数据库的初始用户密码,若配置文件中未填写,会在安装时通过交互式要求输入
base_dir: /opt/mogdb # 数据库安装的基础目录,一般建议指定到配置文件中 ssh 用户可访问的目录下的路径,让PTK自动创建。
# 额外新增 HBA 条目列表
extra_hba_conf:
- type: host # 连接类型,支持 local/host/hostssl/hostnossl
database: all # 指定这条记录所匹配的数据库名称
user: all # 指定这条记录匹配哪些数据库用户名
address: <ip3> # 必填,指定这个记录匹配的客户端机器地址。
method: sha256 # 指定当一个连接匹配这个记录时,要使用的认证方法。
# MogDB 高可用组件 CM 配置信息,若不使用 CM 组件,则无需填写该字段
cm_option:
dir: /opt/mogdb/cm # CM 安装目录
cm_server_port: 15300 # cm server 监听端口
# 集群内的数据库实例服务器配置信息
db_servers:
- host: <ip1> # 数据库实例服务器 IP (仅支持 IPv4)
db_port: 27000 # 数据库端口
role: primary # 数据库实例角色,若不填,PTK 会随机选择一个实例作为主库,其余自动为备库
az_name: BJ # Available Zone (可用区) 名称
az_priority: 1 # 可用区使用的优先级,数值越小优先级越高, 最小为 1
# SSH 登录信息,登录用户需为 **root** 或者具有 sudo 权限的用户
ssh_option:
port: 22 # SSH 服务端口
user: root # SSH 登录用户
password: pTk6LIBsPVplOpmxQToCPT9+PXlnYW1DdHpXb2hCX3c3UW0wWXVkNlZwMGRCakpxRXd1WWdwQ0xDUWVrb0U= # SSH 登录用户密码
conn_timeout: 5m0s # SSH 登录连接超时时间,支持单位 m(分),s(秒)
exec_timeout: 5m0s # SSH 执行单条命令时的超时时间,支持单位 m(分),s(秒)
- host: <ip2> # 数据库实例服务器 IP (仅支持 IPv4)
db_port: 27000 # 数据库端口
role: standby # 数据库实例角色,若不填,PTK 会随机选择一个实例作为主库,其余自动为备库
az_name: BJ # Available Zone (可用区) 名称
az_priority: 1 # 可用区使用的优先级,数值越小优先级越高, 最小为 1
# SSH 登录信息,登录用户需为 **root** 或者具有 sudo 权限的用户
ssh_option:
port: 22 # SSH 服务端口
user: root # SSH 登录用户
key_file: ~/.ssh/id_rsa # SSH 登录密钥文件路径
conn_timeout: 5m0s # SSH 登录连接超时时间,支持单位 m(分),s(秒)
exec_timeout: 5m0s # SSH 执行单条命令时的超时时间,支持单位 m(分),s(秒)
- host: <ip3> # 数据库实例服务器 IP (仅支持 IPv4)
db_port: 27000 # 数据库端口
role: cascade_standby # 数据库实例角色,若不填,PTK 会随机选择一个实例作为主库,其余自动为备库
upstream_host: <ip2> # 当实例角色为 cascade_standby 时,该字段表示要跟随的上游备库 IP
az_name: SH # Available Zone (可用区) 名称
az_priority: 2 # 可用区使用的优先级,数值越小优先级越高, 最小为 1
# 集群内的CM服务部署机器列表
cm_servers:
- host: <ip1> # CM Server 服务器 IP (仅支持 IPv4)
port: 15300 # CM Server 监听端口
- host: <ip2> # CM Server 服务器 IP (仅支持 IPv4)
port: 15300 # CM Server 监听端口
global
类型: Global
描述: 集群级别的配置信息,其中 db_port
和 ssh_option
字段是 可重用字段
可重用字段
如果实例级别设置了该字段,则对应实例使用实例级别的值;
如果实例级别未配置该字段,则继承 global 级别的字段的值。
新增于: v0.1
db_servers
类型: []DBServer
描述: 集群内的数据库实例服务器配置信息
新增于: v0.1
cm_servers
类型: []CMServer
描述: 集群内的CM服务部署机器列表
新增于: v0.5
Global
Global 定义配置文件中全局参数
Appears in:
Config.global
cluster_name
类型: string
描述: 集群名称,PTK管理的集群的唯一标识
新增于: v0.1
user
类型: string
描述: 运行数据库的操作系统用户名
如果想一套主备在同一个服务器上部署,需在实例级别设置不同的用户来隔离环境
默认为:"omm"
新增于: v0.1
group
类型: string
描述: 运行数据库的操作系统用户组
默认和操作系统用户同名
新增于: v0.1
user_password
类型: string
描述: 运行数据库的操作系统用户密码
该字段不支持明文填写,需使用 ptk encrypt 加密
默认为空,不设置
新增于: v0.1
db_password
类型: string
描述: 数据库的初始用户密码,若配置文件中未填写,会在安装时通过交互式要求输入
该字段不支持明文填写,需使用 ptk encrypt 加密
新增于: v0.1
db_port
类型: int
描述: 数据库的运行端口
如果在单个服务器上部署主备,需在实例级别设置不同的端口号
默认值: 26000
新增于: v0.1
base_dir
类型: string
描述: 数据库安装的基础目录,一般建议指定到配置文件中 ssh 用户可访问的目录下的路径,让PTK自动创建。
如果 PTK 在执行安装时使用的为非 root 用户的话,普通用户没有权限在 /opt 目录下创建目录,所以默认值 /opt/mogdb
会出现无权创建的问题,需用户指定一个执行用户可访问的路径。
指定该目录后,app_dir,data_dir,log_dir和tool_dir 参数中若未配置的,PTK 会自动在该安装目录下会创建对应的目录;
无特殊要求情况下,我们推荐用户在安装时仅设置该参数即可
注意:若在单机上部署集群时,需在实例级别设置不同的安装目录
默认值: "/opt/mogdb"
新增于: v0.1
app_dir
类型: string
描述: 数据库部署文件、启动脚本和配置文件的存放路径
默认值: "${base_dir}/app"
新增于: v0.1
data_dir
类型: string
描述: 数据库数据存储目录
默认值: "${base_dir}/data"
新增于: v0.1
log_dir
类型: string
描述: 数据库运行日志和操作日志存储目录
默认值: "${base_dir}/log"
新增于: v0.1
tool_dir
类型: string
描述: 数据库工具目录
默认值: "${base_dir}/tool"
新增于: v0.1
tmp_dir
类型: string
描述: 数据库临时目录
默认值: 如果base_dir 不为空,值为 ${base_dir}/tmp, 否则为 /tmp
新增于: v0.1
core_file_dir
类型: string
描述: [v0.7及后面版本废弃] 该参数已废弃,不再生效,请切换超级用户后手动设置 kernel.core_pattern
新增于: v0.1
ssh_option
类型: SSHOption
描述: SSH 登录信息
不设置时为本地执行
新增于: v0.1
gs_initdb_opts
类型: []string
描述: 用户自定义配置 gs_initdb 初始化数据库时的参数。
特别地, 如果用户未配置 locale 参数, PTK 默认会设置 no-locale
支持的参数列表请查看 gs_initdb 工具文档
示例:
- gs_initdb_opts 填写示例
gs_initdb_opts:
- --locale=LOCALE
- -E=UTF-8
新增于: v0.3
extra_hba_conf
类型: []HBAConf
描述: 额外新增 HBA 条目列表
新增于: v1.5
cm_option
类型: CMOption
描述: MogDB 高可用组件 CM 配置信息,若不使用 CM 组件,则无需填写该字段
仅在数据库版本 3.0 及以上生效
新增于: v0.4
dss_option
类型: DSSOption
描述: MogDB 资源池化安装配置信息,非资源池化安装,无需填写该字段
新增于: v1.1.0
env_map
类型: map[string]string
描述: 用户可根据需要增加特定的环境变量,在 global 中设置会对所有实例生效,
实例级别可单独设置,如果存在相同的 key,实例级的会覆盖 global 中的值
新增于: v1.2.0
HBAConf
HBAConf HBA 条目配置
Appears in:
Global.extra_hba_conf
示例:
- hba config 示例
type: host # 连接类型,支持 local/host/hostssl/hostnossl
database: all # 指定这条记录所匹配的数据库名称
user: all # 指定这条记录匹配哪些数据库用户名
address: <ip3> # 必填,指定这个记录匹配的客户端机器地址。
method: sha256 # 指定当一个连接匹配这个记录时,要使用的认证方法。
type
类型: string
描述: 连接类型,支持 local/host/hostssl/hostnossl
具体含义请参考 MogDB 文档
默认值: host
新增于: v1.5.0
database
类型: string
描述: 指定这条记录所匹配的数据库名称
默认值: all
新增于: v1.5.0
user
类型: string
描述: 指定这条记录匹配哪些数据库用户名
默认值: all
新增于: v1.5.0
address
类型: string
描述: 必填,指定这个记录匹配的客户端机器地址。
如果只设置一个IPv4或IPv6地址,未配置 CIDR 掩码,则默认针对 IPv4 使用 32 的 CIDR 掩码,针对 IPv6 使用 128 的 CIDR 掩码
新增于: v1.5.0
method
类型: string
描述: 指定当一个连接匹配这个记录时,要使用的认证方法。
默认值: sha256
新增于: v1.5.0
option
类型: string
描述: 在 method 域的后面,可以是形如 name=value 的域,它们指定认证方法的选项
新增于: v1.5.0
DSSOption
Appears in:
Global.dss_option
dir
类型: string
描述: DSS 安装目录
默认值: $base_dir/dss
新增于: v1.1.0
dss_port
类型: int
描述: dssserver 进程监听端口
默认值: 26010
新增于: v1.1.0
dms_port
类型: int
描述: 数据库内部 dms 模块通信端口
默认值: 26020
新增于: v1.1.0
shm_key
类型: int
描述: 共享内存KEY,范围 [1, 64],如果单个机器上部署多个 DSS 集群时,需确保该值不同
默认值: 1
新增于: v1.1.0
log_level
类型: int
描述: DSS日志级别,范围 [0, 4087]
默认值: 519
新增于: v1.1.0
data_vg_name
类型: string
描述: 数据卷组名
默认值: data
新增于: v1.1.0
data_vg_path
类型: string
描述: 数据卷路径
新增于: v1.1.0
inst_vg_map
类型: map[string]string
描述: 每个数据库实例的私有卷路径字典,需完整配置所有实例。
配置规则:{IP: vg_path, ...}
示例:
- inst_vg_map example
inst_vg_map:
1.0.0.1: /dev/sdb
1.0.0.2: /dev/sdc
新增于: v1.1.0
enable_ssl
类型: bool
描述: 是否开启 ssl 认证
默认值: off
可选值: on/off
新增于: v1.1.0
interconnect_type
类型: string
描述: DSS 进程间通信方式
默认值: TCP
可选值: TCP/RDMA
新增于: v1.7.2
interconnect_channel_num
类型: int
描述: DSS 进程间通信通道数量
默认值: 2
取值范围: [1, 32]
新增于: v1.7.2
work_thread_count
类型: int
描述: 处理通信消息的线程数量
默认值: 2
取值范围: [2, 64]
新增于: v1.7.2
io_threads
类型: int
描述: DSS 进程中工作线程池的数目
默认值: 2
取值范围: [1, 8]
新增于: v1.7.2
work_threads
类型: int
描述: DSS 进程中每个线程池中的线程数
默认值: 16
取值范围: [16, 128]
新增于: v1.7.2
storage_mode
类型: string
描述: 存储类型
默认值: CLUSTER_RAID
取值范围: CLUSTER_RAID、RAID、DISK、DISK_LOCK
新增于: v1.7.2
max_session_nums
类型: int
描述: DSS 进程支持的最大会话连接数
默认值: 8192
取值范围: [16, 166320]
新增于: v1.7.2
CMOption
Appears in:
Global.cm_option
dir
类型: string
描述: CM 安装目录
默认值: $base_dir/cm
新增于: v0.4
cm_server_port
类型: int
描述: cm server 监听端口
默认值: 15300
新增于: v0.4
db_service_vip
类型: string
描述: 数据库提供服务的虚拟IP
新增于: v0.4
cm_server_conf
类型: map[string]string
描述: cm_server.conf 中支持的配置参数, PTK 不对参数的准确性和有效性做校验
示例:
- cm server conf
cm_server_conf:
key: value
新增于: v0.4
cm_agent_conf
类型: map[string]string
描述: cm_agent.conf 中支持的配置参数, PTK 不对参数的准确性和有效性做校验
示例:
- cm agent conf
cm_agent_conf:
key: value
新增于: v0.4
cm_voting_vg_path
类型: string
描述: CM 投票卷路径(资源池化场景使用)
新增于: v1.7.2
cm_share_vg_path
类型: string
描述: CM 共享卷路径(资源池化场景使用)
新增于: v1.7.2
CMServer
CMServer CM服务配置信息
Appears in:
Config.cm_servers
host
类型: string
描述: CM Server 服务器 IP (仅支持 IPv4)
新增于: v0.5
ha_ips
类型: []string
描述: 数据库冗余IP,和当前 host 对应的 db_server 中的 ha_ips 保持一致
新增于: v1.1.0
port
类型: int
描述: CM Server 监听端口
默认使用 global.cm_option.cm_server_port
新增于: v0.5
ssh_option
类型: SSHOption
描述: SSH 登录信息,登录用户需为 root 或者具有 sudo 权限的用户
不设置时为本地执行
新增于: v0.5
serverFlag
DBServer
DBServer 集群内的数据库实例服务器配置信息
Appears in:
Config.db_servers
dn_name
类型: string
描述: 一个集群中唯一标识数据实例的名称,该值将会写入配置 application_name
默认值:dn_
新增于: v1.0
host
类型: string
描述: 数据库实例服务器 IP (仅支持 IPv4)
新增于: v0.1
user
类型: string
描述: 运行数据库的操作系统用户名
如果想一套主备在同一个服务器上部署,该字段需设置为不同的用户
默认和 global.user 配置一致
新增于: v0.5
group
类型: string
描述: 运行数据库的操作系统用户组
默认和 global.group 配置一致
新增于: v0.5
user_password
类型: string
描述: 运行数据库的操作系统用户密码
该字段不支持明文填写,需使用 ptk encrypt 加密
默认和 global.user_password 配置一致
新增于: v0.5
db_port
类型: int
描述: 数据库端口
默认为空,复用全局的端口配置 26000
新增于: v0.1
ha_ips
类型: []string
描述: 数据库冗余IP,目前最多配置一个冗余IP,如果配置了该字段,所有实例都需要配置
新增于: v0.1
ha_port
类型: int
描述: 数据库主备实例日志复制端口,值固定只能为数据库端口加1,该字段无需配置
新增于: v0.1
role
类型: string
描述: 数据库实例角色,若不填,PTK 会随机选择一个实例作为主库,其余自动为备库
可选值:
- primary
- standby
- cascade_standby
新增于: v0.1
upstream_host
类型: string
描述: 当实例角色为 cascade_standby 时,该字段表示要跟随的上游备库 IP
新增于: v0.1
az_name
类型: string
描述: Available Zone (可用区) 名称
默认值:"AZ1"
新增于: v0.1
az_priority
类型: int
描述: 可用区使用的优先级,数值越小优先级越高, 最小为 1
默认值:1
新增于: v0.1
xlog_dir
类型: string
描述: 数据库 Xlog 日志目录设置
默认为空,若需配置,值不能为数据目录的子目录
新增于: v0.1
db_conf
类型: map[string]string
描述: 用户根据个性化需要配置数据库参数和值,该字段配置的内容将会在数据库启动前写入到 postgresql.conf 文件中
示例:
- db config example
db_conf:
key: value
新增于: v0.1
env_map
类型: map[string]string
描述: 用户可根据需要针对该实例增加特定的环境变量
新增于: v1.2.0
ssh_option
类型: SSHOption
描述: SSH 登录信息,登录用户需为 root 或者具有 sudo 权限的用户
不设置时为本地执行
新增于: v0.1
SSHOption
SSHOption SSH 登录认证信息,支持密码和密钥两种方式,二者需至少设置一种
Appears in:
示例:
host: <ip>
port: 22
user: root
key_file: ~/.ssh/id_rsa
host
类型: string
描述: 要连接的目标服务器 IP
当该机器为跳板机时必填;
当为数据库所在机器时可以留空,会继承 db_server 的 IP
默认为空
新增于: v0.1
port
类型: int
描述: SSH 服务端口
默认值:22
新增于: v0.1
user
类型: string
描述: SSH 登录用户
默认值:root
新增于: v0.1
password
类型: string
描述: SSH 登录用户密码
该字段不支持明文填写,需使用 ptk encrypt 加密后填写
示例:
- ssh 密码示例
password: pTk6MTIxOGMxOTk8QT1CPT4+PXlnYW1DdHpXb2hCX3c3UW0wWXVkNlZwMGRCakpxRXd1WWdwQ0xDUWVrb0U=
新增于: v0.1
key_file
类型: string
描述: SSH 登录密钥文件路径
默认为空
示例:
- ssh密钥示例
key_file: ~/.ssh/id_rsa
新增于: v0.1
passphrase
类型: string
描述: SSH 登录密钥文件口令
该字段不支持明文填写,需使用 ptk encrypt 加密后填写
默认为空
新增于: v0.1
conn_timeout
类型: Duration
描述: SSH 登录连接超时时间,支持单位 m(分),s(秒)
默认值: "1m"
新增于: v0.1
exec_timeout
类型: Duration
描述: SSH 执行单条命令时的超时时间,支持单位 m(分),s(秒)
默认值: "10m"
新增于: v0.1
proxy
类型: SSHOption
描述: 跳板服务器登录信息,如果目标服务器无法直连时,支持通过中间跳板机方式连接
新增于: v0.1