community.postgresql.postgresql_slot 模块 – 从 PostgreSQL 数据库添加或删除复制槽
注意
此模块是 community.postgresql 集合(版本 3.9.0)的一部分。
如果您正在使用 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.postgresql
。您需要其他要求才能使用此模块,请参阅 要求了解详细信息。
要在 playbook 中使用它,请指定: community.postgresql.postgresql_slot
。
概要
从 PostgreSQL 数据库添加或删除物理或逻辑复制槽。
要求
在执行此模块的主机上需要以下要求。
psycopg2 >= 2.5.1
参数
参数 |
注释 |
---|---|
指定包含 SSL 证书颁发机构 (CA) 证书的文件名。 如果文件存在,将验证服务器的证书是否由这些机构之一签名。 |
|
要传递给 libpg 的任何其他参数。 这些参数具有优先权。 默认值: |
|
要连接的数据库的名称。 |
|
可选参数,当 可从 PostgreSQL 版本 9.6 获得。 仅与 *slot_type=physical* 一起使用。 与 *slot_type=logical* 互斥。 选项
|
|
运行数据库的主机。 如果在使用 默认值: |
|
此模块应使用的密码,以建立其 PostgreSQL 会话。 默认值: |
|
本地连接的 Unix 域套接字的路径。 默认值: |
|
此模块应使用的用户名,以建立其 PostgreSQL 会话。 默认值: |
|
要添加或删除的复制槽的名称。 |
|
所有逻辑槽都必须指示它们正在使用的输出插件解码器。 此参数不适用于物理槽。 它将在 *slot_type=physical* 时被忽略。 默认值: |
|
要连接的数据库端口。 默认值: |
|
连接后切换到 session_role。指定的 session_role 必须是当前 login_user 所属的角色。 对 SQL 命令的权限检查的执行方式,就好像 session_role 是最初登录的用户一样。 |
|
槽类型。 选项
|
|
指定客户端 SSL 证书的文件名。 |
|
指定客户端证书的私钥的位置。 |
|
确定是否以及以何种优先级与服务器协商建立安全的 SSL TCP/IP 连接。 有关模式的更多信息,请参阅 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html。 默认值 选项
|
|
槽的状态。 state=present 表示槽必须存在于系统中。 state=absent 表示必须从 target_roles 中撤销 groups。 选项
|
|
如果 仅当通过 session_role 可能发生 SQL 注入时,使用 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全 |
可以在 check_mode 中运行并返回更改状态预测,而无需修改目标。 |
注意事项
注意
物理复制槽在 PostgreSQL 9.4 版本中引入,而逻辑复制槽从 10.0 版本开始添加。
默认身份验证假设您正在以主机上的
postgres
帐户登录或使用 sudo。为避免“Peer authentication failed for user postgres”错误,请使用 postgres 用户作为 become_user。
此模块使用
psycopg
,一个 Python PostgreSQL 数据库适配器。在使用此模块之前,必须确保主机上安装了psycopg2 >= 2.5.1
或psycopg3 >= 3.1.8
。如果远程主机是 PostgreSQL 服务器(默认情况),则还必须在远程主机上安装 PostgreSQL。
对于基于 Ubuntu 的系统,在使用此模块之前,请在远程主机上安装
postgresql
、libpq-dev
和python3-psycopg2
包。
另请参阅
另请参阅
- PostgreSQL pg_replication_slots 视图参考
PostgreSQL pg_replication_slots 视图的完整参考。
- PostgreSQL 流复制协议参考
PostgreSQL 流复制协议文档的完整参考。
- PostgreSQL 逻辑复制协议参考
PostgreSQL 逻辑复制协议文档的完整参考。
示例
- name: Create physical_one physical slot if doesn't exist
become_user: postgres
community.postgresql.postgresql_slot:
slot_name: physical_one
db: ansible
- name: Remove physical_one slot if exists
become_user: postgres
community.postgresql.postgresql_slot:
slot_name: physical_one
db: ansible
state: absent
- name: Create logical_one logical slot to the database acme if doesn't exist
community.postgresql.postgresql_slot:
name: logical_slot_one
slot_type: logical
state: present
output_plugin: custom_decoder_one
db: "acme"
- name: Remove logical_one slot if exists from the cluster running on another host and non-standard port
community.postgresql.postgresql_slot:
name: logical_one
login_host: mydatabase.example.org
port: 5433
login_user: ourSuperuser
login_password: thePassword
state: absent
返回值
通用返回值记录在 此处,以下是此模块独有的字段
键 |
描述 |
---|---|
槽的名称。 返回: 成功 示例: |
|
已执行的查询列表。 返回: 成功 示例: |