您的位置:首页 > 运维架构 > Linux

centos下postgresql源码编译安装与主备异步配置

2016-03-31 09:59 615 查看
机器:10.11.1.197 & 10.11.1.198

配置:CPU:2 * 12核(2.0GHZ),24线程;MEM:120G

pg版本:9.5.1

源码下载与解压:



安装依赖环境:

sudo yum install gcc gcc-c++ automakeautoconf libtool make readline-devel zlib-devel



在解压后的源码目录依次执行下面编译安装命令:

./configure --prefix=/home/liyuming/postgresql/postgresql

gmake -j 20

gmake install

一切顺利

配置环境变量



建数据目录



初始化数据库(pg bin目录下)

./initdb -D /home/liyuming/postgresql/postgresql/data

启动数据库(pg bin目录下)

./pg_ctl -D /home/liyuming/postgresql/postgresql/data -l logfile start

进入客户端(pg bin目录下)

psql 数据库名

psql postgres

\l查看所有数据库

\c test 选择数据库

\dt 查看所有数据表

\d test查看数据表结构

select * from pg_indexes where tablename='test';查看数据表的索引

\q 退出数据库



或者这种方式进入pg:

psql -h 127.0.0.1 -d postgres -U liyuming



给liyuming用户设置密码(进入pg后执行):

alter user liyuming with password 'postgres';

以密码验证形式进入数据库

psql -h 127.0.0.1 -d postgres -U liyuming -W

但是指定ip形式无法进入数据库:

psql -h 10.11.1.197 -p 5432 -d postgres -Uliyuming -W

无法通过ip访问数据库

下面配置PostgreSQL数据库远程连接功能:

分别修改下面两个配置文件(在data目录中)

postgresql.conf(update)

listen_addresses= '*'

pg_hba.conf(append)

host all all 0.0.0.0/0 md5

重启

./pg_ctl -D/home/liyuming/postgresql/postgresql/data stop

./pg_ctl -D/home/liyuming/postgresql/postgresql/data -l logfile start

psql -h 10.11.1.197 -p 5432 -d postgres -Uliyuming -W

OK!(passwd:postgres)

JDBC也可正常连接

postgresql调优:

max_connections = 300

shared_buffers = 16GB

huge_pages = try

maintenance_work_mem = 1GB

dynamic_shared_memory_type =posix

bgwriter_delay = 10ms

wal_level = minimal

fsync = on

synchronous_commit = off

wal_buffers = 16MB

wal_writer_delay = 10ms

max_wal_size = 16GB

effective_cache_size = 90GB

log_destination = 'csvlog'

logging_collector = on

log_truncate_on_rotation = on

log_timezone = 'PRC'

datestyle = 'iso, mdy'

timezone = 'PRC'

lc_messages = 'EN_US.UTF-8'

lc_monetary = 'EN_US.UTF-8'

lc_numeric = 'EN_US.UTF-8'

lc_time = 'EN_US.UTF-8'

default_text_search_config ='pg_catalog.english'

验证参数是否生效(登入数据库)

show all;

发现参数正确

postgresql主备配置:

主库:

vi pg_hba.conf(append)

host replication replica 0.0.0.0/0 md5

vi postgresql.conf(append)

wal_level =hot_standby

max_wal_senders = 2

wal_keep_segments= 256

wal_sender_timeout= 60s

在sql控制台中执行

CREATE ROLE replicalogin replication encrypted password 'replica'

重启数据库服务器

从库:

bin目录执行(必须等主库重启后才能执行下面这个命令)

pg_basebackup -F p --progress -D /home/liyuming/postgresql/postgresql/data2 -h 10.11.1.197 -p 5432 -U replica --password

进入到data2目录,copy share目录的recovery.conf.sample至data2中,并修改如下:

vi recovery.conf

standby_mode = on

primary_conninfo = 'host=10.11.1.197 port=5432 user=replica password=replica'

recovery_target_timeline= 'latest'

vi postgresql.conf

hot_standby = on

max_standby_streaming_delay= 30s

wal_receiver_status_interval= 1s

hot_standby_feedback= on

起从库

./pg_ctl -D /home/liyuming/postgresql/postgresql/data2 -l logfile start

./pg_ctl -D /home/liyuming/postgresql/postgresql/data2 -l logfile stop

检测:

psql -h 10.11.1.197 -p 5432 -d postgres -Uliyuming -W

passwd:postgres

select * from pg_stat_replication;



OK!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: