pgsql主从搭建

环境:Linux   

pqsql版本:9.0及以上


主库:

安装

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

2、启动数据库

>1  创建用户postgres

useradd  postgres

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

2> 创建pgsql的数据目录

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 安装启动完毕,可以本地连接,看下服务是否正常,做主从前确保本身能正常启动和创建


主从配置主:

1、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'

2、主库得创建这个账号,必须是超级用户

createuser  -a -d -e -P replica 

如果之前已经创建,可以删除  dropuser -i -e  replica

至于查看这个用户是否是超级用户,可以先随便连接一个数据库进入查看

psql -d postgres -U postgre 

\du

3、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必须要大于主库的  


4、pg_ctl  restart  重启pgsql 服务


主从配置从:

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

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

2、启动成功之后,检查数据目录是否已经存在主库那边的所有目录文件,并且运行次命令

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' # 这个说明这个流复制同步到最新的数据

3、

vim postgresql.conf

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

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

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

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

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


4、启动pgsql

su  postgres

pg_ctl start

如果报权限有问题,那是因为数据权限有问题,必须是0700,而我们这个是同步过来,非初始化的,所有可能权限不太对

chmod 700 -R ./* 

再次启动应该ok


5、校验

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

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

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

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


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

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







你可能感兴趣的:(pgsql主从搭建)