热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

postgresqlstreamingreplication

postgresqlstreamingreplicationpostgresql从9.0开始有流复制,这里记录一下流复制的安装记录。环境:redhat5.564位PG版本:9.1.2master:192.168.1.168slave:192.168.1.1691.配置主机系统相关参数1.1修改etcsysctl.confkernel.shmmni4096

postgresql streaming replication postgresql从9.0开始有流复制,这里记录一下流复制的安装记录。 环境: redhat 5.5 64位 PG版本:9.1.2 master:192.168.1.168 slave:192.168.1.169 1.配置主机系统相关参数 1.1修改/etc/sysctl.conf kernel.shmmni = 4096

postgresql streaming replication

postgresql从9.0开始有流复制,这里记录一下流复制的安装记录。

环境:

redhat 5.5 64位

PG版本:9.1.2

master:192.168.1.168

slave:192.168.1.169

1.配置主机系统相关参数

1.1修改/etc/sysctl.conf

kernel.shmmni = 4096

kernel.sem = 50100 64128000 50100 1280

fs.file-max = 7672460

net.ipv4.ip_local_port_range = 9000 65000

net.core.rmem_default = 1048576

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_max_syn_backlog = 4096

net.core.netdev_max_backlog = 10000

vm.overcommit_memory = 0

net.ipv4.ip_conntrack_max = 655360

fs.aio-max-nr = 1048576

net.ipv4.tcp_timestamps = 0

1.2修改 /etc/security/limits.conf

* soft nofile 131072

* hard nofile 131072

* soft nproc 131072

* hard nproc 131072

* soft core unlimited

* hard core unlimited

* soft memlock 50000000

* hard memlock 50000000

1.3配置系统环境变量

export PS1="$USER@`/bin/hostname -s`-> "

export PGPORT=1921

export PGDATA=/opt/pgdata/pg_root

export LANG=en_US.utf8

export PGHOME=/opt/pgsql9.1.2

export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib

export DATE=`date +"%Y%m%d%H%M"`

export PATH=$PGHOME/bin:$PATH:.

export MANPATH=$PGHOME/share/man:$MANPATH

alias rm='rm -i'

alias ll='ls -lh'

1.4配置其他

防火墙,服务相关等等,这里根据需要就不再一一列举

2.安装PG(略)

3.在master建立流复制用户

create role repluser SUPERUSER LOGIN CONNECTION LIMIT 20 ENCRYPTED PASSWORD 'repluser';--注意这里满足login,replication权限即可,不是必须superuser。

4.master配置pg_hba,conf,添加以下:

host replication repluser 192.168.1.169/32 md5

5.master配置postgresql.conf

listen_addresses = '*' # what IP address(es) to listen on;

port = 1921 # (change requires restart)

max_cOnnections= 2000 # (change requires restart)

unix_socket_directory = '/opt/pgdata/pg_root' # (change requires restart)

unix_socket_permissiOns= 0700 # begin with 0 to use octal notation

password_encryption = on

shared_buffers = 2048MB # min 128kB

maintenance_work_mem = 2048MB # min 1MB

max_stack_depth = 8MB # min 100kB

wal_level = hot_standby # minimal, archive, or hot_standby

synchronous_commit = off # immediate fsync at commit

wal_sync_method = fdatasync # the default is the first option

wal_buffers = 128000kB # min 32kB

wal_writer_delay = 20ms # 1-10000 milliseconds

checkpoint_segments = 64 # in logfile segments, min 1, 16MB each

checkpoint_timeout = 30min # range 30s-1h

archive_mode = on # allows archiving to be done

archive_command = '/bin/date' # command to use to archive a logfile segment

max_wal_senders = 30 # max number of walsender processes

wal_keep_segments = 1000 # in logfile segments, 16MB each; 0 disables;因为本例使用的logfile segment单个=64M,所以这里需要至少64*1000=64GB的pg_xlog目录

空间,否则可能空间溢出.

random_page_cost = 2.0 # same scale as above

effective_cache_size = 12800MB

constraint_exclusion = partition # on, off, or partition

log_destination = 'csvlog' # Valid values are combinations of

logging_collector = on # Enable capturing of stderr and csvlog

log_cOnnections= on # 调试阶段建议主库和standby都打开log_connections,调试完后建议关闭.

log_directory = '/opt/pgdata/pg_log' # directory where log files are written,

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,

log_truncate_on_rotation = on # If on, an existing log file of the

log_rotation_age = 1d # Automatic rotation of logfiles will

log_rotation_size = 10MB # Automatic rotation of logfiles will

log_min_duration_statement = 1000ms # -1 is disabled, 0 logs all statements

log_checkpoints = on

log_lock_waits = on # log lock waits >= deadlock_timeout

log_statement = 'ddl' # none, ddl, mod, all

track_activity_query_size = 2048 # (change requires restart)

autovacuum = on # Enable autovacuum subprocess? 'on'

log_autovacuum_min_duration = 0 # -1 disables, 0 logs all actions and

check_function_bodies = on

bytea_output = 'escape' # hex, escape

datestyle = 'iso, mdy'

lc_messages = 'C' # locale for system error message

lc_mOnetary= 'C' # locale for monetary formatting

lc_numeric = 'C' # locale for number formatting

lc_time = 'C' # locale for time formatting

default_text_search_cOnfig= 'pg_catalog.english'

deadlock_timeout = 1s

tcp_keepalives_idle = 60

6.启动master并对其进行全备一次

select pg_start_backup('replication backup');

将$PGDATA压缩传送的slave

select pg_stop_backup();

7.slave配置

相应的也是配置pg_hba.conf,postgressql.conf

host replication repluser 191.168.169.85/32 md5

slave配置hot_standby = on其他基本不需要修改,可以和master一致

除了配置以上的,slave还需要配置recovery.conf

#archive_cleanup_command = 'pg_archivecleanup $PGARCHIVE %r'

standby_mode = 'on'

trigger_file = '/opt/pgdata/pg_root/postgresql.trigger.1921'

primary_cOnninfo= 'host=192.168.1.168 port=1921 user=repluser password=repluser keepalives_idle=60'

修改

more ~/.pgpass

192.168.1.168:1921:replication:repluser:repluser:repluser

启动slave观察cvs日志

查看wal进程:

master:

wal sender process repluser 192.168.1.169(16494) streaming 0/70273E8

slave

postgres: wal receiver process streaming 0/70273E8

8.测试

建立数据库,用户,测试数据,注意表空间的一定要建好相关目录,而且要一主从节点一致,否则slave会直接关掉。


推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 在网页开发中,页面加载速度是一个关键的用户体验因素。为了提升加载效率,避免在PageLoad事件中进行大量数据绑定操作,可以采用异步加载和特定控件来优化页面加载过程。 ... [详细]
  • 本文介绍了一种根据用户选择动态切换屏幕界面的方法,通过定义不同的选择块(Selection Block),实现灵活的用户交互体验。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
author-avatar
手机用户2502858127
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有