<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              Slony到底是什么?關于VMware Desktone中的Slony和數據庫

              來源:CSDN 時間:2022-12-12 08:45:47

              【場景】

              最近接手運維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=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.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還依賴以下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

              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表也會隨之改變。

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩