postgres數(shù)據(jù)庫(kù)有幾種同步機(jī)制

瀏覽:116 發(fā)布日期:2023-10-12 00:00:00 投稿人:佚名投稿

1、數(shù)據(jù)庫(kù),增量同步和全量同步是什么?

數(shù)據(jù)如果保留多份,就會(huì)存在一致性問(wèn)題,就需要同步,同步分為兩大類:全量和增量
2. 概述
數(shù)據(jù)如果要保留副本,要么同時(shí)寫(就是多寫),或者進(jìn)行復(fù)制:異步寫(即從主數(shù)據(jù)拷貝到副本);
同時(shí)寫(多寫),引出一個(gè)問(wèn)題,寫多少節(jié)點(diǎn)算成功(場(chǎng)景:分布式系統(tǒng))?全部寫成功才算成功,還是寫大多數(shù)成功算成功,還是寫指定幾個(gè)節(jié)點(diǎn)算成功?
異步寫的話,如果采用異步復(fù)制,那么實(shí)時(shí)性需要考量的話,就需要采用性能優(yōu)先的架構(gòu)。
3.同步方式
數(shù)據(jù)同步一般分為兩種方式:全量和增量。
3.1 全量
全量,這個(gè)很好理解。就是每天定時(shí)或者周期性全量把數(shù)據(jù)從一個(gè)地方拷貝到另外一個(gè)地方;
全量的話,可以采用直接全部覆蓋(使用“新”數(shù)據(jù)覆蓋“舊”數(shù)據(jù));或者走更新邏輯(覆蓋前判斷下,如果新舊不一致,就更新);
這里面有一個(gè)隱藏的問(wèn)題:如果采用異步寫,主數(shù)據(jù)物理刪除了,怎么直接通過(guò)全量數(shù)據(jù)同步?這就需要借助一些中間操作日志文件,或者其他手段,把這些“看不到”的數(shù)據(jù)記錄起來(lái)。
3.2 增量(類如有;堅(jiān)果云網(wǎng)盤增量同步功能)
增量的基礎(chǔ)是全量,就是你要使用某種方式先把全量數(shù)據(jù)拷貝過(guò)來(lái),然后再采用增量方式同步更新。
增量的話,就是指抓取某個(gè)時(shí)刻(更新時(shí)間)或者檢查點(diǎn)(checkpoint)以后的數(shù)據(jù)來(lái)同步,不是無(wú)規(guī)律的全量同步。這里引入一個(gè)關(guān)鍵性的前提:副本一端要記錄或者知道(通過(guò)查詢更新日志或者訂閱更新)哪些更新了。 全量備份是指對(duì)某一時(shí)間點(diǎn)上的所有數(shù)據(jù)進(jìn)行全量備份,包括系統(tǒng)和所有數(shù)據(jù)。這種備份方式每次都需要對(duì)系統(tǒng)和所有數(shù)據(jù)進(jìn)行一次全量備份。如上,如果兩次備份之間數(shù)據(jù)沒(méi)有任何變化,那么兩次備份的數(shù)據(jù)是一樣的。也就是說(shuō)100GB的數(shù)據(jù)即使沒(méi)有發(fā)生任何數(shù)據(jù)變化,也會(huì)多耗費(fèi)100GB的存儲(chǔ)空間去做備份。但這種備份方式最大的好處就是在恢復(fù)丟失數(shù)據(jù)時(shí),只需要對(duì)一個(gè)完整的備份進(jìn)行操作就能夠恢復(fù)丟失數(shù)據(jù),大大加快了系統(tǒng)或數(shù)據(jù)恢復(fù)的時(shí)間。
增量備份即在第一次全量備份的基礎(chǔ)上,分別記錄每次的變化。由于增量備份在備份前會(huì)判斷數(shù)據(jù)是否發(fā)生變化,并僅記錄每次變化情況,所以相較于其他兩種備份方式它最大的好處在于其所需存儲(chǔ)空間最少的(相同的變化情況下),備份速度最快的。當(dāng)然在數(shù)據(jù)還原上來(lái)說(shuō),它的恢復(fù)時(shí)間是最長(zhǎng)的,效率較低。恢復(fù)數(shù)據(jù)時(shí),需要在第一次完備的基礎(chǔ)上,整合每次的一個(gè)變化情況。

增量同步和全量同步是數(shù)據(jù)庫(kù)同步的兩種方式。全量同步是一次性同步全部數(shù)據(jù),增量同步則只同步兩個(gè)數(shù)據(jù)庫(kù)不同的部分。

2、如何實(shí)現(xiàn)同步兩個(gè)服務(wù)器的數(shù)據(jù)庫(kù)

這個(gè)要根據(jù)不同情況具體分析,有幾種方案參考:
數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B是建立在兩臺(tái)獨(dú)立的數(shù)據(jù)庫(kù)服務(wù)器上,那么采用dblink方式是一種可行的方式,存在兩個(gè)數(shù)據(jù)同步過(guò)程:
一、數(shù)據(jù)庫(kù)A正常運(yùn)行的時(shí)候需要將數(shù)據(jù)同步到備用庫(kù)即數(shù)據(jù)庫(kù)B;
二、數(shù)據(jù)庫(kù)A不正常的時(shí)候啟用數(shù)據(jù)庫(kù)B,在數(shù)據(jù)庫(kù)A恢復(fù)正常之前的數(shù)據(jù)更新都發(fā)生在數(shù)據(jù)庫(kù)B,那么需要將數(shù)據(jù)庫(kù)B的數(shù)據(jù)同步給數(shù)據(jù)庫(kù)A。
第一種方式:前提是數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B本地網(wǎng)是24小時(shí)互通的同時(shí)對(duì)數(shù)據(jù)同步實(shí)時(shí)性有比較高的要求,那么可以建立DBLINK,在兩個(gè)庫(kù)都建觸發(fā)器,不管當(dāng)前在哪個(gè)庫(kù)發(fā)生數(shù)據(jù)更新的時(shí)候?qū)崟r(shí)同步數(shù)據(jù)到目標(biāo)數(shù)據(jù)庫(kù);
第二種方式:如果數(shù)據(jù)同步的實(shí)時(shí)性要求不高,則可以通過(guò)定制存儲(chǔ)過(guò)程的方式(給兩個(gè)庫(kù)的數(shù)據(jù)表加時(shí)間戳或者更新標(biāo)志,)定時(shí)同步數(shù)據(jù);
第三種方式:通過(guò)給兩個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)表加更新標(biāo)志字段,以第一種方式為主以滿足實(shí)時(shí)性的要求,以第二種方式為輔彌補(bǔ)可能存在的觸發(fā)器執(zhí)行更新未成功的情況。
以上的方案都是從數(shù)據(jù)層面所做的處理,對(duì)于數(shù)據(jù)實(shí)時(shí)同步還是會(huì)存在一定的風(fēng)險(xiǎn),那么雙機(jī)熱備應(yīng)該說(shuō)是最好的選擇了。

3、數(shù)據(jù)庫(kù)怎么實(shí)現(xiàn)數(shù)據(jù)同步

不同服務(wù)器數(shù)據(jù)庫(kù)之間的數(shù)據(jù)操作 --創(chuàng)建鏈接服務(wù)器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '遠(yuǎn)程服務(wù)器名或ip地址 'exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用戶名 ', '密碼'--查詢示例 select*from ITSV.數(shù)據(jù)庫(kù)名.dbo.表名 --導(dǎo)入示例 select*into 表from ITSV.數(shù)據(jù)庫(kù)名.dbo.表名 --以后不再使用時(shí)刪除鏈接服務(wù)器 exec sp_dropserver 'ITSV ', 'droplogins '--連接遠(yuǎn)程/局域網(wǎng)數(shù)據(jù)(openrowset/openquery/opendatasource) --1、openrowset --查詢示例 select*fromopenrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼',數(shù)據(jù)庫(kù)名.dbo.表名) --生成本地表 select*into 表fromopenrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼',數(shù)據(jù)庫(kù)名.dbo.表名) --把本地表導(dǎo)入遠(yuǎn)程表 insertopenrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼',數(shù)據(jù)庫(kù)名.dbo.表名) select*from 本地表 --更新本地表 update b set b.列A=a.列A fromopenrowset( 'SQLOLEDB ', 'sql服務(wù)器名 '; '用戶名 '; '密碼',數(shù)據(jù)庫(kù)名.dbo.表名)as a innerjoin 本地表 b on a.column1=b.column1 --openquery用法需要?jiǎng)?chuàng)建一個(gè)連接 --首先創(chuàng)建一個(gè)連接創(chuàng)建鏈接服務(wù)器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '遠(yuǎn)程服務(wù)器名或ip地址 '--查詢select*FROMopenquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫(kù).dbo.表名 ') --把本地表導(dǎo)入遠(yuǎn)程表 insertopenquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫(kù).dbo.表名 ') select*from 本地表 --更新本地表 update b set b.列B=a.列B FROMopenquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫(kù).dbo.表名 ') as a innerjoin 本地表 b on a.列A=b.列A --3、opendatasource/openrowset SELECT*FROMopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ' ).test.dbo.roy_ta --把本地表導(dǎo)入遠(yuǎn)程表 insertopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ').數(shù)據(jù)庫(kù).dbo.表名 select*fromSQL code 用強(qiáng)制訂閱實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步操作 大量和批量的數(shù)據(jù)可以用數(shù)據(jù)庫(kù)的同步機(jī)制處理: // 說(shuō)明:為方便操作,所有操作均在發(fā)布服務(wù)器(分發(fā)服務(wù)器)上操作,并使用推模式在客戶機(jī)器使用強(qiáng)制訂閱方式。 有疑問(wèn)聯(lián)系作者:zlp321001@hotmail.com 測(cè)試通過(guò) //--1:環(huán)境服務(wù)器環(huán)境: 機(jī)器名稱: ZehuaDb 操作系統(tǒng):Windows 2000 Server 數(shù)據(jù)庫(kù)版本:SQL 2000 Server 個(gè)人版 客戶端機(jī)器名稱:Zlp 操作系統(tǒng):Windows 2000 Server 數(shù)據(jù)庫(kù)版本:SQL 2000 Server 個(gè)人版 --2:建用戶帳號(hào)在服務(wù)器端建立域用戶帳號(hào)我的電腦管理->本地用戶和組->用戶->建立UserName:zlp UserPwd:zlp --3:重新啟動(dòng)服務(wù)器MSSQLServer我的電腦->控制面版->管理工具->服務(wù)->MSSQLServer 服務(wù) (更改為:域用戶帳號(hào),我們新建的zlp用戶 ./zlp,密碼:zlp) --4:安裝分發(fā)服務(wù)器A:配置分發(fā)服務(wù)器工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->下一步->下一步(所有的均采用默認(rèn)配置) B:配置發(fā)布服務(wù)器工具->復(fù)制->創(chuàng)建和管理發(fā)布->選擇要發(fā)布的數(shù)據(jù)庫(kù)(SZ)->下一步->快照發(fā)布->下一步-> 選擇要發(fā)布的內(nèi)容->下一步->下一步->下一步->完成C:強(qiáng)制配置訂閱服務(wù)器(推模式,拉模式與此雷同) 工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->訂閱服務(wù)器->新建->SQL Server數(shù)據(jù)庫(kù)->輸入客戶端服務(wù)器名稱(ZLP)->使用SQL Server 身份驗(yàn)證(sa,空密碼)->確定->應(yīng)用->確定D:初始化訂閱復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->雙擊訂閱->強(qiáng)制新建->下一步->選擇啟用的訂閱服務(wù)器->ZLP-> 下一步->下一步->下一步->下一步->完成--5:測(cè)試配置是否成功復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->雙擊SZ:SZ->點(diǎn)狀態(tài)->點(diǎn)立即運(yùn)行代理程序查看:復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->SZ:SZ->選擇ZLP:SZ(類型強(qiáng)制)->鼠標(biāo)右鍵->啟動(dòng)同步處理如果沒(méi)有錯(cuò)誤標(biāo)志(紅色叉),恭喜您配置成功 --6:測(cè)試數(shù)據(jù) --在服務(wù)器執(zhí)行:選擇一個(gè)表,執(zhí)行如下SQL insertinto WQ_NEWSGROUP_S select'測(cè)試成功',5 復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->SZ:SZ->快照->啟動(dòng)代理程序 ->ZLP:SZ(強(qiáng)制)->啟動(dòng)同步處理 去查看同步的 WQ_NEWSGROUP_S 是否插入了一條新的記錄 測(cè)試完畢,通過(guò)。 我教你

4、如何解決多數(shù)據(jù)庫(kù)之間同步問(wèn)題

如果是同一種數(shù)據(jù)庫(kù)的話,你同步的數(shù)據(jù)表結(jié)構(gòu)是否相同,如果也相同的話,完全可以利用數(shù)據(jù)庫(kù)的同步復(fù)制機(jī)制來(lái)解決;(做主從)
如果表結(jié)構(gòu)不相同的話,如果不在應(yīng)用層處理的話,有兩種方式參考:
1,A推數(shù)據(jù)給B;A有數(shù)據(jù)的時(shí)候,實(shí)時(shí)或非實(shí)時(shí)(采用event或trigger)將數(shù)據(jù)推到B中,B再做處理;
2,B從A拉數(shù)據(jù),用一個(gè)event(mysql中的job)定時(shí)從A中拉數(shù)據(jù)然后進(jìn)行處理;
另外可以選擇在應(yīng)用層來(lái)做,這個(gè)我就不多介紹了,根據(jù)業(yè)務(wù)邏輯coding就行了。
由于不清楚你的業(yè)務(wù)特點(diǎn),所以無(wú)法進(jìn)一步的幫你分析。

5、有2個(gè)數(shù)據(jù)庫(kù),怎么實(shí)現(xiàn)數(shù)據(jù)同步

在pgsql的數(shù)據(jù)庫(kù)中將要同步的表建立一個(gè)一模一樣的同步表。然后建觸發(fā)器,將進(jìn)入源表中的數(shù)據(jù)觸發(fā)到同步表中。然后做一個(gè)windows服務(wù)掃描這個(gè)同步表并且將同步表中的數(shù)據(jù)同步到mysql
或access中。
如果是整個(gè)數(shù)據(jù)庫(kù)中有許多表要進(jìn)行同步。則建立一個(gè)共用的同步表,結(jié)構(gòu)非常簡(jiǎn)單。字段如下:
主鍵(f_id),源表名(f_tablename),主鍵字段名(f_keyname),主鍵值(f_keyvalue),操作標(biāo)識(shí)(f_operflag
i:插入
u:更新
d:刪除),時(shí)間字段(f_time).將要同步的表都建立觸發(fā)器,只要有增、改、刪都觸發(fā)到這個(gè)表里。這樣你只掃描這個(gè)共用的同步表,根據(jù)這些字段值完全可以實(shí)現(xiàn)數(shù)據(jù)的同步。隔離網(wǎng)閘就是這么個(gè)原理,只不過(guò)它的要比這復(fù)雜多了! 為方便完成指定數(shù)據(jù)表的同步操作,可以采用dblink與merge結(jié)合的方法完成。
操作環(huán)境:
此數(shù)據(jù)庫(kù)服務(wù)器ip為192.168.196.76,有center與branch兩個(gè)庫(kù),一般需要將center的表數(shù)據(jù)同步到branch,center為源庫(kù),branch為目標(biāo)庫(kù),具體步驟如下:
1.在源庫(kù)創(chuàng)建到目標(biāo)庫(kù)的dblink
create
database
link
branch
--輸入所要?jiǎng)?chuàng)建dblink的名稱,自定義
connect
to
dbuser
identified
by
“password”
--設(shè)置連接遠(yuǎn)程數(shù)據(jù)庫(kù)的用戶名和密碼
using
'192.168.196.76/branch';
--指定目標(biāo)數(shù)據(jù)庫(kù)的連接方式,可用tns名稱

轉(zhuǎn)載請(qǐng)帶上網(wǎng)址:http://www.keemji.com/posjifive/317922.html

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。
聯(lián)系我們
訂購(gòu)聯(lián)系:小莉
微信聯(lián)系方式
地址:深圳市寶安區(qū)固戍聯(lián)誠(chéng)發(fā)產(chǎn)業(yè)園木星大廈

公司地址:深圳市寶安區(qū)固戍聯(lián)誠(chéng)發(fā)產(chǎn)業(yè)園木星大廈

舉報(bào)投訴 免責(zé)申明 版權(quán)申明 廣告服務(wù) 投稿須知 技術(shù)支持:第一POS網(wǎng) Copyright@2008-2030 深圳市慧聯(lián)實(shí)業(yè)有限公司 備案號(hào):粵ICP備18141915號(hào)

主站蜘蛛池模板: 内射白浆一区二区在线观看| 3d动漫精品啪啪一区二区免费 | 亚洲欧洲日产国码av系列天堂| 91网站免费观看| 实况360监控拍小两口| 亚洲中文字幕久久精品无码va| 久久激情综合网| 黄a大片av永久免费| 最新国产精品自在线观看| 嗯~啊~哦~别~别停~啊老师| 88久久精品无码一区二区毛片 | 国产zzjjzzjj视频全免费| 99久久国产热无码精品免费| 日韩美女在线观看一区| 免费a级片在线观看| 高潮毛片无遮挡高清免费| 天天干天天射天天操| 久久国产精品一国产精品| 污污污污污污www网站免费| 国产xxxxx在线观看| 成人福利小视频| 国产精品久久久久久久久久免费| 七次郎在线视频精品视频| 最近最新在线中文字幕| 人妻少妇精品久久久久久| 被黑人侵犯若妻中文字幕| 国产裸体美女永久免费无遮挡| 中文字幕人成乱码熟女| 欧美天堂在线观看| 农村乱人伦一区二区| 色噜噜狠狠一区二区三区果冻| 国产精品第一页第一页| 一级做a爱片在线播放| 极品尤物一区二区三区| 伊人中文字幕在线观看| 精品真实国产乱文在线| 国产性生大片免费观看性| 97日日碰人人模人人澡| 成人口工漫画网站免费| 亚洲av无码一区二区三区性色| 男人j桶进女人p|