环境:Ubuntu 12.04.4 LTS \n \l

master:192.153.167.136

slave:192.153.167.137

pg: postgresql-9.2.4-1-linux-x64.run

安装省略

1、在master 备份postgresql.conf文件并做修改,其修改主要字段如下:

port = 5432wal_level = hot_standby checkpoint_segments = 16archive_mode = on max_wal_senders = 3
wal_keep_segments = 16

2、创建复制用户

 CREATE USER repuser   REPLICATION    LOGIN   CONNECTION LIMIT 4   ENCRYPTED PASSWORD '123';

3、设置 pg_hba.conf访问权限,添加以下

# IPv4 local connections:
host all all 192.153.167.137/24 md5
#host replication postgres ::1/128 md5
host replication repuser 192.153.167.137/24 md5

4、启动库并查看表空间

 /etc/init.d/postgresql-9.2 restartcyyun=# \db
List of tablespaces
Name | Owner | Location
------------+----------+-------------------
fastspace | postgres | /data1/tablespace
pg_default | postgres |
pg_global | postgres |
(3 rows)

5、在master上查看数据目录,先查看表空间目录和数据目录,因为这些目录需要在备库主机上手工创建

echo $PGDATA
/opt/PostgreSQL/9.2/data

6、在slave库上面创建目录并且授权

mkdir  -p /data/psqlmkdir -p /data1/tablespacechown postgres.   /data/psqlchown postgres.  /data1/tablespacechmod 700 /data/psql

7、在slave上面创建.pgpass

touch .pgpasschmod 600 .pgpasspostgres@jxnc1:~$ cat .pgpass
192.153.167.136:3500:replication:repuser:123

8、先删除从库的data目录
使用 pg_basebackup 生成备库

postgres@jxnc1:~$ pg_basebackup -D  /usr/local/pgsql/data -Fp -Xs -v -P -h 192.168.163.182 -p 5432 -U repuser
transaction log start point: 0/3000020
pg_basebackup: starting background WAL receiver
25769/25769 kB (100%), 2/2 tablespaces
transaction log end point: 0/30000E0
pg_basebackup: waiting for background process to finish streaming...
pg_basebackup: base backup completed

9、设置从库 postgresql.conf

hot_standby = on

10、创建 recovery.conf

postgres@jxnc1:~$ cat /data/psql/recovery.conf|tail -5
#---------------------------------------------------------------------------standby_mode = on
primary_conninfo = 'host=192.153.167.136 port=3500 user=repuser'
trigger_file = '/data/psql/postgresql.trigger.3500'

11、修改启动脚本 /etc/init.d/postgresql-9.2里对应的data和log目录改成新的目录/data/psql下的

12、启动

 /etc/init.d/postgresql-9.2 start

13、查看slave进程及log

postgres$ ps aux |grep postgres
postgres 19904 0.0 0.0 37280 1476 pts/0 S 17:09 0:00 su - postgres
postgres 19905 1.0 0.0 21252 3864 pts/0 S 17:09 0:00 -su
postgres 20002 0.2 0.0 90124 8080 pts/0 S 17:10 0:00 /opt/PostgreSQL/9.2/bin/postgres -D /data/psql
postgres 20003 0.0 0.0 56380 1220 ? Ss 17:10 0:00 postgres: logger process
postgres 20004 0.1 0.0 90156 1864 ? Ss 17:10 0:00 postgres: startup process recovering 000000010000000000000004
postgres 20005 0.0 0.0 90124 1436 ? Ss 17:10 0:00 postgres: checkpointer process
postgres 20006 0.1 0.0 90124 1440 ? Ss 17:10 0:00 postgres: writer process
postgres 20007 0.0 0.0 58524 1304 ? Ss 17:10 0:00 postgres: stats collector process
postgres 20008 0.5 0.0 105324 2788 ? Ss 17:10 0:00 postgres: wal receiver process streaming 0/4000280
postgres 20073 0.0 0.0 15268 1220 pts/0 R+ 17:10 0:00 ps aux
postgres 20074 0.0 0.0 7844 936 pts/0 S+ 17:10 0:00 grep --color=auto postgres
postgres@jxnc1:/data/psql$ tailf pg_log/postgresql-2015-02-03_171003.log 2015-02-03 17:10:03 CST LOG: database system was interrupted; last known up at 2015-02-03 16:49:25 CST
2015-02-03 17:10:03 CST LOG: creating missing WAL directory "pg_xlog/archive_status"
2015-02-03 17:10:03 CST LOG: entering standby mode
2015-02-03 17:10:03 CST LOG: redo starts at 0/3000020
2015-02-03 17:10:03 CST LOG: consistent recovery state reached at 0/30000E0
2015-02-03 17:10:03 CST LOG: database system is ready to accept read only connections
2015-02-03 17:10:04 CST LOG: streaming replication successfully connected to primary

14、查看master进程

root@jxnc1:/data1/tablespace/PG_9.2_201204301# ps aux |grep postgres
postgres 14446 0.0 0.0 90736 8096 pts/1 S 16:14 0:00 /opt/PostgreSQL/9.2/bin/postgres -D /opt/PostgreSQL/9.2/data
postgres 14447 0.0 0.0 57072 1188 ? Ss 16:14 0:00 postgres: logger process
postgres 14449 0.0 0.0 90860 2296 ? Ss 16:14 0:00 postgres: checkpointer process
postgres 14450 0.0 0.0 90736 1384 ? Ss 16:14 0:00 postgres: writer process
postgres 14451 0.0 0.0 90736 1380 ? Ss 16:14 0:00 postgres: wal writer process
postgres 14452 0.0 0.0 91552 2636 ? Ss 16:14 0:00 postgres: autovacuum launcher process
postgres 14453 0.0 0.0 59168 1212 ? Ss 16:14 0:00 postgres: archiver process last was 000000010000000000000003
postgres 14454 0.0 0.0 59328 1460 ? Ss 16:14 0:00 postgres: stats collector process
postgres 18964 0.0 0.0 64152 1976 pts/1 S 16:36 0:00 su - postgres
postgres 18965 0.0 0.0 29852 7940 pts/1 S 16:36 0:00 -su
postgres 20912 0.0 0.0 15512 1464 pts/1 S+ 16:43 0:00 /bin/bash /opt/PostgreSQL/9.2/bin/psql cyyun
postgres 20914 0.0 0.0 55216 2936 pts/1 S+ 16:43 0:00 /opt/PostgreSQL/9.2/bin/psql.bin cyyun
postgres 20947 0.0 0.0 92764 6068 ? Ss 16:43 0:00 postgres: postgres cyyun [local] idle
postgres 27512 0.0 0.0 91568 2836 ? Ss 17:09 0:00 postgres: wal sender process repuser 59.53.67.37(44583) streaming 0/4000828
root 28200 0.0 0.0 10424 932 pts/0 S+ 17:14 0:00 grep --color=auto postgres

到此主从搭建完成。

常见报错 :

1、postgres@ubuntu:~$ pg_basebackup -D ?/usr/local/pgsql/data -Fp -Xs -v -P -h 192.168.163.182 -p 5432 -U repuser?
pg_basebackup: could not connect to server: could not connect to server: Connection refused
Is the server running on host “192.168.163.182” and accepting
TCP/IP connections on port 5432?

解决办法:
在主从数据库上面查看日志cat logfile


前面添加#,注释掉,127.0.0.1表示本机

查看本机的端口号,然后kill-9 端口号。重新启动数据库服务。

扩展

生产环境在线数据库重新初始化和重新做主从

一主库操作步骤
1、先检查系统是否已设置好中文包,方法如下:

echo $LANG;echo $LANGUAGE
zh_CN.UTF-8
zh_CN:zh

2、停止web服务器和dumpall 数据库库
停止web:

/etc/init.d/tomcat6 stop

备份数据库:

su - postgrespg_dumpall > db.`date -d  today +%Y%m%d%H%M%S`.out

3、找一台测试服务器,测试备份的数据导入数据库是否有问题

新建其它库名进行导入测试

createdb dbname
psql  postgres  -f  db.`date -d  today +%Y%m%d%H%M%S`.out

4、如有问题,排查问题,具体问具体解决

5、停止主库来备份数据库目录

/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql  -m fast stop
cd /data1/
mv pgsql  pgsqlbk
mkdir  pgsql

6、初始化数据目录

/opt/PostgreSQL/9.2/bin/initdb -D /data1/pgsql --locale=zh_CN.UTF8 (Success. You can now start the database server using:/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql or/opt/PostgreSQL/9.2/bin/pg_ctl -D /data1/pgsql -l logfile start)

7、测试启动数据库

/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql start

8、停止数据库备份配置文件和表空间

/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql stop
mv pgsql/postgresql.conf pgsql/postgresql.conf.bk
mv pgsql/pg_hba.conf pgsql/pg_hba.conf.bk
mv pgsql/pg_tblspc pgsql/pg_tblspc.bk

9、拷贝源备份的postgresql.conf、pg_hba.conf和表空间文件到新库pgsql中

cp pgsqlbk/postgresql.conf pgsql/
cp pgsqlbk/pg_hba.conf pgsql/
cp -r pgsqlbk/pg_tblspc pgsql/

10、启动数据库

/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql start

11、导入备份的库

su - postgres
createdb dbname
psql -U postgres -d dbname -f  db.`date -d  today +%Y%m%d%H%M%S`.out

11、验证数据是否完整。

select * from tables;

12、停止主库及备份数据库文件

/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql  -m fast stop
tar -jcvf data.tar.bz2  /data1/pgsql
rsync -a -v -P data.tar.bz2   postgres@ip:/data1/

二、从库需要重新做standby

1、停止从库和备份数据库目录

su - postgres
/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql  -m fast stop
cd /data1/
mv pgsql  pgsqlsbk

2、解压拷贝文件

tar -jxvf data.tar.bz2

3、备份配置文件,拷贝源配置文件及删除文件

cd pgsql
mv postgresql.conf  postgresql.conf.201311
mv pg_hba.conf  pg_hba.conf.201311
cp ../pgsqlsbk/postgresql.conf  ./
cp ../pgsqlsbk/pg_hba.conf  ./
cp ../pgsqlsbk/recovery.conf ./
chmod 644 recovery.conf
chmod 0700 ../pgsql
rm postmaster.pid

4、在从库上面,加载配置文件并且启动数据

/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql start

5、在主库上面启动数据库并手工插入输入测试数据

/opt/PostgreSQL/9.2/bin/postgres -D /data1/pgsql start

6、在从库查看log是否正常或sql查询新增记录是否过来

查看从库日志判断,如下这种日志为正常

tail -f /data1/pgsql/pg_log/postgresql-`date +%Y-%m-%d`*.log
2012-03-05 23:35:01 CST LOG:  database system was shut down in recovery at 2012-03-05 23:34:29 CST
2012-03-05 23:35:01 CST LOG:  entering standby mode
2012-03-05 23:35:02 CST LOG:  restored log file "000000010000000000000010" from archive
2012-03-05 23:35:02 CST LOG:  redo starts at 0/10000078
2012-03-05 23:35:02 CST LOG:  consistent recovery state reached at 0/11000000
2012-03-05 23:35:02 CST LOG:  database system is ready to accept read only connections

sql语句验证

select 字段 from  table;

7、确认主从数据库没问题后,启动web服务

/etc/init.d/tomcat6 start

8、登陆web页面点击各功能模块,查看是否都正常

postgresql-9.6.6主从相关推荐

  1. PostgreSQL 9.6 keepalived主从部署

    ## 环境: PostgreSQL版:9.6 角色                     OS                    IP master                 CentOS ...

  2. centos7/redhat7离线安装postgresql+postgis并配置主从并做故障切换演练(9.6、11.6、13和14版本)

    一.安装postgresql.postgis(有9.6/11.6/13/14各版本的离线安装包) 以下例子安装的版本为postgresql13.postgis30_13,因已提前准备好安装所需的RPM ...

  3. 【技术实现】java实时同步postgresql变更数据,基于WAL日志

    [技术实现]java基于WAL日志订阅获取postgresql实时变更数据 一.前言 二.WAL日志 三.逻辑解码和逻辑复制 四.准备工作 五.实现步骤(代码示例) 五.总结 一.前言 在以往的工作中 ...

  4. PG学习笔记(1)—— 主从复制:流复制

    PG学习笔记(1)-- 主从复制:流复制 闲云野鹤,乡夫俗子,不过一隅静土. 背景 PostgreSQL 9.1之前,主从复制传输以WAL日志文件为单位,主库写完WAL日志后再传输给从库,导致主从延迟 ...

  5. Ubuntu下搭建postgresql主从服务器(方法1)

    Ubuntu下搭建postgresql主从服务器(方法1) 安装略 postgresql主服务器: $ vi /etc/postgresql/9.1/main/postgresql.conf 按a或i ...

  6. PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)

    PostgreSQL的HA解决方案-1主从和备份(master/slave and backup) 参考文章: (1)PostgreSQL的HA解决方案-1主从和备份(master/slave and ...

  7. postgresql主从备份_基于PG12.2实现主从异步流复制及主从切换教程(下)

    概述 今天主要介绍如何搭建PG主从流复制及主从切换,仅供参考. PS:上篇的地址在文末链接. PostgreSQL数据库主从异步流复制搭建 环境说明: 1.安装PG数据库(主从库进行) 用脚本进行,略 ...

  8. Postgresql数据库主从备份教程

    数据库主从热备 数据库安装 1.安装yum源 打开https://yum.postgresql.org/repopackages.php ,找到自己需要的版本,右键复制链接地址. 不放心是否复制成功的 ...

  9. postgresql主从备份_PostgreSQL主从流复制与手动主备切换架构

    导读 使用PostgreSQL 11.3 创建两个节点:node1 和 node2: 配置主从流复制,然后做手动切换(failover).为了配置过程简单,两个节点在同一台物理机器上. 首先建立主从同 ...

  10. postgresql主从备份_基于windows平台的postgresql主从数据库流备份配置

    基于windows平台的postgresql主从数据库流备份配置 因工作需要,需要搞pg数据库的主从备份,领导给了个方向使用流备份,于是开始朝着这个方向进发. 鸣谢大佬A_ccelerator的博客 ...

最新文章

  1. WPF MultiSelect模式下ListBox 实现多个ListBoxItem拖拽
  2. UNIX再学习 -- 线程控制
  3. 五十三、开始算法刷题磨练
  4. postgresql 分词_使用PostgreSQL进行中文全文检索
  5. 2019-03-12-算法-进化(合并两个有序数组)
  6. Springboot+ Mybatis搭建学习
  7. python如何上传文件_python请求文件上传
  8. Linux下查看日志常用命令
  9. DDR3内存频率标识对应
  10. linux 屏幕录像软件,Linux系统下推荐使用的5个屏幕录像软件
  11. 香港主机与美国主机的相同点和不同点
  12. The annotation of C++ primer {藤原豆腐坊自家用}
  13. qs—对象序列化为查询参数和URL解析成对象的库
  14. linux命令查看驱动,Linux下查看网卡驱动和版本信息
  15. 【Java】保姆级“方法“教学
  16. mysql备份文件解析_使用Golang解析读取Mysql备份文件
  17. win10 Windows图片浏览器缺失的解决办法
  18. 【田渊栋报告】游戏中的人工智能:成就与挑战 | ICML WorkShop(46PPT)
  19. 搜集的一些机器学习和数据挖掘的实践项目
  20. python图片统一大小及转换通道

热门文章

  1. 图像处理神经网络python_深度学习使用Python进行卷积神经网络的图像分类教程
  2. 三大统计相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数
  3. Struts2 action的扩展名两种修改方法
  4. Sqlite3 ---------------用法
  5. 机器学习--python代码实现基于Fisher的线性判别(鸢尾花数据集的分类)
  6. 云计算介绍-1.2,IaaS\PaaS\SaaS比较
  7. 恢复云数据库MySQL的备份文件到自建数据库
  8. 逆向某某单车-iOS客户端
  9. MongoDB(二)CRUD 指令简单汇总
  10. OpenSSL生成RSA公私钥(java)