pgpool + postgres 读写分离配置(2)

192.168.1.108 主数据库(master)
192.168.1.109 备份的数据库

  CREATE DATABASE locker  WITH ENCODING='UTF8'


  CREATE ROLE locker LOGIN ENCRYPTED PASSWORD 'locker'  SUPERUSER

  ALTER DATABASE locker OWNER TO locker;


 pg_md5 -m -p -u postgres pool_passwd 



第一.192.168.1.108主机主数据库参数(改配置 必须都用 postgres这个账号搞)
 
a. 在主库上创建创建超级用户( On Master ) 
   新增repuser用户.
     CREATE USER repuser  SUPERUSER  LOGIN  CONNECTION LIMIT 30  ENCRYPTED PASSWORD 'repuser';

b. 设置 master 库 pg_hba.conf
    host   replication     repuser         192.168.1.109/16         md5
     说明:超级用户 repuser 是用来从库上读取库主库(Master)的 WAL stream,
     并且在b中设置权限,只允许主机 192.168.1.109(Standby 节点)以 md5 加密方式访问   

c.vi 机器postgres安装目录/data/postgresql.conf
    logging_collector = on
说明:"logging_collector" 参数用来记录数据库连接信息,打开这个开关,从而在接下来的CSV日志中
    能更好的观察Master库和 Standby 库情况。
    
    设置库库 postgresql.conf ( On Master )
wal_level = hot_standby   --主库设置成 hot_standby ,从库才能以READ-ONLY模式打开
archive_mode = on
archive_command = 'cp -i %p /home/postgres/archive/%f' 注意:这里将WAL日志备份到 /home/postgres/archive 目录下,
max_wal_senders = 1     --WAL STREAM 日志发送进程数
wal_keep_segments = 64

                logging_collector = on
                log_directory = '/home/postgres/pg_log'     
log_filename = 'postgresql-%Y-%m-%d.log'

                
                
    说明,关键参数"max_wal_senders" 是指 wal 发送进程数, 我这里只有一台从库,所以设置为1,如果有多台
从库,则应该设置成从库个数,因为在Master库上,每台从库需要一个 WAL日志发送进程向从库发送WAL日志流。
一方面是这一参数官网的介绍。
  
                             

d.21机器上操作 在postgres用户下执行
    启动主数据库

  su - postgres
  主库全备
  cd /usr/pgsql-9.2/bin
    ./psql -c "select pg_start_backup('master_backup')"
  
  du -sh data/ 查看这个前后 差别很大
  
e.将数据文件COPY到standby 主机并解压
  su root
  cd /var/lib/pgsql/9.2/
  tar czvf data.tar.gz data --exclude=data/pg_xlog  --exclude=data/postmaster.pid
  scp -rp data.tar.gz [email protected]:/var/lib/pgsql/9.2/.

  到192.168.1.109备份的机子
  su root
  tar -zxvf data.tar.gz

f. 切换到192.168.1.108主机 
 数据COPY完后,结束备份 Stop the backup (On Master)

./psql -c "select pg_stop_backup()";
service  postgresql stop

===============================================================================
第二 .修改副本20数据库data/参数

修改从库 postgresql.conf (On standby )
hot_standby = on     --从库上可以执行只读操作



设置从库 recovery.conf (On standby)
standby_mode = 'on'  --标记PG为STANDBY SERVER
primary_conninfo = 'host=192.168.1.108 port=5432 user=repuser password=repuser'
#trigger_file = '/tmp/postgresql.trigger.1921'

   说明:关键参数“primary_conninfo (string)” ,这里配置了hostname,port,username ,password,
关于这个参数的更多解释可以参考官网.其中更多关于连接的参数可以配置,这里不说明了

 删除从库文件,并创建 pg_xlog目录 (On standby )
$ rm -f $PGDATA/postmaster.pid
$ mkdir -p pg_xlog


./pg_ctl -D /var/lib/pgsql/9.2/data   start




=========下面的 不要了 只是一些参数的设置=============================



配置从库主机参数 (On standby)
3.1 设置 /etc/sysctl.conf,增加以下内容
kernel.shmmni = 4096
kernel.sem = 501000 6412800000 501000 12800
fs.file-max = 767246
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
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

sysctl -p 生效

3.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



启动slave数据库

./pg_ctl -D /var/lib/pgsql/9.2/data  -l /home/postgres/pg.log start

你可能感兴趣的:(pgpool + postgres 读写分离配置(2))