响应试企业网站,seo 网站结构优化,组装电脑报价网站源码,如何在720云网站做全景视频下载1 配置文件
1.1 配置文件格式
repmgr.conf是一个纯文本文件#xff0c;每行包含一个参数/值组合。
空格是无关紧要的#xff08;除了在带引号的参数值内#xff09;#xff0c;并且空行将被忽略。#将该行的其余部分指定为注释。不是简单标识符或数字的参数值应该用单引号…1 配置文件
1.1 配置文件格式
repmgr.conf是一个纯文本文件每行包含一个参数/值组合。
空格是无关紧要的除了在带引号的参数值内并且空行将被忽略。#将该行的其余部分指定为注释。不是简单标识符或数字的参数值应该用单引号引起来。
要在参数值中嵌入单引号请写入两个引号首选或反斜杠引号。
有效文件示例repmgr.conf
# repmgr.confnode_id1
node_name node1
conninfo hostnode1 dbnamerepmgr userrepmgr connect_timeout2
data_directory /var/lib/pgsql/12/data1.2 配置文件的包含指令 从repmgr 5.2 开始配置文件可以包含以下 include 指令 include包含指定的文件可以是绝对路径也可以是相对于当前文件的路径include_if_exists: 包含指定的文件。该文件被指定为绝对路径或相对于当前文件的路径。但是如果不存在则不会引发错误。include_dir包含指定目录中后缀为.conf. 目录指定为绝对路径或相对于当前文件的路径 它们的行为方式与 PostgreSQL 配置文件处理完全相同有关更多详细信息请参阅PostgreSQL 文档 。 1.3 配置文件位置 将在以下位置搜索配置文件 -f/--config-file由命令行选项指定的配置文件 由软件包维护者指定的位置如果 从软件包安装 repmgr并且软件包维护者已指定配置文件位置 repmgr.conf在本地目录中 /etc/repmgr.conf pg_config --sysconfdir报告的目录 请注意如果使用 显式指定文件-f/--config-file则如果未找到该文件或该文件不可读则会引发错误并且不会尝试检查默认位置这是为了防止repmgr意外读取错误的配置文件 1.4 配置文件项 以下部分记录了配置文件的一些部分 1.4 .1 必须的配置文件 每个repmgr.conf文件必须包含以下参数 node_id( int) 标识节点的大于零的唯一整数。 node_name( string) 任意但唯一字符串我们建议使用服务器的主机名或与服务器明确关联的其他标识符以避免混淆。避免选择反映节点当前角色的名称例如primary或者standby1 因为角色可以更改并且如果您最终得到调用当前主节点的解决方案standby1例如至少可以说事情会很混乱。 该字符串的最大长度为 63 个字符并且应仅包含可打印的 ASCII 字符。 conninfo( string) 作为 conninfo 字符串的数据库连接信息。集群中的所有服务器都必须能够使用此字符串连接到本地节点。 有关 conninfo 字符串的详细信息请参阅 PosgreSQL 文档中的 连接字符串部分。 如果正在使用repmgrd请考虑 connect_timeout在conninfo 字符串中显式设置以确定放弃网络连接尝试之前经过的时间长度有关详细信息请参阅 PostgreSQL 文档。 data_directory( string) 节点的数据目录。当 PostgreSQL 实例未运行且没有其他方法确定数据目录时repmgr 需要执行此操作。 1.4 .2 可选的配置文件 config_directory( string) postgresql.conf如果 PostgreSQL 配置文件位于数据目录之外请指定主文件所在 目录 。 这允许显式提供外部配置文件目录如果设置该目录则该目录将pg_ctl作为 -D参数传递。否则pg_ctl将默认使用数据目录如果配置文件不存在这将导致某些操作失败。 replication_user( string) 与之建立复制连接的 PostgreSQL 用户。如果为设置默认值则为conninfo中定义的用户 replication_type( string) 必须是physical默认。 location( string) 定义节点位置的任意字符串这在故障转移期间用于检查当前主节点的可见性。 use_replication_slots( boolean) 是否使用物理复制槽。 ssh_options( string) 由repmgrssh执行时 附加到命令的选项。 我们建议添加-q以抑制任何多余的 SSH 聊天例如登录横幅以及显式 ConnectTimeout值例如 ssh_options-q -o ConnectTimeout10 pg_bindir( string) PostgreSQL 二进制目录的路径pg_ctl、 pg_basebackup等的位置。仅当系统中没有这些时才需要PATH。 1.5 日志设置 默认情况下repmgr和repmgrd将日志输出写入 STDERR. 可以指定替代日志目标文件或syslog。 log_level( string) 日志输出的级别默认为INFO. 可选值 DEBUG, INFO, NOTICE, WARNING, ERROR, ALERT, CRIT , EMERG. 请注意这DEBUG将产生大量日志输出在正常使用中不应启用。 log_facility( string) 日志记录工具 可选的值有 STDERR默认或对于syslog的话可选的值有 LOCAL0, LOCAL1, ..., LOCAL7, USER. log_file( string) 如果log_facility设置为STDERR则可以将日志输出重定向到指定文件。 有关配置日志轮换的信息 请参阅第 13.4 节。 log_status_interval( integer) 此设置导致repmgrd以指定的时间间隔以秒为单位默认300发出状态日志行描述repmgrd的当前状态例如 [2018-07-12 00:47:32] [INFO] monitoring connection to upstream node node1 (ID: 1)log_levelinfo
log_facilitySTDERR
log_file/home/storage/repmgr/repmgr.log
log_status_interval600
1.6 服务器命令参数
在某些情况下repmgr和repmgrd需要能够停止、启动或重新启动 PostgreSQL。repmgr的命令repmgr standby follow, repmgr standby switchover and repmgr node rejoin.需要用到上面的命令
默认情况下repmgr将使用 PostgreSQL 的pg_ctl程序来控制 PostgreSQL 服务器。然而这可能会导致各种问题特别是当从软件包安装 PostgreSQL 时尤其是在使用 systemd时。 特别注意 如果使用 systemd请确保您已 RemoveIPC设置为 off。有关详细信息 请参阅 PostgreSQL 文档部分 systemd RemoveIPC 以及 PostgreSQL wiki 中的 systemd条目。 相关参数
service_start_commandpg_ctl -D /home/storage/pgsql/data -l /home/storage/pgsql/data/server.log start
service_stop_commandpg_ctl -D /home/storage/pgsql/data -l /home/storage/pgsql/data/server.log stop
service_restart_commandpg_ctl -D /home/storage/pgsql/data -l /home/storage/pgsql/data/server.log restart
service_reload_commandpg_ctl -D /home/storage/pgsql/data -l /home/storage/pgsql/data/server.log reload 可以用以下命令查看真实的PG的命令
repmgr -f /etc/repmgr.conf node service --list-actions --actionstop
repmgr -f /etc/repmgr.conf node service --list-actions --actionstart
repmgr -f /etc/repmgr.conf node service --list-actions --actionrestart
repmgr -f /etc/repmgr.conf node service --list-actions --actionreload
1.7 用户权限
如果用户是superuser权限则无需再授予其他权限
如果使用费superuser 则需要以下权限
1.7.1 Replication role
repmgr需要一个具有REPLICATION角色的用户来 创建复制连接以及管理复制slots
1.7.2. Database roles
非superuser的用户还需要是以下预定义觉角色的成员
pg_read_all_stats (查询pg_stat_replication以及执行 execute pg_database_size() 在所有的数据库上)pg_read_all_settings (to access the data_directory setting)
1.7.3. Extension creation
1.7.4. Function permissions
1.7.5. repmgr actions requiring a superuser
1.7.6. repmgr commands with --superuser option 1.8 密码管理
PostgreSQL 提供三种提供密码的方式 在字符串conninfo中包含密码例如“ hostnode1 dbnamerepmgr userrepmgr passwordfoo”将密码导出为环境变量 ( PGPASSWORD)将密码存储在专用密码文件中 我们强烈建议不要在字符串conninfo中包含密码因为这将导致数据库密码在各个地方暴露包括文件 repmgr.conf、repmgr.nodes表、由repmgr生成的列出节点conninfo字符串的任何输出例如 repmgr cluster show和在repmgr日志文件中特别是在log_levelDEBUG.
将密码导出为环境变量 ( PGPASSWORD) 被认为不太不安全但 PostgreSQL 文档明确建议不要这样做
管理密码最安全的选择是使用专用密码文件
存储密码的最安全方法是存储在密码文件中默认情况下为~/.pgpass. 该文件只能由拥有该文件的系统用户读取并且 PostgreSQL 将拒绝使用该文件除非将读/写权限限制为文件所有者。文件中包含的密码将不会被 repmgr或任何其他基于 libpq 的客户端软件例如psql直接访问。
有关完整详细信息请参阅 PostgreSQL 密码文件文档。
为了与repmgr 一起使用~/.pgpass复制集群中的每个节点必须有两个条目一个用于访问repmgr元数据库的repmgr用户另一个用于复制连接无论是否使用专用复制用户。该文件必须存在于复制集群中的每个节点上。
被repmgr管理的3节点的PG集群 文件示例
node1:5432:repmgr:repmgr:foo
node1:5432:replication:repmgr:foo
node2:5432:repmgr:repmgr:foo
node2:5432:replication:repmgr:foo
node3:5432:repmgr:repmgr:foo
node3:5432:replication:repmgr:foo
1.6 完整的配置文件
https://raw.githubusercontent.com/EnterpriseDB/repmgr/master/repmgr.conf.sample