原生Patroni是通过pg_ctl、postgres等命令控制Postgresql,但是在Opengauss中,这些命令的程序为gs_ctl、gaussdb,参数发生了一些改变,之前Patroni调用Postgresql命令的代码,不做修改用在Openguass上会出错,必须做适配。
1、Postgresql的pg_ctl,在Opengauss中对应的命令是gs_ctl,要把Patroni中对pg_ctl的调用改为对gs_ctl的调用,它们的大多数命令使用相似但有一些不同:
patroni/postgresql/__init__.py:
def pg_ctl():
def _do_stop():
def terminate_postmaster():
def terminate_starting_postmaster():
def reload(): PG的pg_ctl reload对应OG的gs_ctl reload,还要加上用户名密码
def promote(): PG的pg_ctl promote对应OG的gs_ctl failover,还要加上用户名密码
def start(): Patroni直接调用postgres可执行程序启动postmaster,在OG中对应的是gaussdb,还要在调用gaussdb命令时加上选项-M primary或-M standby表示以主机或备机启动。
patroni/postgresql/bootstrap.py:
def _initdb():