postgres数据库参数配置说明介绍

访问

1. listen_addresses 监听访问地址

2. port 监听端口

3. max_connections 最大连接数

4. 

 

性能

 1. shared_buffers PostgreSql并非直接在磁盘上进行数据修改,而是将数据据读入shared buffer cache ,进而PostgreSql 后台进程修改cache中的数据块,最终在写回磁盘。后台进程如果在cached buffer 中找到相关数,则直接进行操作。 刚开始设置一个较小的值,内存的15%,然后逐渐增加,过程中监控性能提升和swap情况。

2. effective_cache_size 索引,越大越有机会选择索引扫描,越小越倾向选择顺序扫描,此参数只会影响执行计划的选择。

3. work_mem 排序内存

4. temp_buffers 临时表

5. client_encoding 客户端字符集,默认和数据库encoding相同

6. client_min_message 发送客户端的信息级别,主要用于错误调试。

7. 

转载于:https://www.cnblogs.com/zhangeamon/p/6513528.html

<think>好的,我现在需要帮用户解答关于PostgreSQL数据库主从同步的配置问题,包括同步和异步的设置。首先,我得回忆一下PostgreSQL的主从复制机制,主要是基于流复制(streaming replication)的。用户可能想了解如何配置主库和备库,以及如何调整同步和异步模式。 首先,用户可能是数据库管理员或者开发人员,需要搭建高可用性的数据库环境。他们的需求可能是确保数据的一致性和可用性,同时了解同步和异步复制的优缺点。同步复制能保证数据强一致性,但可能影响性能;异步复制则性能更好,但有数据丢失的风险。 接下来,我需要整理配置步骤。主库的配置通常涉及修改postgresql.conf和pg_hba.conf文件,设置监听、归档模式、复制参数,并创建复制用户。备库则需要使用pg_basebackup工具初始化,并配置recovery.conf(在较新版本中是standby.signal)。然后,区分同步和异步的配置方法,主库中指定synchronous_standby_names为具体的应用名或'*',而异步则留空或注释掉。 还要注意用户可能遇到的常见问题,比如如何验证复制状态,使用pg_stat_replication视图。另外,用户可能关心同步模式下如果备库宕机,主库是否会阻塞,这时需要设置synchronous_commit参数为on或remote_apply,以及如何添加多个备库来避免单点故障。 需要提醒用户注意事项,比如防火墙设置、日志监控、定期测试故障转移等。可能用户没有提到的深层需求是系统的稳定性和灾难恢复策略,所以应该涵盖这些方面。 最后,确保回答结构清晰,步骤明确,并附上相关命令和配置示例,让用户能一步步操作。同时,强调备份和权限的重要性,避免配置错误导致的数据问题。</think>以下是PostgreSQL数据库主从同步(主-备复制)的配置步骤,包含同步(Synchronous)和异步(Asynchronous)模式的说明: --- ### **1. 主库(Primary)配置** #### **1.1 修改配置文件 `postgresql.conf`** ```conf # 启用归档模式(必须) wal_level = replica archive_mode = on archive_command = 'test ! -f /path/to/archive/%f && cp %p /path/to/archive/%f' # 设置主库允许流复制 max_wal_senders = 5 # 允许的最大WAL发送进程数 wal_keep_size = 1GB # 保留的WAL日志大小 # 同步模式设置(可选,异步则跳过) synchronous_standby_names = 'standby1' # 指定同步备库名称(若为异步则注释此行) ``` #### **1.2 修改客户端认证文件 `pg_hba.conf`** 允许备库以复制角色连接主库: ```conf # 格式:TYPE DATABASE USER ADDRESS METHOD host replication replica_user <备库IP>/32 scram-sha-256 ``` #### **1.3 创建复制专用用户** ```sql CREATE ROLE replica_user WITH LOGIN REPLICATION PASSWORD 'your_password'; ``` #### **1.4 重启主库服务** ```bash sudo systemctl restart postgresql ``` --- ### **2. 备库(Standby)配置** #### **2.1 初始化备库数据** 使用 `pg_basebackup` 从主库拉取基础备份: ```bash pg_basebackup -h <主库IP> -U replica_user -D /var/lib/postgresql/XX/main -P -v -R --wal-method=stream ``` #### **2.2 配置 `postgresql.conf`** ```conf # 明确声明为备库 hot_standby = on ``` #### **2.3 创建恢复配置文件** (PostgreSQL 12+ 使用 `standby.signal`,旧版本使用 `recovery.conf`) 新建 `standby.signal` 文件(空文件即可),并修改 `postgresql.conf` 添加: ```conf # 连接主库信息 primary_conninfo = 'host=<主库IP> port=5432 user=replica_user password=your_password' ``` #### **2.4 启动备库** ```bash sudo systemctl start postgresql ``` --- ### **3. 同步 vs 异步配置** #### **3.1 同步复制(Synchronous)** - **主库配置**:在 `postgresql.conf` 中指定同步备库名称: ```conf synchronous_standby_names = 'standby1' # 与备库的 `application_name` 匹配 ``` - **备库配置**:在 `primary_conninfo` 中添加 `application_name`: ```conf primary_conninfo = '... application_name=standby1 ...' ``` - **特性**:主库事务提交需等待备库确认,数据强一致,但可能降低性能。 #### **3.2 异步复制(Asynchronous)** - **主库配置**:注释或删除 `synchronous_standby_names`: ```conf #synchronous_standby_names = '' ``` - **特性**:主库事务提交无需等待备库,性能更高,但有数据延迟风险。 --- ### **4. 验证复制状态** #### **4.1 在主库执行查询** ```sql SELECT * FROM pg_stat_replication; ``` - 检查 `state` 字段为 `streaming`,`sync_state` 为 `sync`(同步)或 `async`(异步)。 #### **4.2 在备库执行查询** ```sql SELECT pg_is_in_recovery(); ``` - 返回 `t` 表示处于备库状态。 --- ### **注意事项** 1. **同步模式风险**:若同步备库宕机,主库写入可能阻塞(可通过设置 `synchronous_commit = remote_apply` 调整超时)。 2. **多备库配置**:支持一主多备,例如: ```conf synchronous_standby_names = 'standby1, standby2' # 多个同步备库 ``` 3. **网络与存储**:同步复制需低延迟网络,建议使用SSD存储。 4. **监控**:定期检查日志(`/var/log/postgresql/postgresql-XX-main.log`)和复制延迟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值