环境: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