[原创]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. ...
随机推荐
- [codevs5578][咸鱼]tarjan/结论题
5578 咸鱼 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 在广袤的正方形土地上有n条水平的河流和m条垂直的河流,发达的咸鱼家族在m*n个河流交叉点都 ...
- Windows 7的100M隐藏分区
1.Windows 7的100MB的隐藏分区是Windows 7的活动分区,类似于Linux的/boot. 这其实有点类似Linux的做法,Linux在安装过程中可以专门分出一个100MB左右的分区作 ...
- NSSet、NSMutableSet
NSSet和NSArray功能性质一样,用于存储对象,属于集合:只能添加cocoa对象,基本数据类型需要装箱. NSSet . NSMutableSet是无序的集合,在内存中存储方式是不连续的,而NS ...
- 华为OJ平台——求最大连续bit数
题目描述: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字 输出: 对应的二进制数字中1的最大连续数 思路: ...
- php接口post提交方法 。
方法一,用 file_get_contents function send_post($url, $post_data) { //$postdata = http_build_query($post_ ...
- Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...
- badge ionic tab
我需要在tab上动态显示 badge badge="badges.carts" badge-style="badge-assertive" 将这段代码 放在了 ...
- .Net性能优化时应该关注的数据
解决性能问题的时候,我往往会让客户添加下面一些计数器进行性能收集. Process object下的所有计数器: Processor object下的所有计数器: System object下的所有计 ...
- TCP/IP之大明王朝邮差
一位大神的精华之作,原创2016-05-12 刘欣 来自码农翻身! 时间: 大明王朝天启四年, 清晨. 天色刚蒙蒙亮,我就赶着装满货物的马车来到了南城门,这里是集中处理货物的地方,一队一队的马车都来到 ...
- Java 对字符反转操作。
//把一段字符串反转后大小写互换位置 public class test_demo { public static void main(String[] args)throws Exception { ...