Centos 安装postgreSQL9.4.3
rpm -ivh http://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7.2-x86_64/pgdg-centos94-9.4-3.noarch.rpm
yum install postgresql94-server postgresql94-contrib -y
#首先在/home下创建一个Postgresql的数据目录
mkdir /home/postgresql_data
#然后为这个目录指定所有者同时分配权限
chown postgres:postgres /home/postgresql_data -R
chmod 0700 /home/postgresql_data
#请在root用户和切换至postgres用户,同时设置环境变量
export PATH=/usr/pgsql-9.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-9.4/lib
export PGDATA=/home/postgresql_data
#然后source使环境变量生效
source .bash_profile
#然后使用命令initdb生成数据库簇,
initdb
#最后尝试启动Postgresql服务
pg_ctl start -D $PGDATA
#使用 ps -ef | grep postgres 验证,如果有一堆postgres相关进程,那就安装成功了。
如果就到此结束了,貌似第4步就没法做了,因为使用 systemctl start postgresql-9.4 将不会成功的,为啥呢?请打开
vi /usr/lib/systemd/system/postgresql-9.4.service ,因为在#Location of database direcotry配置节里面没有指定正确的PGDATA。所以我们需要将下面的PGDATA设置成正确值
#Location of database directory
Environment=PGDATA=/home/postgresql_data
#设置服务开机自启动
systemctl enable postgresql-9.4.service
systemctl start postgresql-9.4.service(注意:如果已经使用pg_ctl start -D $PGDATA启动数据库,必须先停止数据库运行pg_ctl stop,否则将会由于端口冲突导致数据库服务无法启动)
systemctl status postgresql-9.4.service
------------------------------------------------------------------------------------------
安装数据库同步
在主数据库db1上执行:
mkdir -p /home/postgresql_data/xlog_archive
---------------------------------------------------
vi /home/postgresql_data/postgresql.conf
listen_addresses = '*'
wal_level = hot_standby
synchronous_commit = on
archive_mode = on
archive_command = 'cp %p /home/postgresql_data/xlog_archive/%f'
max_wal_senders=5
wal_keep_segments = 32
hot_standby = on
restart_after_crash = off
restart_after_crash = off
-------------------------------------------------------------
#创建用于数据库同步的用户replica并授予权限
create user replica superuser password 'replica';
--------------------------------------------------------------
vi /home/postgresql_data/pg_hba.conf
local all all trust
host all all 192.168.2.0/24 trust #允许94连接到主服务器
host replication replica 192.168.2.0/24 md5 #允许94使用postpgresql用户来复制
---------------------------------------------------------------
db1上切换postgresql用户执行:
pg_ctl start -D $PGDATA
或者root用户执行:
systemctl restart postgresql-9.4.service
-----------------------------------------------------------
在从数据库db2上执行
#首先在/home下创建一个Postgresql的数据目录
mkdir /home/postgresql_data
#然后为这个目录指定所有者同时分配权限
chown -R postgres:postgres /home/postgresql_data
chmod 7500 /home/postgresql_data
#然后切换用户:
su - postgres
pg_basebackup -h 192.168.2.103 -U postgres -D $PGDATA -X stream -P(提示输入postgres用户密码)
Password:
86664/86664 kB (100%), 1/1 tablespace
-------------------------------------------------------------------------
vi /home/postgresql_data/recovery.conf
standby_mode = on # 说明该节点是从服务器
primary_conninfo = 'host=192.168.2.103 port=5432 user=postgres password=postgres' # 主服务器的信息以及连接的用户
recovery_target_timeline = 'latest'
--------------------------------------------------------------------------
#启动数据库
pg_ctl -D /data/postgresql/data/ start 或 systemctl start postgresql-9.4.service