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
到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