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!
配置: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!
相关文章推荐
- linux的权限和用户管理
- 在Linux中使用线程
- Linux系统下查看硬件信息命令大全
- linux 下 .sh 文件语法
- Linux 技巧:让进程在后台可靠运行的几种方法
- linux free命令详解
- 《Linux内核分析》 第六节 进程的描述和进程的创建
- Centos搭建Codis集群完整版
- Linux CPU篇
- linux c常用字符串处理函数
- Linux环境中往MySQl数据库导入数据文件乱码问题
- Linux初步学习
- 学Linux决心书
- Linux 技巧:让进程在后台可靠运行的几种方法(转)
- Linux无法登录,显示module is unknown
- Linux C语言实现ls -l
- LVM(转)
- Centos 下 Hadoop2.6.4安装 多节点部署
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
- Linux下启动java程序的通用脚本sh