好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 使用Bucardo5實現PostgreSQL的主數據庫復制

使用Bucardo5實現PostgreSQL的主數據庫復制

熱門標簽:怎么去開發一個電銷機器人 簡單的智能語音電銷機器人 河北便宜電銷機器人軟件 泗洪正規電話機器人找哪家 湖南保險智能外呼系統產品介紹 ai電話電話機器人 怎么申請400熱線電話 小程序智能電話機器人 南昌呼叫中心外呼系統哪家好

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

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


為了演示方便,我使用了亞馬遜Web服務(AWS)提供的可快速創建、隨意使用的服務器,即運行Amazon Linux的基本t1.micro服務器。如果你按照提示繼續的話,它將免費而且簡單地給你創建一個服務器實例。一旦實例創建成功,我們就可以使用ec2-user賬戶通過SSH協議登陸到服務器,這時就可以開始安裝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,因為這個發布版的socket通信目錄使用的是/var/run/postgresql和/tmp。我們調整了第一個目錄的權限后就可以啟動PostgreSQL了,然后創建第一個測試數據庫:
 

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


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

$ 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

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

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

Bucardo需要安裝一些依賴包。如果你安裝的操作系統發布不同,那么你可能要安裝的依賴包就不同:下面是我寫這篇文章的時候Amazon Linux需要安裝的依賴包。(如果幸運的話,你的發布包可能已經包含了Bucardo,在這種情況下,下面的執行步驟就不需要執行了,你只要運行"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


在這個系統的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",這條命令將創建bucardo的主數據庫,其中包含Bucardo服務進程所需的信息:
 

$ mkdir pid
$ echo -e "piddir=pid\nlogdest=." > .bucardorc
$ bucardo install --batch --quiet
Creating superuser 'bucardo'


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

 bucardo add dbs s1,s2,s3 dbname=shake1,shake2,shake3
Added databases "s1","s2","s3"
$ bucardo add sync bard dbs=s1:source,s2:source,s3:source tables=all
Added 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如何連接到三個數據庫,我們告訴Bucardo數據庫的名字,然后Bucardo把這三個數據庫看作(s1,s2,s3)。你還可以指定端口和主機,不過在這個例子里,默認的端口為5432,而且不需要主機(采用的是Unix Socket通信機制)。


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

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

$ 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


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

$ for i in {1,2,3}; do psql shake$i -tc \

> "update character set speechcount=$i$i$i \

> where charname='Hamlet'"; done
UPDATE 1
UPDATE 1
UPDATE 1

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

$ 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

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

$ bucardo pause bard
Syncs 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 bard
Syncs 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系統到使用自定義的沖突解決方案。以及復制時對正在運行的數據實行轉換。如果你有任何問題,請在下面的評論里說明,或者寫一封短信給Bucardo郵件列表bucardo-general@bucardo.org。

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

您可能感興趣的文章:
  • PostgreSQL中Slony-I同步復制部署教程
  • Windows下Postgresql數據庫的下載與配置方法
  • Windows下PostgreSQL安裝圖解
  • 15個postgresql數據庫實用命令分享
  • PostgreSQL 安裝和簡單使用
  • PostgreSQL 數據庫性能提升的幾個方面
  • PostgreSQL新手入門教程
  • Postgresql主從異步流復制方案的深入探究

標簽:威海 景德鎮 淮安 瀘州 那曲 柳州 江蘇 荊門

巨人網絡通訊聲明:本文標題《使用Bucardo5實現PostgreSQL的主數據庫復制》,本文關鍵詞  使用,Bucardo5,實現,PostgreSQL,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Bucardo5實現PostgreSQL的主數據庫復制》相關的同類信息!
  • 本頁收集關于使用Bucardo5實現PostgreSQL的主數據庫復制的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲乱熟女综合一区二区三区| 水蜜桃久久久久久| 永济市| 日本xxxxx高清视频| 国产足浴漂亮丰满技师AV | 嫂子5| 91性中国毛片???潮喷| 麻豆+无码+国产在线观看| 天天干精品| 一级免费视频| 男人插女人逼视频| 贵妇好紧?好大?沈青| 喷射蜜汁水线| 欧美第3页| 12孩岁女精品A片一区二区| 催眠狠狠挺进娇小h小舞| 韩国在线影院| 色cccwww在线播放| 99精品少妇免费一区二区刘豆豆| jiZZ18女人高潮zzji| 国产?浪潮AV性色Av按摩| 成人国产精品视频频| 色老板女色狠xx网| 女人裸露双乳给男人喂奶| 日本剧情片免费观看app| 黄网站在线观看视频| 一级女性全黄A片色情女狼| 我和老丈同性性经历小说| 伊人任线任你躁| 人妻互换共享4P闺蜜疯狂互换| 午夜精品久久久久久久99热精东| 亚洲人成依人成综合网| 妇欲性难耐BD在线观看| 王爷好爽?好紧?宝贝H| 中文字幕乱码中文字乱码怎么解决| 国产精品伦视频观看免费| 小雪早被伴郎摸湿出水了| 美女爆?吸乳羞羞免费网站妖精| 免费?无码?国产在线电影| 性猛交XXXX乱女少妇A片| 韩国一级毛片大全女教师|