下面简单介绍一下PostgreSQL9.1同步步骤。
安装及配置PgSQL9.1
在这里把node1作为PgSQL Master服务器,node2作为PgSQL Slave服务器。
1. yum安装
执行命令服务器:node1,node2
# wget -P /usr/local/src http://yum.postgresql.org/9.1/redhat/rhel-5-x86_64/pgdg-#centos91-9.1-4.noarch.rpm
# rpm -ivh /usr/local/src/pgdg-centos91-9.1-4.noarch.rpm
# yum install postgresql91 postgresql91-devel postgresql91-libs postgresql91-server postgresql91-docs
2. 数据库的初始化
执行命令服务器:node1
# service postgresql-9.1 initdb --encoding=UTF8
Initializing database: [ OK ]
Data directory is not empty!
如出现以上错误,删除PgSQL所有的数据。
# cd /var/lib/pgsql/9.1/data
# rm -fr *
3. 配置postgresql.conf
postgresql.conf是最重要的配置文件(跟MySQL的my.cnf一样),在这里只配置Streaming同步相关的几个参数。
执行命令服务器:node1
# vi /var/lib/pgsql/9.1/data/postgresql.conf
修改以下4个参数。
----
listen_addresses = '*'
wal_level = hot_standby
max_wal_senders = 2
hot_standby = on
----
4. 配置pg_hda.conf
执行命令服务器:node1
# vi /var/lib/pgsql/9.1/data/pg_hda.conf
追加以下2行(★追加)
----
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
# IPv4-style local connections:
host all all 127.0.0.1/32 trust
host all all trust ★追加
host all all trust ★追加
# IPv6 local connections:
host all all ::1/128 trust
----
5. 创建Streaming同步用户
启动Master的PgSQL以后,创建同步时使用的用户。
执行命令服务器:node1
# service postgresql-9.1 start
# su - postgres
$ psql
CREATE ROLE repluser LOGIN REPLICATION PASSWORD 'zabbixcc';
q
6. 从Master服务器获取数据
执行命令服务器:node2
# cd /var/lib/pgsql/9.1/data/
# rm -rf *
# su - postgres
$ pg_basebackup -D /var/lib/pgsql/9.1/data/ -x -P -h -U repluser
7. 配置recovery.conf
执行命令服务器:node2
# cp -p /usr/pgsql-9.1/share/recovery.conf.sample /var/lib/pgsql/9.1/data/recovery.conf
# vi /var/lib/pgsql/9.1/data/recovery.conf
修改以下2个参数。
----
standby_mode = on
primary_conninfo = 'host= port=5432 user=repluser password=zabbixcc'
----
配置以后启动,node2的PgSQL。
# service postgresql-9.1 start
8. 配置开机启动
执行命令服务器:node1,node2
# chkconfig postgresql-9.1 on
确认Streaming同步
1. 插入数据(Master)
执行命令服务器:node1
$ psql
CREATE TABLE tbl (id int);
INSERT INTO tbl VALUES (1), (2);
SELECT * FROM tbl;
q
2. 查看数据(Slave)
查看在Master插入的数据,有没有同步到Slave。
执行命令服务器:node2
$ psql
SELECT * FROM tbl;
q