postgresql-9.6.6主从
环境: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主从相关推荐
- PostgreSQL 9.6 keepalived主从部署
## 环境: PostgreSQL版:9.6 角色 OS IP master CentOS ...
- centos7/redhat7离线安装postgresql+postgis并配置主从并做故障切换演练(9.6、11.6、13和14版本)
一.安装postgresql.postgis(有9.6/11.6/13/14各版本的离线安装包) 以下例子安装的版本为postgresql13.postgis30_13,因已提前准备好安装所需的RPM ...
- 【技术实现】java实时同步postgresql变更数据,基于WAL日志
[技术实现]java基于WAL日志订阅获取postgresql实时变更数据 一.前言 二.WAL日志 三.逻辑解码和逻辑复制 四.准备工作 五.实现步骤(代码示例) 五.总结 一.前言 在以往的工作中 ...
- PG学习笔记(1)—— 主从复制:流复制
PG学习笔记(1)-- 主从复制:流复制 闲云野鹤,乡夫俗子,不过一隅静土. 背景 PostgreSQL 9.1之前,主从复制传输以WAL日志文件为单位,主库写完WAL日志后再传输给从库,导致主从延迟 ...
- Ubuntu下搭建postgresql主从服务器(方法1)
Ubuntu下搭建postgresql主从服务器(方法1) 安装略 postgresql主服务器: $ vi /etc/postgresql/9.1/main/postgresql.conf 按a或i ...
- PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)
PostgreSQL的HA解决方案-1主从和备份(master/slave and backup) 参考文章: (1)PostgreSQL的HA解决方案-1主从和备份(master/slave and ...
- postgresql主从备份_基于PG12.2实现主从异步流复制及主从切换教程(下)
概述 今天主要介绍如何搭建PG主从流复制及主从切换,仅供参考. PS:上篇的地址在文末链接. PostgreSQL数据库主从异步流复制搭建 环境说明: 1.安装PG数据库(主从库进行) 用脚本进行,略 ...
- Postgresql数据库主从备份教程
数据库主从热备 数据库安装 1.安装yum源 打开https://yum.postgresql.org/repopackages.php ,找到自己需要的版本,右键复制链接地址. 不放心是否复制成功的 ...
- postgresql主从备份_PostgreSQL主从流复制与手动主备切换架构
导读 使用PostgreSQL 11.3 创建两个节点:node1 和 node2: 配置主从流复制,然后做手动切换(failover).为了配置过程简单,两个节点在同一台物理机器上. 首先建立主从同 ...
- postgresql主从备份_基于windows平台的postgresql主从数据库流备份配置
基于windows平台的postgresql主从数据库流备份配置 因工作需要,需要搞pg数据库的主从备份,领导给了个方向使用流备份,于是开始朝着这个方向进发. 鸣谢大佬A_ccelerator的博客 ...
最新文章
- WPF MultiSelect模式下ListBox 实现多个ListBoxItem拖拽
- UNIX再学习 -- 线程控制
- 五十三、开始算法刷题磨练
- postgresql 分词_使用PostgreSQL进行中文全文检索
- 2019-03-12-算法-进化(合并两个有序数组)
- Springboot+ Mybatis搭建学习
- python如何上传文件_python请求文件上传
- Linux下查看日志常用命令
- DDR3内存频率标识对应
- linux 屏幕录像软件,Linux系统下推荐使用的5个屏幕录像软件
- 香港主机与美国主机的相同点和不同点
- The annotation of C++ primer {藤原豆腐坊自家用}
- qs—对象序列化为查询参数和URL解析成对象的库
- linux命令查看驱动,Linux下查看网卡驱动和版本信息
- 【Java】保姆级“方法“教学
- mysql备份文件解析_使用Golang解析读取Mysql备份文件
- win10 Windows图片浏览器缺失的解决办法
- 【田渊栋报告】游戏中的人工智能:成就与挑战 | ICML WorkShop(46PPT)
- 搜集的一些机器学习和数据挖掘的实践项目
- python图片统一大小及转换通道
热门文章
- 图像处理神经网络python_深度学习使用Python进行卷积神经网络的图像分类教程
- 三大统计相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数
- Struts2 action的扩展名两种修改方法
- Sqlite3 ---------------用法
- 机器学习--python代码实现基于Fisher的线性判别(鸢尾花数据集的分类)
- 云计算介绍-1.2,IaaS\PaaS\SaaS比较
- 恢复云数据库MySQL的备份文件到自建数据库
- 逆向某某单车-iOS客户端
- MongoDB(二)CRUD 指令简单汇总
- OpenSSL生成RSA公私钥(java)