[原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(四)
八、HA环境下配置多节点的ssh
VIP(s1):
[root@s1 ~]# mkdir /opt/PostgresPlus/9.2AS/.ssh
[root@s1 ~]# chown enterprisedb.enterprisedb /opt/PostgresPlus/9.2AS/.ssh/
[root@s1 ~]# su enterprisedb
bash-4.1$ ssh-keygen -t rsa -C "enterprisedb key"
bash-4.1$ scp ~/.ssh/id_rsa.pub root@192.168.1.223:.ssh/authorized_keys
bash-4.1$ scp ~/.ssh/id_rsa.pub root@192.168.1.224:.ssh/authorized_keys
s3和s4:
[root@s1 ~]# mkdir /opt/PostgresPlus/9.2AS/.ssh
[root@s1 ~]# chown enterprisedb.enterprisedb /opt/PostgresPlus/9.2AS/.ssh/
[root@s1 ~]# su enterprisedb
bash-4.1$ ssh-keygen -t rsa -C "enterprisedb key"
在s3和s4上,分别将公钥放在HA上,但在放完一个时,需要先将HA上的公钥文件备份一个出来
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.228
scp ~/.ssh/id_rsa.pub root@192.168.1.228:.ssh/authorized_keys
[root@s1 .ssh]# cp authorized_keys authorized_keys_s3或[root@s1 .ssh]# cp authorized_keys authorized_keys_s4
再将两个公钥文件都合并到authorized_keys文件中。
[root@s1 .ssh]# cat authorized_keys_s3 >> authorized_keys
[root@s1 .ssh]# cat authorized_keys_s4 >> authorized_keys
这样,s3和s4上的enterprisedb用户都可以到HA做无密码访问了。
s3上做一次验证:
[root@s3 ~]# su - enterprisedb
-bash-4.1$ ssh root@192.168.1.228
s4上做一次验证:
[root@s4 ~]# su - enterprisedb
-bash-4.1$ ssh root@192.168.1.228
下面需要在HA中切换到s2,再做一次同样的操作。
在s2中:
[root@s2 ~]# mkdir /opt/PostgresPlus/9.2AS/.ssh
[root@s2 ~]# chown enterprisedb.enterprisedb /opt/PostgresPlus/9.2AS/.ssh/
[root@s2 ~]# su enterprisedb
bash-4.1$ ssh-keygen -t rsa -C "enterprisedb key"
bash-4.1$ scp ~/.ssh/id_rsa.pub root@192.168.1.223:.ssh/authorized_keys_for_s2
bash-4.1$ scp ~/.ssh/id_rsa.pub root@192.168.1.224:.ssh/authorized_keys_for_s2
到s3上合并s1和s2的公钥
[root@s3 ~]# cd .ssh/
[root@s3 .ssh]# cp authorized_keys authorized_keys_for_s1
[root@s3 .ssh]# cat authorized_keys_for_s2 >> authorized_keys
到这里,s2可以对s3无密码访问了。
在s4上重复上一步骤,使s2可以对s4无密码访问
[root@s4 ~]# cd .ssh/
[root@s4 .ssh]# cp authorized_keys authorized_keys_for_s1
[root@s4 .ssh]# cat authorized_keys_for_s2 >> authorized_keys
在s2上进行验证:
[root@s2 9.2AS]# su - enterprisedb
-bash-4.1$ ssh root@192.168.1.224
没有问题,s2可以对s4无密码访问了。
下面开始处理s3和s4对s2的无密码访问
在s3上
[root@s3 ~]# su - enterprisedb
-bash-4.1$ scp ~/.ssh/id_rsa.pub root@192.168.1.228:.ssh/authorized_keys_from_s3
到s2上,将authorized_keys_from_s3的内容合并到authorized_keys
[root@s2 ~]# cd .ssh/
[root@s2 .ssh]# touch authorized_keys
[root@s2 .ssh]# cat authorized_keys_from_s3 >> authorized_keys
在s4上重复s2上的步骤
scp ~/.ssh/id_rsa.pub root@192.168.1.228:.ssh/authorized_keys_from_s4
在s2上,将authorized_keys_from_s4的内容合并到authorized_keys
cat authorized_keys_from_s4 >> authorized_keys
这里为止,s3和s4对s2都可以无密码访问了。
下面开始HA对多个备机的流复制。
九、HA环境下配置流复制
s1:
[root@s1 ~]# mkdir /mnt/iscsi/edbbackup
[root@s1 ~]# mkdir /mnt/iscsi/edbbackup/fullbackup
[root@s1 ~]# mkdir /mnt/iscsi/edbbackup/archive
[root@s1 ~]# chown -R enterprisedb.enterprisedb /mnt/iscsi/edbbackup
s3:
[root@s3 ~]# mkdir /opt/ppas_fullbackup
[root@s3 ~]# mkdir /opt/ppas_archive
[root@s3 ~]# chown enterprisedb.enterprisedb /opt/ppas_fullbackup/
[root@s3 ~]# chown enterprisedb.enterprisedb /opt/ppas_archive/
s4:同s3
在HA中修改edb配置文件postgresql.conf
[root@s1 ~]# cp /mnt/iscsi/edb/data/postgresql.conf /mnt/iscsi/edb/data/postgresql.conf.bak
[root@s1 ~]# vim /mnt/iscsi/edb/data/postgresql.conf
postgresql.conf:
wal_level = hot_standby
archive_mode = on
archive_command = 'cp -i %p /mnt/iscsi/edbbackup/archive/%f < /dev/null'
有几台standby就设max_wal_senders为多少,现在有两台standby,设为2
max_wal_senders = 2
hot_standby = on
log_statement = 'all'
3、主库配置文件pg_hba.conf修改
[root@s1 ~]# vim /mnt/iscsi/edb/data/pg_hba.conf
在pg_hba.conf文件中加入下面的内容:
#add by zws for stream replication 2013.07.15
host all all 192.168.1.228/32 trust
host all all 192.168.1.223/32 trust
host all all 192.168.1.224/32 trust
host replication enterprisedb 192.168.1.228/32 trust
host replication enterprisedb 192.168.1.223/32 trust
host replication enterprisedb 192.168.1.224/32 trust
4、重启主库
[root@s1 ~]# /etc/init.d/ppas-9.2 restart
5、对主库做一次全备
[root@s1 ~]# pg_basebackup -D /mnt/iscsi/edbbackup/fullbackup/$(date +"%Y%m%d") -Ft -x -z -Z 3 -v -h 192.168.1.228 -p 5444 -U enterprisedb
图1
[root@s1 ~]# ll /mnt/iscsi/edbbackup/fullbackup/
可以看到全备生成的目录以及目录中的base.tar.gz,即全备生成的文件。
6、恢复s3上的备库
[root@s3 ~]# /etc/init.d/ppas-9.2 status
停止standby数据库,删除备库中的data目录或改名,把主库中全备的数据文件恢复到备库。
[root@s3 ~]# /etc/init.d/ppas-9.2 stop
a、在备机s3中重命名ppas的data,模拟data目录损坏
[root@s3 ~]# mv /opt/PostgresPlus/9.2AS/data /opt/PostgresPlus/9.2AS/data.bak
[root@s3 ~]# mkdir /opt/PostgresPlus/9.2AS/data
[root@s3 ~]# chown enterprisedb.enterprisedb /opt/PostgresPlus/9.2AS/data
[root@s3 ~]# chmod 0700 /opt/PostgresPlus/9.2AS/data
b、把主库中全备的数据文件恢复到备库
[root@s3 ~]# su enterprisedb
[root@s3 ~]# scp root@192.168.1.228:/mnt/iscsi/edbbackup/fullbackup/20130718/base.tar.gz /opt/ppas_fullbackup/
将base.tar.gz包tar出来,tar包解压到/opt/PostgresPlus/9.2AS/data/
c、在备机的data目录中,添加recovery.conf文件
[root@s3 ~]# cp /opt/PostgresPlus/9.2AS/share/recovery.conf.sample /opt/PostgresPlus/9.2AS/data/recovery.conf
修改recovery.conf文件的配置参数:
[root@s3 ~]# vim /opt/PostgresPlus/9.2AS/data/recovery.conf
standby_mode = 'on'
primary_conninfo = 'host=192.168.1.228 port=5444 user=enterprisedb application_name=hot_standby1'
restore_command = 'scp -Cp root@192.168.1.228:/mnt/iscsi/edbbackup/archive/%f "%p"'
记得修改文件的所有者
[root@s3 ~]# chown enterprisedb.enterprisedb /opt/PostgresPlus/9.2AS/data/recovery.conf
d、修改主库的配置文件postgresql.conf中的synchronous_standby_names参数:
synchronous_standby_names = 'hot_standby1'
该参数与备机的恢复文件中的primary_conninfo参数中的属性application_name是一致的,这时可以再次检查步骤c中的参数值。
在做多节点复制的时候,我将这个值改为了'*'号。
e、在主机中执行reload命令,重新加载配置文件
[root@s1 /]# /etc/init.d/ppas-9.2 restart
f、启动s3上的备库,可以看到备库中的data目录已经完整恢复了。
[root@s3 ~]# /etc/init.d/ppas-9.2 start
g、在s4节点重复上面的步骤。如果有更多的流复制节点,依次重复上面的步骤。
十、HA环境下流复制的测试
创建测试表
CREATE TABLE streamreplication_test (username TEXT,some_tstimestamptz TEXT,random_value INT4);
插入记录测试(100万条)
CREATE TABLE streamreplication_test (username TEXT,some_ts timestamptz,random_value INT4);
INSERT INTO streamreplication_test (username, some_ts, random_value)
SELECT
'user #' || cast(floor(random() * 10) as int4),
now() - '1 year'::INTERVAL * random(),
cast(random() * 100000000 as INT4)
FROM
generate_series(1,1000000);
可以在s3和s4的备库查询检查。在HA中写入数据的同时,s3和s4也存在数据了。
手动切HA,再做测试均正常。
[原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(四)的更多相关文章
- [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(三)
五.准备HA环境1.准备yum源a.安装vsftp服务,将光盘镜像copy到本地ftp目录作为yum源.[root@s1 ~]# mount 可以看到cdrom已经挂载了,首先安装vsftp服务[ro ...
- [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(一)
内容较多,开篇作为说明和目录. 实验环境规划:服务器:IBM x3500 m3三台其中两台用作HA,另外一台安装VMware ESXi安装两个虚机做Stream Replication.NAS存储IP ...
- [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(二)
三.配置主机与备机的ssh无密码登录1.主机s1到备机s3的无密码登录a.创建ssh目录[root@s1 ~]# mkdir /opt/PostgresPlus/9.2AS/.sshb.修改ssh目录 ...
- 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business
建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...
- [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制
一.系统环境 操作系统:Windows Server 2003/2008 两个节点分别为master与slave. 主节点master:172.27.19.28 备机点slave:172.27.19. ...
- [原创]PostgreSQL Plus Advanced Server配合crontab实现定时维护工作
本文要实现的目标1.PostgreSQL定时全备2.定时删除归档WAL文件3.定时删除全备文件4.删除n天之前的数据库日志文件 实验环境操作系统:RHEL 6.3数据库:PostgreSQL Plus ...
- [原创]PostgreSQL Plus Advanced Server监控工具PEM(四)
四.PEM管理工具 1.编辑配置 选择进行管理的目标服务器,点击菜单Tools->Server Configuration->postgresql.conf管理服务器配置,可以看到我们经常 ...
- [原创]PostgreSQL Plus Advanced Server监控工具PEM(一)
一.概述 PEM是为数据库管理员.系统架构师和性能分析师为管理.监控和优化 PostgreSQL 和 EnterpriseDB 数据库服务器设计的图形化管理工具.旨在解决大量数据库服务器跨地域.精细化 ...
- [原创]PostgreSQL Plus Advanced Server批量创建分区表写入亿级别数据实例
当前情况:大表的数据量已接近2亿条我的解决思路:为它创建n*100个分区表,将各个分区表放在不同的tablespace上这样做的优点:1.首先是对这个级别的数据表的性能会有所提升2.数据管理更科学3. ...
随机推荐
- Win2D 官方文章系列翻译 - DPI (每英寸点数)和 DIPs(设备独立像素)
本文为个人博客备份文章,原文地址: http://validvoid.net/win2d-dpi-dips/ 本文旨在解释物理像素与设备独立像素(DIPs, device independent pi ...
- 翻译「C++ Rvalue References Explained」C++右值引用详解 Part3:右值引用
本文为第三部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/4220233.html. 右值引用 如果x是任意类型,那么x&&则被称作一个 ...
- deep learning新征程
deep learning新征程(一) zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2015-11-26 声明: 1 ...
- 慕课网-安卓工程师初养成-3-2 Java中的算术运算符
来源:http://www.imooc.com/code/1279 算术运算符主要用于进行基本的算术运算,如加法.减法.乘法.除法等. Java 中常用的算术运算符: 其中,++ 和 -- 既可以出现 ...
- java.lang.IllegalArgumentException
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.Persiste ...
- 洛谷P2732 商店购物 Shopping Offers
P2732 商店购物 Shopping Offers 23通过 41提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 在商店中, ...
- C#中DataTable转换JSON
#region 将DataTable转换为json public string dt2json(DataTable dt) { JavaScriptSerializer jss = new JavaS ...
- php获取文件创建时间、修改时间
filemtime ( string filename ) 返回文件上次被修改的时间,出错时返回 FALSE.时间以 Unix 时间戳的方式返回,可用于 date(). 例如:$a=filemtime ...
- _config.json
{ "AUTH": "66D86F40DF42A6103C2B0C2F16E41472DABF0594C79859E5EF51E06B377215F3B464E3F0F3 ...
- Java c3po
1.准备通用类 (引用:c3p0-0.9.1.2.jar) package nankang.test; import java.sql.Connection; import com.mchange.v ...