Postgre+pgpool实现HA.docx

上传人:b****1 文档编号:10888882 上传时间:2023-05-28 格式:DOCX 页数:33 大小:354.89KB
下载 相关 举报
Postgre+pgpool实现HA.docx_第1页
第1页 / 共33页
Postgre+pgpool实现HA.docx_第2页
第2页 / 共33页
Postgre+pgpool实现HA.docx_第3页
第3页 / 共33页
Postgre+pgpool实现HA.docx_第4页
第4页 / 共33页
Postgre+pgpool实现HA.docx_第5页
第5页 / 共33页
Postgre+pgpool实现HA.docx_第6页
第6页 / 共33页
Postgre+pgpool实现HA.docx_第7页
第7页 / 共33页
Postgre+pgpool实现HA.docx_第8页
第8页 / 共33页
Postgre+pgpool实现HA.docx_第9页
第9页 / 共33页
Postgre+pgpool实现HA.docx_第10页
第10页 / 共33页
Postgre+pgpool实现HA.docx_第11页
第11页 / 共33页
Postgre+pgpool实现HA.docx_第12页
第12页 / 共33页
Postgre+pgpool实现HA.docx_第13页
第13页 / 共33页
Postgre+pgpool实现HA.docx_第14页
第14页 / 共33页
Postgre+pgpool实现HA.docx_第15页
第15页 / 共33页
Postgre+pgpool实现HA.docx_第16页
第16页 / 共33页
Postgre+pgpool实现HA.docx_第17页
第17页 / 共33页
Postgre+pgpool实现HA.docx_第18页
第18页 / 共33页
Postgre+pgpool实现HA.docx_第19页
第19页 / 共33页
Postgre+pgpool实现HA.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Postgre+pgpool实现HA.docx

《Postgre+pgpool实现HA.docx》由会员分享,可在线阅读,更多相关《Postgre+pgpool实现HA.docx(33页珍藏版)》请在冰点文库上搜索。

Postgre+pgpool实现HA.docx

Postgre+pgpool实现HA

PostgreSQLHA方案

1.架构图

1.1.方案架构图

1.2.postgres故障切换图

1.3.pgpool故障切换图

1.4.pgpool+postgres故障切换图

2.安装资源信息

操作系统的安装就不在这里介绍,主机名和IP地址如下所示

操作系统:

RHEL6.5

数据库:

PostgreSQL9.4.4

虚拟机两台:

主节点node1(IP192.168.1.231)

备节点node2(IP192.168.1.232)

pgpool:

pgpool-II-3.4.3

VIP:

192.168.1.233

3.资源调整(master/standby)

3.1.前期准备

创建安装文件夹

#mkdir/opt/soft//用于放置源码安装文件

#mkdir/opt/pgdata//postgres数据库目录

#mkdir/opt/pgsql//postgres安装目录

#mkdir/opt/pgpool//pgpool安装目录

修改文件夹权限

#chownpostgres:

postgres/opt/soft

#chownpostgres:

postgres/opt/pgsql

#chownpostgres:

postgres/opt/pgdata

#chownpostgres:

postgres/opt/pgpool

复制以下安装文件到/opt/soft,并且配置权限

pgpool-II-3.4.3.tar.gz

postgresql-9.4.4.tar.gz

配置安装文件所属人和所属组为postgres

3.2.关闭防火墙

#chkconfigiptablesoff

#serviceiptablesstop

3.3.关闭SElinux

修改SELinux配置文件

#vim/etc/sysconfig/selinux

把SELINUX=enforcing修改为SELINUX=disabled

3.4.配置hosts文件

在hosts文件中增加以下内容

#vim/etc/hosts

192.168.1.231pgpool-node01

192.168.1.232pgpool-node02

3.5.创建postgres用户并设置密码

安装之前要先检查系统中是否有postgres系统账号

#cat/etc/passwd|greppostgres

如果没有postgres账号,需要新增postgres账号

#groupadd-g26postgres

#useradd-d/var/lib/pgsql–gpostgres–u26postgres

给postgres配置密码

#passwdpostgres

3.6.主备节点时钟同步

#/usr/sbin/ntpdateasia.pool.ntp.org&&/sbin/hwclock–systohc

3.7.配置sysctl

#vi/etc/sysctl.conf

kernel.shmmni=4096

kernel.sem=5010064128000501001280

fs.file-max=7672460

net.ipv4.ip_local_port_range=900065000

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

dev_max_backlog=10000

vm.overcommit_memory=0

net.ipv4.ip_conntrack_max=655360

fs.aio-max-nr=1048576

net.ipv4.tcp_timestamps=0

●使文件修改生效

#sysctl–p

3.8.limit资源分配

#vi/etc/security/limits.conf

*softnofile131072

*hardnofile131072

*softnproc131072

*hardnproc131072

*softcoreunlimited

*hardcoreunlimited

*softmemlock50000000

*hardmemlock50000000

4.postgreSQL流复制环境安装配置

4.1.配置SSH免登陆

Onmaster:

#su–postgres

$ssh-keygen-trsa-P''

$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@192.168.1.232

$sshpostgres@node2

Onstandby:

#su–postgres

$ssh-keygen-trsa-P''

$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@192.168.1.231

$sshpostgres@node1

4.2.安装依赖包

使用yum自动安装以下软件

#yum-yinstallreadline-develzlibzlib-developensslopenssl-develpam-devellibxml2-devellibxslt-develpython-develtcl-develgcc

或者是手动安装以下软件

gcc

libxml2-devel

libxslt-devel

openssl-devel

pam-devel

python-devel

readline-devel

tcl-devel

zlib-devel

cloog-ppl

cpp

keyutils-libs-devel

krb5-devel

libcom_err-devel

libgcrypt-devel

libgpg-error-devel

libselinux-devel

libsepol-devel

mpfr

ncurses-devel

ppl

tcl

4.3.解压和安装

$cd/opt/soft/

$tar-zxvfpostgresql-9.3.5.tar.gz

$cdpostgresql-9.3.5

$./configure--prefix=/opt/pgsql--with-pgport=5432--with-perl--with-tcl

--with-python--with-openssl--with-pam--without-ldap--with-libxml

--with-libxslt--with-blocksize=8

$gmake

$gmakeinstall

4.4.设置环境变量

●编辑环境变量配置文件,增加以下内容

$vim~/.bash_profile

exportPGPORT=5432

exportPGDATA=/opt/pgdata

exportPGHOME=/opt/pgsql

exportPATH=.:

$PGHOME/bin:

$PATH

●使环境变量配置立即生效

$source~/.bash_profile

4.5.初始化数据库(master)

初始化数据库

$initdb-D$PGDATA

4.6.修改配置文件(master)

主配置文件postgresql.conf参数调整(master)

找到以下参数内容,调整参数值

$cd$PGDATA

$vimpostgresql.conf

listen_addresses='*'

port=5432

max_connections=500

wal_level=hot_standby

archive_mode=on

archive_command='/bin/date'

max_wal_senders=6

hot_standby=on

访问控制文件pg_hba.conf配置(master)

增加以下访问控制内容

$cd$PGDATA

$vimpg_hba.conf

hostallall192.168.1.231/32trust

hostallall192.168.1.232/32trust

hostreplicationreplica192.168.1.232/32trust

hostreplicationreplica192.168.1.231/32trust

标志文件recovery.done配置(master)

新增一个recovery.done文件

$touch/opt/pgdata/recovery.done

在文件中输入以下内容

$vim/opt/pgdata/recovery.done

standby_mode=on

recovery_target_timeline=‘latest’

primary_conninfo=’host=192.168.1.232port=5432user=replicapassword=replica’

trigger_file=‘/opt/pgdata/trigger_file’

4.7.启动主库服务(master)

$pg_ctl-D$PGDATA-l$PGDATA/logfilerestart

4.8.配置流复制用户(master)

●创建流复制用户

$psql-Upostgres

postgres#CREATEROLEreplicaloginreplicationencryptedpassword'replica';

4.9.备库实例生成(standby)

从主库复制实例到备库

#su–postgres

$pg_basebackup–D$PGDATA–Fp–Xs–v–P–hnode1–Ureplica

修改备库标识文件

$mv/opt/pgdata/recovery.done/opt/pgdata/recovery.conf

$vim/opt/pgdata/recovery.conf

standby_mode=on

recovery_target_timeline=’latest’

primary_conninfo=‘host=192.168.1.231port=5432user=replica’

trigger_file=‘/opt/pgdata/trigger_file’

4.10.启动备库服务(standby)

$pg_ctl–D$PGDATA-l$PGDATA/logfilestart

4.11.检查运行情况

●查看备库进程

ps–ef|greppostgres

●查看主库进程

ps–ef|greppostgres

4.12.测试

OnMaster:

 

postgres=#createtabletest(idint,namevarchar(10));

postgres=#createtabletest(idint,namevarchar(10));

postgres=#selecttable_namefrominformation_schema.tableswheretable_schema='public';

table_name

------------

test

(1row) 

OnStandby:

 

postgres=#selecttable_namefrominformation_schema.tableswheretable_schema='public';

table_name

------------

test

(1row) 

新增的数据已经传输过去,并且standby端的会话是只读的。

5.pgpool-II安装配置

5.1.安装

解压和安装(master/standby)

#su-postgres

$mkdir/opt/pgpool

$tarzxvfpgpool-II-3.4.3.tar.gz

$cdpgpool-II-3.4.3

$./configure--prefix=/opt/pgpool--with-pgsql=/opt/pgsql--with-openssl

$make

$makeinstall

安装相关函数(master)

●安装pgpool-regclass,pgpool-recovery函数

[postgres@node1~]$cd/opt/soft/pgpool-II-3.4.3/src/sql/pgpool-regclass

[postgres@node1pgpool-regclass]$make

[postgres@node1pgpool-regclass]$makeinstall

[postgres@node1pgpool-regclass]$psql-fpgpool-regclass.sqltemplate1

[postgres@node1pgpool-regclass]$cd../pgpool-recovery

[postgres@node1pgpool-recovery]$make

[postgres@node1pgpool-recovery]$makeinstall

[postgres@node1pgpool-recovery]$psql-fpgpool-recovery.sqltemplate1

●安装完以后/opt/pgsql/share/extension/目录下应该有如下文件

pgpool_recovery--1.1.sql

pgpool_recovery.control

pgpool-recovery.sql

pgpool_regclass--1.0.sql

pgpool_regclass.control

pgpool-regclass.sql

备注:

备节点不需要创建pgpool_regclass,pgpool_recovery)

●查看新增加的函数

[postgres@node1~]$psql-Upostgrestemplate1

template1=#\df

5.2.配置环境变量(master/standby)

#su-postgres

$vim~/.bash_profile

exportPGPOOL=/opt/pgpool

exportPATH=.:

$PGPOOL/bin:

$PATH

使环境变量立即生效

$source~/.bash_profile

5.3.配置ifconfig,arping执行权限(master/standby)

●配置sudo权限

#vim/etc/sudoers

postgresALL=(ALL)NOPASSWD:

/sbin/ifconfig

postgresALL=(ALL)NOPASSWD:

/sbin/ifup

postgresALL=(ALL)NOPASSWD:

/sbin/ifdown

postgresALL=(ALL)NOPASSWD:

/sbin/arping

●配置s权限

#chmodu+s/sbin/ifconfig

#chmodu+s/usr/sbin/arping

5.4.开启日志(master/standby)

●在日志/etc/rsyslog.conf加入以下行

#vim/etc/rsyslog.conf

local0*/var/log/pgpool/pgpool.log

●重启rsyslog服务

#/etc/init.d/rsyslogrestart

●pgpool.conf配置以下行

#vim/opt/pgpool/etc/pgpool.conf

log_destination=’syslog’

5.5.主库修改配置文件(master)

主配置文件pgpool.conf参数调整

[postgres@node1~]$cd/opt/pgpool/etc

[postgres@node1etc]$cppgpool.conf.samplepgpool.conf

[postgres@node1etc]$vimpgpool.conf

主节点的pgpool.conf(配置文件中的用户名和配置能用postgres用户就用postgres用户,尽量减少用户)

#CONNECTIONS

#-pgpoolConnectionSettings-

listen_addresses='*'

port=9999

socket_dir='/opt/pgpool'

#-pgpoolCommunicationManagerConnectionSettings–

pcp_listen_addresses='*'

pcp_port=9898

pcp_socket_dir='/opt/pgpool'

#-BackendConnectionSettings-

backend_hostname0='node1'##配置数据节点node1

backend_port0=5432

backend_weight0=1

backend_data_directory0='/opt/pgdata'

backend_flag0='ALLOW_TO_FAILOVER'

backend_hostname1='node2'##配置数据节点node2

backend_port1=5432

backend_weight1=1

backend_data_directory1='/opt/pgdata'

backend_flag1='ALLOW_TO_FAILOVER'

#-Authentication-

enable_pool_hba=on

pool_passwd='pool_passwd'

authentication_timeout=60

#LOGS

#-Wheretolog-

log_destination='syslog'

#-Whattolog-

print_timestamp=on

log_connections=on

log_hostname=on

log_statement=on

log_per_node_statement=off

log_standby_delay='none'

#FILELOCATIONS

pid_file_name='/opt/pgpool/pgpool.pid'

logdir='/var/log/pgpool'

#CONNECTIONPOOLING

#CONNECTIONPOOLING

connection_cache=on

reset_query_list='ABORT;DISCARDALL'

#REPLICATIONMODE

replication_mode=off

replicate_select=off

insert_lock=on

lobj_lock_table=''

#LOADBALANCINGMODE

load_balance_mode=on

ignore_leading_white_space=on

white_function_list=''

black_function_list='nextval,setval,nextval,setval'

#MASTER/SLAVEMODE

master_slave_mode=on#设置流复制模式

master_slave_sub_mode='stream'#设置流复制模式

#-Streaming-

sr_check_period=5

sr_check_user='replica'

sr_check_password='replica'

delay_threshold=16000

#-Specialcommands-

follow_master_command=''

parallel_mode=off

pgpool2_hostname=''

system_db_hostname='localhost'

system_db_port=5432

system_db_dbname='pgpool'

system_db_schema='pgpool_catalog'

system_db_user='pgpool'

system_db_password=''

#HEALTHCHECK

health_check_period=5

health_check_timeout=20

health_check_user='replica'

health_check_password='replcia'

health_check_max_retries=3

health_check_retry_delay=1

#FAILOVERANDFAILBACK

failover_command='/opt/pgpool/failover_stream.sh%d%H/opt/pgdata/trigger_file'

failback_command=''

fail_over_on_backend_error=on

search_primary_node_timeout=10

#ONLINERECOVERY

recovery_user='nobody'

recovery_password=''

recovery_1st_stage_command=''

recovery_2nd_stage_command=''

recovery_timeout=90

client_idle_limit_in_recovery=0

#WATCHDOG

use_watchdog=on

#-Connectiontoupstreams

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2