【场景】

最近接手运维VMware的DAAS环境,其中在租户管理组件中Service Center Appliance plateform中有以前选项:

那上图中的Slony到底是什么呢,Fabric和Element又是什么;

【解释】

1、根据相关资料表明,DAAS采用了PostgrelSql数据库,而Slony是是Psql中重要的一个组件;
2、Fabric和Element正如上图所示,其是Psql的2个数据库实例名称,又简称为fdb和edb数据库。

下面先来看下Psql中Slony:

Slony是PostgreSQL领域中最广泛的复制解决方案之一。它不仅是最古老的复制实现之一,它也是一个拥有最广泛的外部工具支持的工具,Slony使用逻辑复制;Slony-I一般要求表有主键,或者唯一键;Slony的工作不是基于PostgreSQL事务日志的,而是基于触发器的;基于逻辑复制高可用性。

在wiki博客中,提到Slony-I is a “master to multiple slaves” replication system supporting cascading (e.g. - a node can feed another node which feeds another node…) and failover,支持 Single origin (master), up to 20 subscribers。即Slony是一个主从集群/复制解决方案,对比DAAS环境中租户TA设备的高可用性+数据一致性要求,就可很好理解Slony在dt-platform中的作用。

下图是slonh-I在TA设备主机上的配置文件:

查看进程:ps -ef | grep slony

【Slony架构图】:


如上图所示,postgresql Slony主从式集群复制的优点在于数据的变更都集中在一台服务器上,其他的从机的数据基本不能变更,完全接受主机的数据变更的异步通知,结合DAAS业务场景,租户TA成对部署,且所有操作均在TA1设备上操作,TA1设备默认就是集群中的主,通过平台自动创建采用169,。254的内部地址进行集群通信,Slony1通过数据库数据的变更通知,及时更新子结点的数据,即TA2的数据,有经验表明Slony1在局域网的复制速度相当的快,数据量不是特别大的情况几乎可以实时同步。
利用slony开源软件可以对postgresql数据进行集中管理,大大提高数据库服务器的服务能力,解决单postgresql在处理海量查询语句出现瓶颈的问题,提高了postgresql在分散分布情况下的数据服务和处理能力。

Slony安装部署

1)软件下载安装
附:postgreSQL下载:https://www.postgresql.org/download/

wget https://www.slony.info/downloads/2.2/source/slony1-2.2.8.tar.bz2

或:git clone http://git.postgresql.org/git/slony1-engine.git
或:git clone ‘git://git.postgresql.org/git/slony1-engine.git’
加参数–recursive ,可对代码项目进行递归下载
tar -jxvf slony1-2.2.8.tar.bz2
cd slony1-2.2.8
./configure --prefix=/usr/local/pgsql --with-pgconfigdir=/usr/local/pgsql/bin --with-perltools
或./configure --with-pgsourcetree=<postgresql 源代码目录>
make
make install
部署过程可参看:https://www.jb51.net/article/141510.htm

SP中TA的数据库说明

Provides information about database instances that are replicated. This provider runs on all Fabricdatabase servers. In the platform, appliances have one or more database instances running, asfollows:
1) Service provider appliances – Fabric Database (FDB) only
2)Tenant appliances - Fabric Database (FDB), Element Database (EDB), and App Volumes
Database (AVDB)
3) Desktop manager appliances - Element Database (EDB) and App Volumes Database (AVDB);
SP提供有关要复制的数据库实例的信息。SP在所有Fabric上运行数据库服务器。在平台中,设备运行一个或多个数据库实例,如下所示如下:
1)服务提供商设备–仅适用于结构数据库(FDB)
2)租户设备-结构数据库(FDB),元素数据库(EDB)和应用程序卷数据库(AVDB)
3)桌面管理器设备-元素数据库(EDB)和应用程序卷数据库(AVDB)

平台同步复制参数SyncStatus说明:同步进程状态仅适用于从属实例。该属性对于主实例不具有任何意义。对于从属实例,SyncStatus值将是自上次同步以来的毫秒数。例如,SyncStatus = 1200表示最后一次成功同步是在1.2秒之前。警告SyncStatus是否大于40秒大。如果SyncStatus的使用时间超过2分钟,就需管理人员格外注意,因此,运维过程中需要多关注该参数状态。

运维:
replication daemon (slony) 作为复制的守护进行运行在TA数据库集群中,可查看该进程状态:

$ps -ef | grep db.conf
root 1062 1 0 Sep17 ? 00:00:00 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/
static/conf/slon_edb.conf
root 1121 1 0 Sep17 ? 00:00:00 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/
static/conf/slon_fdb.conf
root 1443 1062 0 Sep17 ? 00:07:39 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/
static/conf/slon_edb.conf
root 1446 1121 0 Sep17 ? 00:06:01 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/
static/conf/slon_fdb.conf

另外,slony还依赖以下2个服务,如果复制服务异常,可对其进行重启:
$ nohup /usr/local/pgsql/bin/slon -f
/usr/local/desktone/release/static/conf/slon_fdb.conf >/dev/null 2>&1 &
$ nohup /usr/local/pgsql/bin/slon -f
/usr/local/desktone/release/static/conf/slon_edb.conf >/dev/null 2>&1 &

postgreSql Slony-1 同步复制部署案例

下面是Slony-I 的安装配置简明指南,实现主副数据库的同步:

1)实验:主、副数据库服务器配置

Master:
hostname: M_DB
inet addr:10.0.0.11
OS: Linux 2.6.9-42.ELsmp
CPU:Intel® Xeon® CPU L5320 @ 1.86GHz
MemTotal: 254772 kB
PgSQL: postgresql-8.3.0

Slave:
hostname:S_DB
inet addr:10.0.0.12
OS: Linux 2.6.9-42.ELsmp
CPU:Intel® Xeon® CPU L5320 @ 1.86GHz
MemTotal: 514440 kB
PgSQL: postgresql-8.3.0

注意: 在M_DB和S_DB上安装postgresql-8.3.0, 确保超级用户是postgres,数据库名是URT。检查M_DB和S_DB上的超级用户postgres是否可以访问对方的机器,分别在M_DB和S_DB上执行以下命令,M_DB和S_DB上的URT数据库里创建相同的表accounts。

sudo -u postgres /home/y/pgsql/bin/createlang plpgsql URT

2)安装Slony-I
#分别在M_DB和S_DB上安装Slony-I
tar xfj slony1-1.2.13.tar.bz2
cd slony1-1.2.13
./configure –with-pgconfigdir=/home/y/pgsql/bin
gmake all
sudo gmake install

  1. Slony Config,创建urt_replica_init.sh文件:
#!/bin/shSLONIK=/home/y/pgsql/bin/slonik
#slonik可执行文件位置CLUSTER=URT
#你的集群的名称SET_ID=1
#你的复制集的名称MASTER=1
#主服务器IDHOST1=M_DB
#源库IP或主机名DBNAME1=URT
#需要复制的源数据库SLONY_USER=postgres
#源库数据库超级用户名SLAVE=2
#从服务器IDHOST2=S_DB
#目的库IP或主机名DBNAME2=URT
#需要复制的目的数据库PGBENCH_USER=postgres
#目的库用户名$SLONIK <<_EOF_#这句是定义集群名
cluster name = $CLUSTER;#这两句是定义复制节点
node $MASTER admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER ';
node $SLAVE admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER ';#初始化集群和主节点,id从1开始,如果只有一个集群,那么肯定是1
#comment里可以写一些自己的注释,随意
init cluster ( id = $MASTER, comment = 'Primary Node' );#下面是从节点
store node ( id = $SLAVE, comment = 'Slave Node' );#配置主从两个节点的连接信息,就是告诉Slave服务器如何来访问Master服务器
#下面是主节点的连接参数
store path ( server = $MASTER, client = $SLAVE,
conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER ');#下面是从节点的连接参数
store path ( server = $SLAVE, client = $MASTER,
conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER ');#设置复制中角色,主节点是原始提供者,从节点是接受者
store listen ( origin = $MASTER, provider = 1, receiver = 2 );
store listen ( origin = $SLAVE, provider = 2, receiver = 1 );#创建一个复制集,id也是从1开始
create set ( id = $SET_ID, origin = $MASTER, comment = 'All pgbench tables' );#向自己的复制集种添加表,每个需要复制的表添加一条set命令,id从1开始,逐次递加,步进为1;
#fully qualified name是表的全称:模式名.表名
#这里的复制集id需要和前面创建的复制集id一致
set add table ( set id = $SET_ID, origin = $MASTER,
id = 1, fully qualified name = 'public.accounts',
comment = 'Table accounts' );

4)启动同步复制:

./urt_replica_init.sh //在M_DB或者S_DB上执行

5)启动slony
创建Master.slon文件:
########################
cluster_name=“URT”
conn_info=“dbname=URT host=M_DB user=postgres”
########################

创建Slave.slon文件:
########################
cluster_name=“URT”
conn_info=“dbname=URT host=S_DB user=postgres”
########################

#在M_DB上执行
/home/y/pgsql/bin/slon -f master.slon >> master.log &

#在S_DB上执行
/home/y/pgsql/bin/slon -f slave.slon >> slave.log &
6)配置slony发布服务器
创建urt_replica_subscribe.sh文件:

#!/bin/shSLONIK=/home/y/pgsql/bin/slonik
#slonik可执行文件位置CLUSTER=URT
#你的集群的名称SET_ID=1
#你的复制集的名称MASTER=1
#主服务器IDHOST1=M_DB
#源库IP或主机名DBNAME1=URT
#需要复制的源数据库SLONY_USER=postgres
#源库数据库超级用户名SLAVE=2
#从服务器IDHOST2=S_DB
#目的库IP或主机名DBNAME2=URT
#需要复制的目的数据库PGBENCH_USER=postgres
#目的库用户名$SLONIK <<_EOF_#这句是定义集群名
cluster name = $CLUSTER;#这两句是定义复制节点
node $MASTER admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
node $SLAVE admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER ';#提交复制集
subscribe set ( id = $SET_ID, provider = $MASTER, receiver = $SLAVE, forward = no);

#在M_DB或者S_DB上执行:./urt_replica_subscribe.sh
7)验证:
修改M_DB上URT数据里的accounts表,S_DB上的accounts表也会随之改变。

关于VMware Desktone中的Slony和数据库相关推荐

  1. 在vmware server中部署linux redhat 5.4 ORACLE RAC11g +ASM

    在vmware server中部署ORACLE RAC 11g 部署oracle rac on redhat5.4 第一部分   准备环境: 1.  硬件配置 电脑:I3, 8G, 500G 虚机配置 ...

  2. 虚拟机中火狐连不上服务器,VMware虚拟机中Ubuntu18.04无法连接网络的解决办法

    VMware虚拟机中Ubuntu18.04无法连接网络的解决办法 虚拟机中Ubuntu18.04无法连接网络的解决办法,具体内容如下 对VMware虚拟机进行恢复默认网络设置 恢复虚拟网络默认设置(在 ...

  3. 将excel中是数据导入数据库

    2019独角兽企业重金招聘Python工程师标准>>> 将excel中是数据导入数据库 1.利用excel生成sql语句: 列如: 1).insert: =CONCATENATE(& ...

  4. python通过什么连接数据库_python中常用的各种数据库操作模块和连接实例

    这篇文章主要介绍了python中常用的各种数据库操作模块和连接实例,包括sqlite3.oracle.mysql.excel,需要的朋友可以参考下 工作中,经常会有用python访问各种数据库的需求, ...

  5. mysql 中修改对象_在MySQL中,创建一个数据库后,还可以对象其进行修改,不过这里的修改是指可以修改被创建数据库的相关参数,也可以修改数据库名。...

    [多选题]注射时,在(  )情况下,采用较高的注射速率. [单选题]通常,所设置的模具温度是指和制品接触的模腔内表面在(   ). [单选题]反映某一事件发生强度的指标应选用 [判断题]当试样制备之后 ...

  6. liferay中使用自己的数据库

    第一步,liferay的默认数据库介绍 在这个目录中liferay自带了一个小型的数据库, data是存放数据的目录 其默认数据库是hsql 数据全部存储在目录文件中  在lportal中存放数据. ...

  7. 理解VMware Team中的虚拟网络

    VMware Workstation 5.0(及其以后的版本)提供了"Team"功能.每个Team都包括"一组"虚拟机,以及多个虚拟交换机.Team是VMwar ...

  8. MySql中添加用户,新建数据库,用户授权,删除用户,修改密码

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...

  9. 32位数据源中没有mysql_如何在.NET中连接到MySQL数据库

    dbForge Studio for MySQL是一个在Windows平台被广泛使用的MySQL客户端,它能够使MySQL开发人员和管理人员在一个方便的环境中与他人一起完成创建和执行查询,开发和调试M ...

最新文章

  1. 定义利润中心(Profit Center)
  2. jQuery图片提示和文字提示
  3. Shiro之权限管理的概念
  4. Uvaoj 11248 Frequency Hopping(Dinic求最小割)
  5. 关于xendesktop外部SQL数据库连接设置的问题
  6. WinForm中窗体重画成圆角矩形
  7. UMl user guide读书笔记
  8. js中__proto__和prototype的区别和联系
  9. c语言算法骑士,[算法]C语言实现 骑士旅游(递归)
  10. 使用yq工具合并两个yml文件
  11. NSLocale中常用的语言代码对照表
  12. 阿里云服务器对企业有什么用?
  13. Java求解N皇后问题
  14. 广告投放策略及数据分析
  15. 特征工程——特征选择
  16. redis 用scan 代替keys,hgetAll
  17. Intel Xeon E5-4650 VS AMD Opteron 6380
  18. java新闻管理系统代码下载_通用新闻管理系统
  19. 从零开始的OCR之旅
  20. startup_stm32f10x_hd.s启动文件分析

热门文章

  1. 昨日关注:40个博客网站排名
  2. 苹果净利润同比下滑19%,大中华区下滑30%;养老基金将入股市投资,首批可能达2000亿元
  3. Office2016使用HP打印机只能打印一次再打印就假死怎么办?
  4. 无需注册试用ChatGPT
  5. 萨提亚·纳德拉与沈向洋CVPR对谈:那些未来可期的计算机视觉研究与应用
  6. 2017 北京商改住政策
  7. 基于STM32的I2C通信 2(读写AT24C02)
  8. MATLAB函数解析:colormap——查看并设置当前颜色图
  9. WEBGIS开发 常用开发功能简介 数据处理 标绘 业务数据可视化 视频融合 Cesium EarthSDK
  10. 线段树 hdu3265 Posters