国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

使用Bucardo5實現(xiàn)PostgreSQL的主數(shù)據(jù)庫復制

2020-10-29 21:49:53
字體:
來源:轉載
供稿:網(wǎng)友

下一代異步多個主數(shù)據(jù)庫復制系統(tǒng)Bucardo 5發(fā)布了。這個版本刪除了老版本中兩個數(shù)據(jù)庫源的限制,允許有更多的源數(shù)據(jù)庫(即主數(shù)據(jù)庫)以及更多的目標數(shù)據(jù)庫(即備份數(shù)據(jù)庫)。Bucardo還可以復制到其他類型的目標數(shù)據(jù)庫,其中包括MySQL、MariaDB、Oracle、SQLite、MongoDB和Redis。Bucardo已經(jīng)被完全重寫了,這個版本比前一版本Bucardo 4功能更強大,效率更高。你可以訪問Bucardo wiki查找最新版本的Bucardo。

這篇文章快速的介紹了一下Bucardo。以后的博客文章將會介紹Bucardo的強大功能,現(xiàn)在我們將介紹如何簡單地實現(xiàn)多主數(shù)據(jù)庫復制。


為了演示方便,我使用了亞馬遜Web服務(AWS)提供的可快速創(chuàng)建、隨意使用的服務器,即運行Amazon Linux的基本t1.micro服務器。如果你按照提示繼續(xù)的話,它將免費而且簡單地給你創(chuàng)建一個服務器實例。一旦實例創(chuàng)建成功,我們就可以使用ec2-user賬戶通過SSH協(xié)議登陸到服務器,這時就可以開始安裝PostgreSQL和Bucardo了。
 

# Always a good idea:$ sudo yum update# This also installs other postgresql packages:$ sudo yum install postgresql-plperl# Create a new Postgres cluster:$ initdb btest

此時,我們仍然不能期待哦你個PostgreSQL,因為這個發(fā)布版的socket通信目錄使用的是/var/run/postgresql和/tmp。我們調整了第一個目錄的權限后就可以啟動PostgreSQL了,然后創(chuàng)建第一個測試數(shù)據(jù)庫:
 

$ sudo chmod 777 /var/run/postgresql$ pg_ctl -D btest -l logfile start$ createdb shake1


接下來我們就可以進行數(shù)據(jù)庫復制了!為了得到樣例數(shù)據(jù),我使用了開放源代碼的Shakespeare項目。它有一個易于裝載的小型的、可任意使用的、簡單的數(shù)據(jù)庫模式。github上的這個小型項目就包含了一個現(xiàn)成的PostgreSQL數(shù)據(jù)庫模式,現(xiàn)在我們將可以把它裝載到新的數(shù)據(jù)庫了:
 

$ sudo yum install git$ git clone -q https://github.com/catherinedevlin/opensourceshakespeare.git$ psql shake1 -q -f opensourceshakespeare/shakespeare.sql# You can safely ignore the 'role does not exist' errors

我們打算創(chuàng)建這個數(shù)據(jù)庫的副本,這些副本可被當作其他數(shù)據(jù)源。換個說法,這些服務器擁有相同的數(shù)據(jù)而且可以寫入。實現(xiàn)這些非常簡單:
 

$ createdb shake2 -T shake1$ createdb shake3 -T shake1

Bucardo需要安裝一些依賴包。如果你安裝的操作系統(tǒng)發(fā)布不同,那么你可能要安裝的依賴包就不同:下面是我寫這篇文章的時候Amazon Linux需要安裝的依賴包。(如果幸運的話,你的發(fā)布包可能已經(jīng)包含了Bucardo,在這種情況下,下面的執(zhí)行步驟就不需要執(zhí)行了,你只要運行"yum install bucard"就可以了-不過要確定一下你使用的是版本5或者更好的版本!(通過yum info bucardo查看))
 

$ sudo yum install perl-ExtUtils-MakeMaker perl-DBD-Pg /> perl-Encode-Locale perl-Sys-Syslog perl-boolean /> perl-Time-HiRes perl-Test-Simple perl-Pod-Parser$ sudo yum install cpan$ echo y | cpan DBIx::Safe


在這個系統(tǒng)的yum軟件倉庫里不包含Perl模塊DBIx::Safe,因此我們需要通過CPAN來安裝這個模塊。一旦上面的所有依賴都安裝成功,這時我們就準備安裝Bucardo。我們將獲取官方壓縮包,驗證、解壓,接著安裝:
 

$ wget -nv http://bucardo.org/Bucardo.tar.gz$ wget -nv http://bucardo.org/Bucardo.tar.gz.asc$ gpg -q --keyserver pgp.mit.edu --recv-key 14964AC8$ gpg --verify Bucardo.tar.gz.asc$ tar xfz Bucardo.tar.gz $ ln -s Bucardo-5.0.0 bucardo$ cd bucardo$ perl Makefile.PL$ make$ sudo make install

我們對bucardorc文件(設置某些全局信息的文件)進行某些小的調整。然后運行"bucardo install",這條命令將創(chuàng)建bucardo的主數(shù)據(jù)庫,其中包含Bucardo服務進程所需的信息:
 

$ mkdir pid$ echo -e "piddir=pid/nlogdest=." > .bucardorc$ bucardo install --batch --quietCreating superuser 'bucardo'


現(xiàn)在已經(jīng)安裝好Bucardo,接下來就準備復制了。此時,我們有了三個可以彼此復制的數(shù)據(jù)庫。下面我們只使用了兩條命令就可以實現(xiàn)三數(shù)據(jù)庫彼此復制:
 

 bucardo add dbs s1,s2,s3 dbname=shake1,shake2,shake3Added databases "s1","s2","s3"$ bucardo add sync bard dbs=s1:source,s2:source,s3:source tables=allAdded sync "bard"Created a new relgroup named "bard"Created a new dbgroup named "bard" Added table "public.chapter" Added table "public.character" Added table "public.character_work" Added table "public.paragraph" Added table "public.wordform" Added table "public.work"

第一條命令,我們告訴Bucardo如何連接到三個數(shù)據(jù)庫,我們告訴Bucardo數(shù)據(jù)庫的名字,然后Bucardo把這三個數(shù)據(jù)庫看作(s1,s2,s3)。你還可以指定端口和主機,不過在這個例子里,默認的端口為5432,而且不需要主機(采用的是Unix Socket通信機制)。


第二條命令創(chuàng)建了一個已命名的復制系統(tǒng),其sync名稱為bard。Bucardo需要知道復制到哪兒和如何復制,因此我們告訴它使用三個數(shù)據(jù)庫s1,s2和s3。每一個數(shù)據(jù)庫都可以作為源數(shù)據(jù)庫,因此我們給它們添加了這樣的信息。最后我們需要知道要復制什么。在這個例子里,我們需要復制的是所有表(或者更精確點,復制具有主鍵或者唯一索引的所有數(shù)據(jù)庫)。注意: Bucardo總是把數(shù)據(jù)庫和表放在命名組里-在這個例子里我們只是硬編碼其為10,然而通常這個值是表格視圖控制器數(shù)組的長度。現(xiàn)在例子里,這一切都是自動進行的,dbgroup和relgroup都是以sync的名字命名的。

我們驗證一下復制是否運行,即檢查一下更新行是否復制到sync里包含的所有數(shù)據(jù)庫了:
 

$ bucardo start$ psql shake1 -c /> "update character set speechcount=123 where charname='Hamlet'"UPDATE 1$ for i in {1,2,3}; do psql shake$i -tc "select /> current_database(), speechcount from character /> where charname='Hamlet'"; done | grep s shake1    |   123 shake2    |   123 shake3    |   123

我們還可以查看Bucardo的日志文件"log.bucardo",看看是否有復制操作:
 

$ tail -2 log.bucardo(25181) KID (bard) Delta count for s1.public."character": 1(25181) KID (bard) Totals: deletes=2 inserts=2 conflicts=0


上面出現(xiàn)了兩條delete和兩條insert命令,這是因為更新一行意味著在其他兩個數(shù)據(jù)庫上首先運行的是delete,然后才運行insert(技術上采用的COPY)。接下來我們看看Bucardo是怎么處理沖突的。我們將對所有服務器上的同一行進行更新,這樣就會產(chǎn)生沖突:
 

$ for i in {1,2,3}; do psql shake$i -tc /> "update character set speechcount=$i$i$i /> where charname='Hamlet'"; doneUPDATE 1UPDATE 1UPDATE 1

查看日志表明確實存在沖突,而且也很好的解決了沖突。默認的沖突解決方案表明:最后一個更新的數(shù)據(jù)庫是獲勝者,現(xiàn)在所有三個數(shù)據(jù)庫具有與最后一個更新數(shù)據(jù)庫相同的行。
 

$ tail log.bucardo(25181) KID (bard) Delta count for s1.public."character": 1(25181) KID (bard) Delta count for s2.public."character": 1(25181) KID (bard) Delta count for s3.public."character": 1(25181) KID (bard) Conflicts for public."character": 1(25181) KID (bard) Conflicts have been resolved(25181) KID (bard) Totals: deletes=2 inserts=2 conflicts=1 $ for i in {1,2,3}; do psql shake$i -tc /> "select current_database(), speechcount /> from character where charname='Hamlet'"; done | grep s shake1    |   333 shake2    |   333 shake3    |   333

我們開發(fā)這個示例的時候,Bucardo有時運行的非常快,所以沒有發(fā)生沖突。也就是說,因為更新時順序執(zhí)行的。所以在下一個更新之前,存在一個時間窗口可以讓Bucardo完成更新的復制。另外,“暫停sync"功能也非常方便,只要在你需要暫時停止運行sync的情況下,運行下面命令即可:
 

$ bucardo pause bardSyncs paused: bard$ psql shake1 -c "update character set speechcount=1234 where charname='Hamlet'"UPDATE 1$ psql shake2 -c "update character set speechcount=4321 where charname='Hamlet'"UPDATE 1$ bucardo resume bardSyncs resumed: bard $ tail log.bucardo(27344) KID (bard) Delta count for s1.public."character": 1(27344) KID (bard) Delta count for s2.public."character": 1(27344) KID (bard) Conflicts for public."character": 1(27344) KID (bard) Conflicts have been resolved(27344) KID (bard) Totals: deletes=2 inserts=2 conflicts=1


Bucardo 5比我們在這兒演示的功能多很多。以后的博客文章里我們將包含它可以完成的其他功能,從復制到比如Oracle、Mysql或者MongoDB等非PostgreSQL系統(tǒng)到使用自定義的沖突解決方案。以及復制時對正在運行的數(shù)據(jù)實行轉換。如果你有任何問題,請在下面的評論里說明,或者寫一封短信給Bucardo郵件列表bucardo-general@bucardo.org。

這么多年,如果沒有許多人貢獻代碼、提出漏洞、測試Bucardo以及詢問(或者回答!)重大問題,就不可能有這個重大版本的發(fā)布。查看 Changes文件,你就可以看到部分貢獻者的列表。謝謝你們所有人,特別感謝Jon Jensen,是他在很久之前就開啟了這個項目。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
精品av中文字幕在线毛片| 九九热视频精品在线观看| 蜜桃av网站| 青青草原av在线| 久久久久久日本一区99| 最近中文字幕mv免费高清视频8| 免费黄色网页在线观看| 国产女人在线观看| 丁香花在线电影| 国产二级片在线| 免费在线观看a| 国产精品入口麻豆免费观看| 精品一区二区三区在线观看l| 精品一二三四| 超碰免费在线播放| 91av福利| 成在线人视频免费视频| 国产不卡在线| 国产免费永久在线观看| 97影院理论午夜| 国产精品一区二区三区高清在线 | 免费看ww视频网站入口| 中文字幕在线免费看| 精品国产美女福利到在线不卡| 免费看的av| 在线观看免费高清完整| 国产亚洲依依| 中文字幕在线观看av| 久久综合第一页| 亚洲视频精品在线观看| 精品全国在线一区二区| 国产麻豆精品入口在线观看| sese在线视频| 午夜小视频在线| 2019中文字幕视频| 中文字幕免费在线视频| 最好2018中文免费视频| 国产一级二级在线| 国产精品美女视频免费观看软件| 国产理论片免费观看| 麻豆精品不卡国产免费看| 亚洲人成电影| av中文字幕在线看| 美女国产在线| 国产乱人视频免费播放| 国产免费自拍视频| 最新中文字幕在线| 国产精品久久在线| av天天在线| 亚洲videos| 欧美午夜电影一区二区三区| 欧美在线中文| 国产网红在线| 精品国产高清自在线一区二区三区| 国产精品白浆视频免费观看| 国产精品秘入口| 永久免费网站在线| 免费看黄视频网站| 中文字幕国产视频| 91黄色在线| 免费精品国产自产拍观看| 国产在线中文字幕| 精品偷拍激情视频在线观看| 亚洲视频精品在线观看| 永久免费网站在线| 美女av在线播放| 国产精品剧情一区二区三区| 一区二区三区四区在线免费视频| 日本综合一区二区三区| 国产精品一区牛牛影视| 91麻豆福利| 国产免费人人看| 在线视频中文字幕久| 国产美女极品在线| 在线三级av| 国产日本视频| 麻豆精品不卡国产免费看| 92国产在线视频| 五月婷婷视频在线观看| 999国产在线视频| 国产美女一区视频| 日本不卡影院| 亚洲第一成年免费网站| 国产精品久久久久久精| 最近免费中文字幕在线第一页| 青青草原av在线| www.蜜桃av| 夜夜爽视频导航| 精品一二三区视频| 国产人成在线视频| 国产日韩欧美一区二区三区视频| 国产在线色视频| 丁香六月婷婷| 尤物网站在线| 91sp网站在线观看入口| 成人欧美日韩| 天堂资源最新版在线视频观看免费网| 麻豆视频国产| 国产麻豆综合视频在线观看| 免费国产视频| 免费看的av| 免费男女羞羞的视频网站中文字幕| 羞羞视频在线免费看| 在线国产一级| 任你操在线观看| 免费电影网站在线视频观看福利| www.操操操| 超碰免费97在线观看| 欧美婷婷久久五月精品三区| 亚洲а∨精品天堂在线| 日本电影全部在线观看网站视频| h网址在线观看| 超碰在线网址| 国产一区二区影视| 92久久精品| 亚洲精品国自产拍在线观看| av在线1区2区| 好看的中文字幕在线播放| 天天操天天操一操| 91欧美在线视频| 青青久草在线| 国产对白叫床清晰在线播放| 伊人网在线视频| 久久一本精品| 五月婷婷丁香激情| 亚洲综合在线网| 日本中文字幕高清视频| 2019天天操夜夜操| 免费一区二区三区视频狠狠| 国产精品国产国产aⅴ| www黄在线观看| 国产区卡一卡二卡三乱码免费| eeuss在线观看| 国产区视频在线| 亚洲精品乱码电影在线观看| 国产激情视频在线| 亚洲an天堂an在线观看| 五月亚洲综合| av中文天堂在线| 国产一区二区在线|播放| 伊人狠狠av| 国产香蕉视频在线看| 尤物在线精品视频| 天堂在线中文| 国产成人精品18| 国产精品一区在线看| 亚洲精品国自产拍在线观看| 国产夫妻视频| 午夜视频99| 成人超碰在线| 人人干人人插| 亚洲视频日韩| 伊人影院在线播放| 136福利第一导航国产在线| 国产乱精品一区二区三区| av在线免费播放网站| 在线黄色av| 在线观看av网站永久| 国产精品久久一区二区三区不卡| 国自产拍在线网站网址视频| av中文字幕在线看| 四虎国产精品永久| 欧美日韩**字幕一区| 青青草原国产在线| 久久久久久久久免费视频| 在线视频三级| av中文资源在线| 欧美性猛交xxxx免费看蜜桃 | 中文字幕毛片| 88av在线| 国产变态拳头交视频一区二区| 中文字幕一区二区三区免费视频| 国产麻豆精品入口在线观看| 国产理论在线观看| 国产精美视频| 国产精品麻豆一区二区三区 | а√资源新版在线天堂| 2021天堂中文幕一二区在线观| 1区2区3区在线| 国产日韩网站| 亚洲欧美小说国产图片| 青青草免费观看免费视频在线| 男人天堂网在线观看| 最新av中文字幕| 夜夜爽夜夜操| 中文字幕第一页av| 日韩a视频在线观看| 最好看更新中文字幕| √天堂资源中文www| 麻豆精品不卡国产免费看| 1区不卡电影| 四虎a级欧美在线观看| 国产精品一区二区三区四区色| √天堂中文在线| eeuss影院www在线观看| 国产图片综合| 国产美女在线播放| 天天插天天操| 97最新国自产拍视频在线完整在线看 | 九九热免费在线视频|