pgsql主从搭建

环境:Linux   sql

pqsql版本:9.0及以上数据库


主库:vim

安装bash

一、下载包源码安装,./configure  --prefix=/usr/local/pgsql;make;make installtcp

二、启动数据库post

>1  建立用户postgresspa

useradd  postgresrest

echo "postgres" |passwd --stdin "postgres"postgresql

2> 建立pgsql的数据目录
orm

mkdir -p /data/pgsql/data

chown  postgres:postgres /data/pgsql/data

3> 添加环境变量,我这里添加的是全局的,若是是想在本身的我的用户里面,修改对应家目录的文件~./bashrc

vim /etc/profile

export  PATH=/usr/local/pgsql/bin:$PATH

export  PGDATD=/data/pgsql/data

而后source  /etc/profile 使其生效,若是能直接打出好比 post 能自动补全postgres,说明变量生效以及设置成功

4> 初始化数据库,产生一下基础文件

/usr/local/pgsql/bin/initdb –D /data/pgsql/data

>  启动服务

/usr/local/pgsql/postgres –I  -D /data/pgsql/data start &

这里加上-i 的意思是容许客户端进行tcp/ip的链接

至此pgsql 安装启动完毕,能够本地链接,看下服务是否正常,作主从前确保自己能正常启动和建立


主从配置主:

一、vim /data/pgsql/data/pg_hda.conf  :针对某一个主机,增长一个认证帐号

host    replication     replica     10.68.4.161/32                 md5

首先链接pgsql,psql -d  dbname -U username

CREATE ROLE replica login replication encrypted password 'replica'

二、主库得建立这个帐号,必须是超级用户

createuser  -a -d -e -P replica 

若是以前已经建立,能够删除  dropuser -i -e  replica

至于查看这个用户是不是超级用户,能够先随便链接一个数据库进入查看

psql -d postgres -U postgre 

\du

三、vim  postgresql.conf

wal_level = hot_standby  # 这个是设置主为wal的主机

max_wal_senders = 32 # 这个设置了能够最多有几个流复制链接,差很少有几个从,就设置几个

wal_keep_segments = 256 # 设置流复制保留的最多的xlog数目

wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间

max_connections = 100 # 这个设置要注意下,从库的max_connections必需要大于主库的  


四、pg_ctl  restart  重启pgsql 服务


主从配置从:

一、安装与主同样,惟一启动的时候不要出事话,已备份机的方式启动

pg_basebackup -F -p --progress -D /data2/pgsql/data2 -h 10.68.4.60 -U replica --password   回车以后,输入用户密码便可

二、启动成功以后,检查数据目录是否已经存在主库那边的全部目录文件,而且运行次命令

cp /usr/local/pgsql/share/recovery.conf.sample  /data2/pgsql/data2/recovery.conf

vim  recovery.conf

standby_mode = on  # 这个说明这台机器为从库

primary_conninfo = 'host=10.12.12.10 port=5432 user=replica password=replica'  # 这个说明这台机器对应主库的信息

recovery_target_timeline = 'latest' # 这个说明这个流复制同步到最新的数据

三、

vim postgresql.conf

max_connections = 1000 # 通常查多于写的应用从库的最大链接数要比较大,***这里把同步过来的主的注释掉

hot_standby = on  # 说明这台机器不只仅是用于数据归档,也用于数据查询

max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间

wal_receiver_status_interval = 1s  # 多久向主报告一次从的状态,固然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间

hot_standby_feedback = on # 若是有错误的数据复制,是否向主进行反馈


四、启动pgsql

su  postgres

pg_ctl start

若是报权限有问题,那是由于数据权限有问题,必须是0700,而咱们这个是同步过来,非初始化的,全部可能权限不太对

chmod 700 -R ./* 

再次启动应该ok


五、校验

ps aux |grep postgre (以哪一个用户启动就过滤它)

主库上面是否存在sender process 进程

从库上面是否存在receive process 进程

查看基本的配置信息:select * from pg_stat_replication;


六、建库和 表作校验,是否能正常实时同步

createdb  xueyuan

psql -d xueyuan -U postgres 

#create table classes(pid integer,pname varchar(32),constraint zhongwc_pid_pk primary key(pid)); 删除表:drop table classes

插入数据

insert into classes (id,number,name) values

相关文章
相关标签/搜索