一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話(huà):
您的當(dāng)前位置: > 關(guān)注 > > 正文

Slony到底是什么?關(guān)于VMware Desktone中的Slony和數(shù)據(jù)庫(kù)

來(lái)源:CSDN 時(shí)間:2022-12-12 08:45:47

【場(chǎng)景】

最近接手運(yùn)維VMware的DAAS環(huán)境,其中在租戶(hù)管理組件中Service Center Appliance plateform中有以前選項(xiàng): 那上圖中的Slony到底是什么呢,F(xiàn)abric和Element又是什么;

【解釋】


(相關(guān)資料圖)

1、根據(jù)相關(guān)資料表明,DAAS采用了PostgrelSql數(shù)據(jù)庫(kù),而Slony是是Psql中重要的一個(gè)組件; 2、Fabric和Element正如上圖所示,其是Psql的2個(gè)數(shù)據(jù)庫(kù)實(shí)例名稱(chēng),又簡(jiǎn)稱(chēng)為fdb和edb數(shù)據(jù)庫(kù)。

下面先來(lái)看下Psql中Slony:

Slony是PostgreSQL領(lǐng)域中最廣泛的復(fù)制解決方案之一。它不僅是最古老的復(fù)制實(shí)現(xiàn)之一,它也是一個(gè)擁有最廣泛的外部工具支持的工具,Slony使用邏輯復(fù)制;Slony-I一般要求表有主鍵,或者唯一鍵;Slony的工作不是基于PostgreSQL事務(wù)日志的,而是基于觸發(fā)器的;基于邏輯復(fù)制高可用性。

在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是一個(gè)主從集群/復(fù)制解決方案,對(duì)比DAAS環(huán)境中租戶(hù)TA設(shè)備的高可用性+數(shù)據(jù)一致性要求,就可很好理解Slony在dt-platform中的作用。

下圖是slonh-I在TA設(shè)備主機(jī)上的配置文件: 查看進(jìn)程:ps -ef | grep slony 【Slony架構(gòu)圖】:

如上圖所示,postgresql Slony主從式集群復(fù)制的優(yōu)點(diǎn)在于數(shù)據(jù)的變更都集中在一臺(tái)服務(wù)器上,其他的從機(jī)的數(shù)據(jù)基本不能變更,完全接受主機(jī)的數(shù)據(jù)變更的異步通知,結(jié)合DAAS業(yè)務(wù)場(chǎng)景,租戶(hù)TA成對(duì)部署,且所有操作均在TA1設(shè)備上操作,TA1設(shè)備默認(rèn)就是集群中的主,通過(guò)平臺(tái)自動(dòng)創(chuàng)建采用169,。254的內(nèi)部地址進(jìn)行集群通信,Slony1通過(guò)數(shù)據(jù)庫(kù)數(shù)據(jù)的變更通知,及時(shí)更新子結(jié)點(diǎn)的數(shù)據(jù),即TA2的數(shù)據(jù),有經(jīng)驗(yàn)表明Slony1在局域網(wǎng)的復(fù)制速度相當(dāng)?shù)目欤瑪?shù)據(jù)量不是特別大的情況幾乎可以實(shí)時(shí)同步。 利用slony開(kāi)源軟件可以對(duì)postgresql數(shù)據(jù)進(jìn)行集中管理,大大提高數(shù)據(jù)庫(kù)服務(wù)器的服務(wù)能力,解決單postgresql在處理海量查詢(xún)語(yǔ)句出現(xiàn)瓶頸的問(wèn)題,提高了postgresql在分散分布情況下的數(shù)據(jù)服務(wù)和處理能力。

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’ 加參數(shù)–recursive ,可對(duì)代碼項(xiàng)目進(jìn)行遞歸下載 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=make make install 部署過(guò)程可參看:https://www.jb51.net/article/141510.htm

SP中TA的數(shù)據(jù)庫(kù)說(shuō)明

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提供有關(guān)要復(fù)制的數(shù)據(jù)庫(kù)實(shí)例的信息。SP在所有Fabric上運(yùn)行數(shù)據(jù)庫(kù)服務(wù)器。在平臺(tái)中,設(shè)備運(yùn)行一個(gè)或多個(gè)數(shù)據(jù)庫(kù)實(shí)例,如下所示如下: 1)服務(wù)提供商設(shè)備–僅適用于結(jié)構(gòu)數(shù)據(jù)庫(kù)(FDB) 2)租戶(hù)設(shè)備-結(jié)構(gòu)數(shù)據(jù)庫(kù)(FDB),元素?cái)?shù)據(jù)庫(kù)(EDB)和應(yīng)用程序卷數(shù)據(jù)庫(kù)(AVDB) 3)桌面管理器設(shè)備-元素?cái)?shù)據(jù)庫(kù)(EDB)和應(yīng)用程序卷數(shù)據(jù)庫(kù)(AVDB)

平臺(tái)同步復(fù)制參數(shù)SyncStatus說(shuō)明:同步進(jìn)程狀態(tài)僅適用于從屬實(shí)例。該屬性對(duì)于主實(shí)例不具有任何意義。對(duì)于從屬實(shí)例,SyncStatus值將是自上次同步以來(lái)的毫秒數(shù)。例如,SyncStatus = 1200表示最后一次成功同步是在1.2秒之前。警告SyncStatus是否大于40秒大。如果SyncStatus的使用時(shí)間超過(guò)2分鐘,就需管理人員格外注意,因此,運(yùn)維過(guò)程中需要多關(guān)注該參數(shù)狀態(tài)。

運(yùn)維: replication daemon (slony) 作為復(fù)制的守護(hù)進(jìn)行運(yùn)行在TA數(shù)據(jù)庫(kù)集群中,可查看該進(jìn)程狀態(tài):

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

另外,slony還依賴(lài)以下2個(gè)服務(wù),如果復(fù)制服務(wù)異常,可對(duì)其進(jìn)行重啟: $ 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 同步復(fù)制部署案例

下面是Slony-I 的安裝配置簡(jiǎn)明指南,實(shí)現(xiàn)主副數(shù)據(jù)庫(kù)的同步:

1)實(shí)驗(yàn):主、副數(shù)據(jù)庫(kù)服務(wù)器配置

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, 確保超級(jí)用戶(hù)是postgres,數(shù)據(jù)庫(kù)名是URT。檢查M_DB和S_DB上的超級(jí)用戶(hù)postgres是否可以訪問(wèn)對(duì)方的機(jī)器,分別在M_DB和S_DB上執(zhí)行以下命令,M_DB和S_DB上的URT數(shù)據(jù)庫(kù)里創(chuàng)建相同的表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

Slony Config,創(chuàng)建urt_replica_init.sh文件:

#!/bin/shSLONIK=/home/y/pgsql/bin/slonik#slonik可執(zhí)行文件位置CLUSTER=URT#你的集群的名稱(chēng)SET_ID=1#你的復(fù)制集的名稱(chēng)MASTER=1#主服務(wù)器IDHOST1=M_DB#源庫(kù)IP或主機(jī)名DBNAME1=URT#需要復(fù)制的源數(shù)據(jù)庫(kù)SLONY_USER=postgres#源庫(kù)數(shù)據(jù)庫(kù)超級(jí)用戶(hù)名SLAVE=2#從服務(wù)器IDHOST2=S_DB#目的庫(kù)IP或主機(jī)名DBNAME2=URT#需要復(fù)制的目的數(shù)據(jù)庫(kù)PGBENCH_USER=postgres#目的庫(kù)用戶(hù)名$SLONIK <<_EOF_#這句是定義集群名cluster name = $CLUSTER;#這兩句是定義復(fù)制節(jié)點(diǎn)node $MASTER admin conninfo = "dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER ";node $SLAVE admin conninfo = "dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER ";#初始化集群和主節(jié)點(diǎn),id從1開(kāi)始,如果只有一個(gè)集群,那么肯定是1#comment里可以寫(xiě)一些自己的注釋?zhuān)S意init cluster ( id = $MASTER, comment = "Primary Node" );#下面是從節(jié)點(diǎn)store node ( id = $SLAVE, comment = "Slave Node" );#配置主從兩個(gè)節(jié)點(diǎn)的連接信息,就是告訴Slave服務(wù)器如何來(lái)訪問(wèn)Master服務(wù)器#下面是主節(jié)點(diǎn)的連接參數(shù)store path ( server = $MASTER, client = $SLAVE,conninfo = "dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER ");#下面是從節(jié)點(diǎn)的連接參數(shù)store path ( server = $SLAVE, client = $MASTER,conninfo = "dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER ");#設(shè)置復(fù)制中角色,主節(jié)點(diǎn)是原始提供者,從節(jié)點(diǎn)是接受者store listen ( origin = $MASTER, provider = 1, receiver = 2 );store listen ( origin = $SLAVE, provider = 2, receiver = 1 );#創(chuàng)建一個(gè)復(fù)制集,id也是從1開(kāi)始create set ( id = $SET_ID, origin = $MASTER, comment = "All pgbench tables" );#向自己的復(fù)制集種添加表,每個(gè)需要復(fù)制的表添加一條set命令,id從1開(kāi)始,逐次遞加,步進(jìn)為1;#fully qualified name是表的全稱(chēng):模式名.表名#這里的復(fù)制集id需要和前面創(chuàng)建的復(fù)制集id一致set add table ( set id = $SET_ID, origin = $MASTER,id = 1, fully qualified name = "public.accounts",comment = "Table accounts" );

4)啟動(dòng)同步復(fù)制:

./urt_replica_init.sh //在M_DB或者S_DB上執(zhí)行

5)啟動(dòng)slony 創(chuàng)建Master.slon文件: ######################## cluster_name=“URT” conn_info=“dbname=URT host=M_DB user=postgres” ########################

創(chuàng)建Slave.slon文件: ######################## cluster_name=“URT” conn_info=“dbname=URT host=S_DB user=postgres” ########################

#在M_DB上執(zhí)行 /home/y/pgsql/bin/slon -f master.slon >> master.log &

#在S_DB上執(zhí)行 /home/y/pgsql/bin/slon -f slave.slon >> slave.log & 6)配置slony發(fā)布服務(wù)器 創(chuàng)建urt_replica_subscribe.sh文件:

#!/bin/shSLONIK=/home/y/pgsql/bin/slonik#slonik可執(zhí)行文件位置CLUSTER=URT#你的集群的名稱(chēng)SET_ID=1#你的復(fù)制集的名稱(chēng)MASTER=1#主服務(wù)器IDHOST1=M_DB#源庫(kù)IP或主機(jī)名DBNAME1=URT#需要復(fù)制的源數(shù)據(jù)庫(kù)SLONY_USER=postgres#源庫(kù)數(shù)據(jù)庫(kù)超級(jí)用戶(hù)名SLAVE=2#從服務(wù)器IDHOST2=S_DB#目的庫(kù)IP或主機(jī)名DBNAME2=URT#需要復(fù)制的目的數(shù)據(jù)庫(kù)PGBENCH_USER=postgres#目的庫(kù)用戶(hù)名$SLONIK <<_EOF_#這句是定義集群名cluster name = $CLUSTER;#這兩句是定義復(fù)制節(jié)點(diǎn)node $MASTER admin conninfo = "dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER";node $SLAVE admin conninfo = "dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER ";#提交復(fù)制集subscribe set ( id = $SET_ID, provider = $MASTER, receiver = $SLAVE, forward = no);

#在M_DB或者S_DB上執(zhí)行:./urt_replica_subscribe.sh 7)驗(yàn)證: 修改M_DB上URT數(shù)據(jù)里的accounts表,S_DB上的accounts表也會(huì)隨之改變。

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 三门县| 如东县| 焦作市| 泌阳县| 鹿邑县| 青龙| 临洮县| 凤凰县| 名山县| 南木林县| 白沙| 通渭县| 汉寿县| 兖州市| 札达县| 乐山市| 嘉鱼县| 龙胜| 城固县| 五河县| 东乌| 天津市| 荣成市| 开平市| 南皮县| 大理市| 滦南县| 电白县| 南阳市| 和平县| 宜君县| 建阳市| 滦南县| 罗城| 宜城市| 元氏县| 开封市| 苗栗县| 庄河市| 龙门县| 泾川县|