pgpool+postgres 集群、负载、主备的配置文档
系统环境:虚拟机(centos 6.5)
db1:postgres(master)+pgpool(master) node1:ip:172.16.144.145
db2:postgres(salve)+pgpool(salve) node2:ip:172.16.144.146 db3:postgres(salve)
node3:ip:172.16.144.147
第一章 初始化配置
首先配置3台主机
3台主机新加用户postgres;
在3台主机上新建文件 vi /home/postgre/postgresql.log 数据库的启动和pgpool的启动全部都是使用postgres用户; 以postgres用户互相SSH信任;
数据库的安装目录为:/usr/local/pgsql/
pgpool的安装目录为:/usr/local/pgpool/ (pgpool安装的时候,./configure –
prefix=/usr/local/pgpool要用命令指定安装目录,在以后的配置中比较方便,个人建议)。 数据库安装之后,要给postgresql和pgpool添加环境变量 具体的添加如下:
用root账户编辑/etc/profile文件,在文件的最后面添加以下代码 export PATH=/usr/local/pgsql/bin:$PATH:/usr/local/pgpool/bin export PGDATA=/usr/local/pgsql/data export PGHOME=/usr/local/pgsql export LANG=zh_CN.UTF-8 export PGPORT=5432
保存文件后,需要使用postgres用户 使用source /etc/profile命令使环境变量生效。
使用root账户,对/usr/local/pgsql的那个目录使用chown -R postgres:postgres pgsql
以node1,配置ntpd服务,确保node1,node2,node3的时间保持一致, 在node2和node3中要加上定时任务去同步node1的ntp服务。
主数据库的数据库需要初始化,备数据库不用数据库初始化。 主数据库的初始化的方法:
在node1的/usr/local/pgsql/目录下面新建一个文件夹叫data, 使用数据库的初始化的命令:
initdb -D /usr/local/pgsql/data --locale=zh_CN.UTF8
数据库的启动命令:pg_ctl -D /usr/local/pgsql -l /home/postgres/postgresql.log start
给数据库的postgres用户添加密码:
在终端中输入psql命令后,进入数据库,然后使用以下命令改密码
alter user postgres with password '123456';
备主机的数据库的目录下面也需要建data文件夹
第二章 数据库的流复制配置
2.1在主库中创建流复制用户
CREATE USER repuser replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD '123456';
2.2修改主库pg_hba.conf文件(目录在/usr/local/pgsql/data)
在最后添加如下行。
host replication repuser 172.16.144.0/24 trust host all all 172.16.144.0/24 trust host all postgres 172.16.144.0/24 trust
2.3修改主库postgresql.conf文件
修改如下几个参数 listen_addresses = '*' wal_level = hot_standby max_wal_senders = 2 hot_standby = on
max_wal_senders是Slave库的节点数〃有多少个slave库就设多少。
wal_level是write ahead log参数值,设置流复制务必将此值更新成hot_standby。
使用postgres用户启动主数据库,命令见上一章。
2.4在salve 主机上使用命令: 在备机上使用命令来跟主库进行同步:
pg_basebackup -h 172.16.144.145 -U repuser -F p -P -x -R -D /usr/local/pgsql/data/ -l node1dbbackup160619
在两台备主机上的数据库安装目录下面的data文件夹中都有了数据。 在两台备机的/usr/local/pgsql/data/下面同时有了recovery.conf文件
$ vi recovery.conf --新增以下三行 standby_mode = 'on'
trigger_file = '/usr/local/pgsql/data/pg.trigger'
primary_conninfo = 'host=172.16.144.145 port=5432 user=repuser password=123456 keepalives_idle=60'
recovery_target_timeline = 'latest'
2.5启动两台备机的postgres数据库
测试:
在主数据库上通过:
psql进入数据库命令
使用默认的数据库CREATE TABLE rep_test (test varchar(40)); 插入数据:
INSERT INTO rep_test VALUES ('data one');
INSERT INTO rep_test VALUES ('some more words'); INSERT INTO rep_test VALUES ('lalala'); INSERT INTO rep_test VALUES ('hello there'); INSERT INTO rep_test VALUES ('blahblah'); 在备机上通过psql命令进入数据库: 查询rep_test表,看数据是否插入成功;
也可以在主机的数据库中使用命令查看流复制的连接备机情况了:
相关推荐: