新聞中心
當(dāng)今時代,隨著互聯(lián)網(wǎng)的飛速發(fā)展,大量的數(shù)據(jù)涌入到我們的生活中,而這些數(shù)據(jù)往往具有重要的價值且需要我們加以保護(hù)和管理。數(shù)據(jù)庫作為數(shù)據(jù)存儲和管理的重要工具,其重要性不言而喻。對于數(shù)據(jù)庫中存儲的數(shù)據(jù),我們需要進(jìn)行備份,以防止數(shù)據(jù)的丟失或損壞。而數(shù)據(jù)庫本地同步作為備份的一種方法,既可以實現(xiàn)數(shù)據(jù)的實時備份,同時又可以實現(xiàn)多個終端之間的數(shù)據(jù)共享,在日常工作中具有非常重要的作用。

目前成都創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、興安網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
一、什么是數(shù)據(jù)庫本地同步?
數(shù)據(jù)庫本地同步,是指將互聯(lián)網(wǎng)上的數(shù)據(jù)同步到本地數(shù)據(jù)庫中的過程。通俗的說,就是將線上的數(shù)據(jù)庫備份到本地進(jìn)行數(shù)據(jù)備份。數(shù)據(jù)庫本地同步,既可以做為數(shù)據(jù)備份的一種方式,同時又可以實現(xiàn)多個終端之間的數(shù)據(jù)共享。通常,數(shù)據(jù)庫本地同步使用工具可以輕松地完成這一過程。而對于不同的數(shù)據(jù)庫,所使用的工具也不一樣。
二、為什么要進(jìn)行數(shù)據(jù)庫本地同步?
在日常工作中,數(shù)據(jù)庫通常作為一個重要的存儲和管理工具。對于這些存儲在數(shù)據(jù)庫中的數(shù)據(jù),我們需要進(jìn)行備份,以避免數(shù)據(jù)的丟失和損壞。傳統(tǒng)的方法通常是將數(shù)據(jù)庫備份到本地。但是,隨著數(shù)據(jù)量的不斷增加,這種備份方式已經(jīng)變得越來越麻煩和費時,同時也容易出現(xiàn)備份不及時的情況。而數(shù)據(jù)庫本地同步可以解決這些問題。通過數(shù)據(jù)庫本地同步,我們可以將在線上的數(shù)據(jù)庫備份到本地,實現(xiàn)數(shù)據(jù)的實時備份。同時,數(shù)據(jù)庫本地同步還可以實現(xiàn)多個終端之間的數(shù)據(jù)共享,讓我們更加方便地管理數(shù)據(jù)。
三、數(shù)據(jù)庫本地同步的優(yōu)勢和應(yīng)用場景
1. 實時備份能力
對于傳統(tǒng)的數(shù)據(jù)庫備份方式,備份時間和備份完成度都受限于網(wǎng)絡(luò)環(huán)境和服務(wù)器負(fù)載。而使用數(shù)據(jù)庫本地同步技術(shù)進(jìn)行實時備份,可以大大減少備份時間和備份的不及時性。同時,通過數(shù)據(jù)庫本地同步,可以將備份的數(shù)據(jù)存儲在本地,保證備份數(shù)據(jù)的完整性和正確性。
2. 數(shù)據(jù)共享
數(shù)據(jù)庫本地同步可以實現(xiàn)多個終端之間的數(shù)據(jù)共享,讓多個用戶可以同時訪問并處理同一個數(shù)據(jù)。這種共享機制不僅可以提高工作效率,還可以幫助團(tuán)隊協(xié)作進(jìn)行項目管理。
3. 數(shù)據(jù)隔離
在大型企業(yè)或集團(tuán)中,不同部門或不同地區(qū)的業(yè)務(wù)數(shù)據(jù)需要進(jìn)行隔離。數(shù)據(jù)庫本地同步可以通過不同的同步方式實現(xiàn)不同業(yè)務(wù)數(shù)據(jù)的隔離,保證數(shù)據(jù)隱私和數(shù)據(jù)安全。
4. 數(shù)據(jù)備份和恢復(fù)
在系統(tǒng)出現(xiàn)意外情況或用戶誤操作時,數(shù)據(jù)庫本地同步可以快速恢復(fù)數(shù)據(jù),保證系統(tǒng)不會因為數(shù)據(jù)損壞或丟失而癱瘓。同時,數(shù)據(jù)庫本地同步還可以便捷地進(jìn)行數(shù)據(jù)備份和文件傳輸,提供更加簡單、安全和高效的解決方案。
四、數(shù)據(jù)庫本地同步的具體實現(xiàn)方法
1. 命令行
命令行方式是數(shù)據(jù)庫本地同步的最基本方式。通過命令行的方式,可以讓用戶直接操作數(shù)據(jù)庫來完成數(shù)據(jù)備份。這種方式的優(yōu)點是比較簡單、易于掌握,缺點是操作時間比較長,需要用戶有一定的技術(shù)基礎(chǔ)。
2. 數(shù)據(jù)庫工具
對于非技術(shù)人員來說,更加直接簡單的方式是使用數(shù)據(jù)庫備份工具。多種數(shù)據(jù)庫管理工具,如Navicat、TOAD、PL/SQL Developer等,都內(nèi)置了數(shù)據(jù)備份功能,如MySQL的mysqldump命令以及SQL Server的Database Backup和Restore等。用戶只需要選擇數(shù)據(jù)庫工具中的數(shù)據(jù)備份即可完成數(shù)據(jù)備份。
3. API接口
對于開發(fā)人員,可以使用API接口實現(xiàn)數(shù)據(jù)庫本地同步。通常使用API可以更加輕松地實現(xiàn)數(shù)據(jù)備份和數(shù)據(jù)共享功能。API接口可以直接與數(shù)據(jù)庫進(jìn)行交互,提供完整的備份和恢復(fù)功能,同時也可以創(chuàng)造更多的數(shù)據(jù)共享方式。
五、實施過程中需要注意的問題
在實施數(shù)據(jù)庫本地同步的過程中,需要注意以下問題:
1. 數(shù)據(jù)重復(fù)
在進(jìn)行數(shù)據(jù)庫本地同步的過程中,有可能會因為同步頻率不夠?qū)е聰?shù)據(jù)重復(fù)。因此需要對同步的周期進(jìn)行調(diào)整,以避免出現(xiàn)數(shù)據(jù)重復(fù)問題。
2. 數(shù)據(jù)差異
在進(jìn)行數(shù)據(jù)庫本地同步時,可能會出現(xiàn)數(shù)據(jù)差異問題。這個問題可能因為同步和備份時的數(shù)據(jù)沖突所導(dǎo)致。必須對同步的數(shù)據(jù)進(jìn)行比對和驗證,避免出現(xiàn)重要數(shù)據(jù)的丟失或損壞。
3. 同步帶寬
在進(jìn)行數(shù)據(jù)庫本地同步時,應(yīng)該考慮同步帶寬的問題。如果同步帶寬不足,可能會導(dǎo)致同步無法完成。此時,需要適當(dāng)調(diào)整數(shù)據(jù)的同步方案。
四、
隨著互聯(lián)網(wǎng)時代的到來,數(shù)據(jù)庫的重要性越來越變得不可忽視。不僅需要對數(shù)據(jù)庫中存儲的數(shù)據(jù)進(jìn)行備份,同時也需要實現(xiàn)數(shù)據(jù)的實時共享。而數(shù)據(jù)庫本地同步技術(shù),則成為一種非常重要的數(shù)據(jù)備份和數(shù)據(jù)共享方式。通過數(shù)據(jù)庫本地同步技術(shù),可以實現(xiàn)數(shù)據(jù)的實時備份和共享,有效避免數(shù)據(jù)的丟失和損壞。但在實施過程中,需要注意數(shù)據(jù)重復(fù)和數(shù)據(jù)差異的問題,同時必須考慮同步帶寬的問題。因此,選擇適合自己的數(shù)據(jù)庫本地同步工具和方案,是非常重要的。
相關(guān)問題拓展閱讀:
- 如何實現(xiàn)同步兩個服務(wù)器的數(shù)據(jù)庫?
- 2臺MSSQL服務(wù)器某數(shù)據(jù)庫怎么同步?
如何實現(xiàn)同步兩個服務(wù)器的數(shù)據(jù)庫?
同步兩個SQLServer數(shù)據(jù)庫\x0d\x0a\x0d\x0a如何同步兩個sqlserver數(shù)據(jù)庫的內(nèi)容?程序代碼可以有版本管理cvs進(jìn)行悶畝同步管理,可是數(shù)據(jù)庫同步就非常麻煩,只能自己改了一個后再去改另一個,如果忘記了更改另一個經(jīng)常造成兩個數(shù)據(jù)庫的結(jié)構(gòu)或內(nèi)容上不一致.各位有什么好的方法嗎?\x0d\x0a\x0d\x0a一、分發(fā)與復(fù)制\x0d\x0a\x0d\x0a用強制訂閱實現(xiàn)數(shù)據(jù)庫同步操作. 大量和批量的數(shù)據(jù)可以用數(shù)據(jù)庫的同步機制處理:\x0d\x0a//\x0d\x0a說明:\x0d\x0a為方便操作,所有操作均在發(fā)布服務(wù)器(分發(fā)服務(wù)器)上操作,并使用推模式\x0d\x0a在客戶機器使用強制訂閱方式。\x0d\x0a\x0d\x0a二、測試通過\x0d\x0a\x0d\x0a1:環(huán)境\x0d\x0a\x0d\x0a服務(wù)器環(huán)境:\x0d\x0a機器名稱: zehuadb\x0d\x0a操作系統(tǒng):windows 2023 server\x0d\x0a數(shù)據(jù)庫版本:sql 2023 server 個人版\x0d\x0a\x0d\x0a客戶端\x0d\x0a機器名稱:zlp\x0d\x0a操作系統(tǒng):windows 2023 server\x0d\x0a數(shù)據(jù)庫版本:sql 2023 server 個人版\x0d\x0a\x0d\x0a2:建用戶帳號\x0d\x0a\x0d\x0a在服務(wù)器端建立域用戶帳號\x0d\x0a我的電腦管理->本地用戶和組->用戶->建立\x0d\x0ausername:zlp\x0d\x0auserpwd:zlp\x0d\x0a\x0d\x0a3:重新啟動服務(wù)器mssqlserver\x0d\x0a\x0d\x0a我的電腦->控制面版->管理工具->服務(wù)->mssqlserver 服務(wù)\x0d\x0a(更改為:域用戶帳號,我們新建的zlp用戶 .\zlp,密碼:zlp)\x0d\x0a\x0d\x0a4:安裝分發(fā)服務(wù)器\x0d\x0a\x0d\x0aa:配置分發(fā)服務(wù)器\x0d\x0a工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->下一步->下一步(所有的均采用默認(rèn)配置)\x0d\x0a\x0d\x0ab:配置發(fā)布服務(wù)器\x0d\x0a工具->復(fù)制->創(chuàng)建和管理發(fā)布->選擇要發(fā)布的數(shù)據(jù)庫(sz)->下一步->快照發(fā)布->下一步->選擇要發(fā)布的內(nèi)容->下一步->下一步->下一步->完成\x0d\x0a\x0d\x0ac:強制配置訂閱服務(wù)器(推模式,拉模式與此雷同)\x0d\x0a工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->訂閱服務(wù)器->新建->sql server數(shù)據(jù)庫->輸入客戶端服務(wù)器名稱(zlp)->使用sql server 身份驗證(sa,空密碼)->確定->應(yīng)用->確定\x0d\x0a\x0d\x0ad:初始化訂閱\x0d\x0a復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->雙擊訂閱->強制新建->下一步->選擇啟用的訂閱服務(wù)器->zlp->下一步->下一步->下一步->下一步->完成\x0d\x0a\x0d\x0a5:測試配置是否成功\x0d\x0a\x0d\x0a復(fù)制監(jiān)視器->發(fā)布衿?zehuadb)->雙擊sz:sz->點狀態(tài)->點立即運行代理程序\x0d\x0a\x0d\x0a查看:\x0d\x0a復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->sz:sz->選擇zlp:sz(類型強制)->鼠標(biāo)右鍵->啟動同步處理\x0d\x0a\x0d\x0a如果沒有錯誤標(biāo)志(紅色叉),恭喜您配置成功\x0d\x0a\x0d\x0a6:測試數(shù)據(jù)\x0d\x0a\x0d\x0a在服務(wù)器執(zhí)行:\x0d\x0a\x0d\x0a選毀罩吵擇一個表,執(zhí)行如下sql:insert into wq_newsgroup_s select ‘測試成功’,5\x0d\x0a\x0d\x0a復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->sz:sz->快照->啟動代理程序 ->zlp:sz(強制)->啟動同步處理\x0d\x0a\x0d\x0a去查纖侍看同步的 wq_newsgroup_s 是否插入了一條新的記錄\x0d\x0a\x0d\x0a測試完畢,通過。\x0d\x0a7:修改數(shù)據(jù)庫的同步時間,一般選擇夜晚執(zhí)行數(shù)據(jù)庫同步處理\x0d\x0a(具體操作略) :d\x0d\x0a\x0d\x0a/*\x0d\x0a注意說明:\x0d\x0a服務(wù)器一端不能以(local)進(jìn)行數(shù)據(jù)的發(fā)布與分發(fā),需要先刪除注冊,然后新建注冊本地計算機名稱\x0d\x0a\x0d\x0a卸載方式:工具->復(fù)制->禁止發(fā)布->是在”zehuadb”上靜止發(fā)布,卸載所有的數(shù)據(jù)庫同步配置服務(wù)器\x0d\x0a\x0d\x0a注意:發(fā)布服務(wù)器、分發(fā)服務(wù)器中的sqlserveragent服務(wù)必須啟動\x0d\x0a采用推模式: “d:\microsoft sql server\mssql\repldata\unc” 目錄文件可以不設(shè)置共享\x0d\x0a拉模式:則需要共享~!\x0d\x0a*/\x0d\x0a少量數(shù)據(jù)庫同步可以采用觸發(fā)器實現(xiàn),同步單表即可。\x0d\x0a\x0d\x0a三、配置過程中可能出現(xiàn)的問題\x0d\x0a\x0d\x0a在sql server 2023里設(shè)置和使用數(shù)據(jù)庫復(fù)制之前,應(yīng)先檢查相關(guān)的幾臺sql server服務(wù)器下面幾點是否滿足:\x0d\x0a\x0d\x0a1、mssqlserver和sqlserveragent服務(wù)是否是以域用戶身份啟動并運行的(.\administrator用戶也是可以的)\x0d\x0a\x0d\x0a如果登錄用的是本地系統(tǒng)帳戶local,將不具備網(wǎng)絡(luò)功能,會產(chǎn)生以下錯誤:\x0d\x0a\x0d\x0a進(jìn)程未能連接到distributor ‘@server name’\x0d\x0a\x0d\x0a(如果您的服務(wù)器已經(jīng)用了sql server全文檢索服務(wù), 請不要修改mssqlserver和sqlserveragent服務(wù)的local啟動。\x0d\x0a會照成全文檢索服務(wù)不能用。請換另外一臺機器來做sql server 2023里復(fù)制中的分發(fā)服務(wù)器。)\x0d\x0a\x0d\x0a修改服務(wù)啟動的登錄用戶,需要重新啟動mssqlserver和sqlserveragent服務(wù)才能生效。\x0d\x0a\x0d\x0a2、檢查相關(guān)的幾臺sql server服務(wù)器是否改過名稱(需要srvid=0的本地機器上srvname和datasource一樣)\x0d\x0a\x0d\x0a在查詢分析器里執(zhí)行:\x0d\x0ause master\x0d\x0aselect srvid,srvname,datasource from sysservers\x0d\x0a\x0d\x0a如果沒有srvid=0或者srvid=0(也就是本機器)但srvname和datasource不一樣, 需要按如下方法修改:\x0d\x0a\x0d\x0ause master\x0d\x0ago\x0d\x0a– 設(shè)置兩個變量\x0d\x0adeclare @serverproperty_servername varchar(100),\x0d\x0a@servername varchar(100)\x0d\x0a– 取得windows nt 服務(wù)器和與指定的 sql server 實例關(guān)聯(lián)的實例信息\x0d\x0aselect @serverproperty_servername = convert(varchar(100), serverproperty(‘servername’))\x0d\x0a– 返回運行 microsoft sql server 的本地服務(wù)器名稱\x0d\x0aselect @servername = convert(varchar(100), @@servername)\x0d\x0a– 顯示獲取的這兩個參數(shù)\x0d\x0aselect @serverproperty_servername,@servername\x0d\x0a–如果@serverproperty_servername和@servername不同(因為你改過計算機名字),再運行下面的\x0d\x0a–刪除錯誤的服務(wù)器名\x0d\x0aexec sp_dropserver @server=@servername\x0d\x0a–添加正確的服務(wù)器名\x0d\x0aexec sp_addserver @server=@serverproperty_servername, @local=’local’\x0d\x0a\x0d\x0a修改這項參數(shù),需要重新啟動mssqlserver和sqlserveragent服務(wù)才能生效。\x0d\x0a\x0d\x0a這樣一來就不會在創(chuàng)建復(fù)制的過程中出現(xiàn)18482、18483錯誤了。\x0d\x0a\x0d\x0a3、檢查sql server企業(yè)管理器里面相關(guān)的幾臺sql server注冊名是否和上面第二點里介紹的srvname一樣\x0d\x0a\x0d\x0a不能用ip地址的注冊名。\x0d\x0a\x0d\x0a(我們可以刪掉ip地址的注冊,新建以sql server管理員級別的用戶注冊的服務(wù)器名)\x0d\x0a\x0d\x0a這樣一來就不會在創(chuàng)建復(fù)制的過程中出現(xiàn)14010、20234、18456、18482、18483錯誤了。\x0d\x0a\x0d\x0a4、檢查相關(guān)的幾臺sql server服務(wù)器網(wǎng)絡(luò)是否能夠正常訪問\x0d\x0a\x0d\x0a如果ping主機ip地址可以,但ping主機名不通的時候,需要在\x0d\x0a\x0d\x0awinnt\system32\drivers\etc\hosts (win2023)\x0d\x0awindows\system32\drivers\etc\hosts (win2023)\x0d\x0a\x0d\x0a文件里寫入數(shù)據(jù)庫服務(wù)器ip地址和主機名的對應(yīng)關(guān)系。\x0d\x0a\x0d\x0a例如:\x0d\x0a\x0d\x0a127.0.0.localhost\x0d\x0a192.168.0.35 oracledb oracledb\x0d\x0a192.168.0.65 fengyu02 fengyu02\x0d\x0a202.84.10.193 bj_dbbj_db\x0d\x0a或者在sql server客戶端網(wǎng)絡(luò)實用工具里建立別名,例如:\x0d\x0a5、系統(tǒng)需要的擴(kuò)展存儲過程是否存在(如果不存在,需要恢復(fù)):\x0d\x0a\x0d\x0asp_addextendedproc ‘xp_regenumvalues’,@dllname =’xpstar.dll’\x0d\x0ago\x0d\x0asp_addextendedproc ‘xp_regdeletevalue’,@dllname =’xpstar.dll’\x0d\x0ago\x0d\x0asp_addextendedproc ‘xp_regdeletekey’,@dllname =’xpstar.dll’\x0d\x0ago\x0d\x0asp_addextendedproc xp_cmdshell ,@dllname =’xplog70.dll’ \x0d\x0a\x0d\x0a接下來就可以用sql server企業(yè)管理器里-> 右鍵選擇 ->的圖形界面來配置數(shù)據(jù)庫復(fù)制了。\x0d\x0a\x0d\x0a下面是按順序列出配置復(fù)制的步驟:\x0d\x0a\x0d\x0a1、建立發(fā)布和分發(fā)服務(wù)器\x0d\x0a\x0d\x0a->->\x0d\x0a->-> -> -> \x0d\x0a\x0d\x0a上述步驟完成后, 會在當(dāng)前”@servername” sql server數(shù)據(jù)庫里建立了一個distribion庫和 一個distributor_admin管理員級別的用戶(我們可以任意修改密碼)。\x0d\x0a\x0d\x0a服務(wù)器上新增加了四個作業(yè):\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0asql server企業(yè)管理器里多了一個復(fù)制監(jiān)視器, 當(dāng)前的這臺機器就可以發(fā)布、分發(fā)、訂閱了。\x0d\x0a\x0d\x0a我們再次在sql server企業(yè)管理器里-> 右鍵選擇 ->\x0d\x0a\x0d\x0a我們可以在 窗口-> -> -> -> -> / -> -> -> -> \x0d\x0a\x0d\x0a把網(wǎng)絡(luò)上的其它sql server服務(wù)器添加成為發(fā)布或者訂閱服務(wù)器.\x0d\x0a\x0d\x0a新增一臺發(fā)布服務(wù)器的選項:\x0d\x0a\x0d\x0a我這里新建立的jin001發(fā)布服務(wù)器是用管理員級別的數(shù)據(jù)庫用戶test連接的,\x0d\x0a\x0d\x0a到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框, 默認(rèn)的是選中的,\x0d\x0a\x0d\x0a在新建的jin001發(fā)布服務(wù)器上建立和分發(fā)服務(wù)器fengyu/fengyu的鏈接的時需要輸入distributor_admin用戶的密碼。到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框,也可以不選,也就是不需要密碼來建立發(fā)布到分發(fā)服務(wù)器的鏈接(這當(dāng)然欠缺安全,在測試環(huán)境下可以使用)。\x0d\x0a\x0d\x0a2、新建立的網(wǎng)絡(luò)上另一臺發(fā)布服務(wù)器(例如jin001)選擇分發(fā)服務(wù)器\x0d\x0a\x0d\x0a->\x0d\x0a\x0d\x0a-> 使用下列服務(wù)器(選定的服務(wù)器必須已配置為分發(fā)服務(wù)器) -> (例如fengyu/fengyu)\x0d\x0a\x0d\x0a-> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a建立一個數(shù)據(jù)庫復(fù)制發(fā)布的過程:\x0d\x0a\x0d\x0a -> -> 右鍵選擇 -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> /\x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> -> \x0d\x0a\x0d\x0a->,默認(rèn)值是newid()>\x0d\x0a\x0d\x0a(添加新列將: 導(dǎo)致不帶列列表的 insert 語句失敗,增加表的大小,增加生成之一個快照所要求的時間)\x0d\x0a\x0d\x0a->\x0d\x0a\x0d\x0a-> -> ->\x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a發(fā)布屬性里有很多有用的選項:設(shè)定訂閱到期(例如24小時)\x0d\x0a\x0d\x0a設(shè)定發(fā)布表的項目屬性:\x0d\x0a\x0d\x0a常規(guī)窗口可以指定發(fā)布目的表的名稱,可以跟原來的表名稱不一樣。\x0d\x0a\x0d\x0a下圖是命令和快照窗口的欄目\x0d\x0a\x0d\x0a( sql server 數(shù)據(jù)庫復(fù)制技術(shù)實際上是用insert,update,delete操作在訂閱服務(wù)器上重做發(fā)布服務(wù)器上的事務(wù)操作\x0d\x0a\x0d\x0a看文檔資料需要把發(fā)布數(shù)據(jù)庫設(shè)成完全恢復(fù)模式,事務(wù)才不會丟失\x0d\x0a\x0d\x0a但我自己在測試中發(fā)現(xiàn)發(fā)布數(shù)據(jù)庫是簡單恢復(fù)模式下,每10秒生成一些大事務(wù),10分鐘后再收縮數(shù)據(jù)庫日志,\x0d\x0a這期間發(fā)布和訂閱服務(wù)器上的作業(yè)都暫停,暫?;謴?fù)后并沒有丟失任何事務(wù)更改 )\x0d\x0a\x0d\x0a發(fā)布表可以做數(shù)據(jù)篩選,例如只選擇表里面的部分列:\x0d\x0a\x0d\x0a例如只選擇表里某些符合條件的記錄, 我們可以手工編寫篩選的sql語句:\x0d\x0a\x0d\x0a發(fā)布表的訂閱選項,并可以建立強制訂閱:\x0d\x0a\x0d\x0a成功建立了發(fā)布以后,發(fā)布服務(wù)器上新增加了一個作業(yè): \x0d\x0a\x0d\x0a分發(fā)服務(wù)器上新增加了兩個作業(yè):\x0d\x0a 類型\x0d\x0a 類型\x0d\x0a\x0d\x0a上面藍(lán)色字的名稱會根據(jù)發(fā)布服務(wù)器名,發(fā)布名及第幾次發(fā)布而使用不同的編號\x0d\x0a\x0d\x0arepl快照作業(yè)是sql server復(fù)制的前提條件,它會先把發(fā)布的表結(jié)構(gòu),數(shù)據(jù),索引,約束等生成到發(fā)布服務(wù)器的os目錄下文件\x0d\x0a(當(dāng)有訂閱的時候才會生成, 當(dāng)訂閱請求初始化或者按照某個時間表調(diào)度生成)\x0d\x0a\x0d\x0arepl日志讀取器在事務(wù)復(fù)制的時候是一直處于運行狀態(tài)。(在合并復(fù)制的時候可以根據(jù)調(diào)度的時間表來運行)\x0d\x0a\x0d\x0a建立一個數(shù)據(jù)庫復(fù)制訂閱的過程:\x0d\x0a\x0d\x0a -> -> 右鍵選擇 -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a(輸入發(fā)布服務(wù)器上distributor_admin用戶名和密碼)\x0d\x0a\x0d\x0a-> -> -> /\x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a(訂閱服務(wù)器要能訪問發(fā)布服務(wù)器的repldata文件夾,如果有問題,可以手工設(shè)置網(wǎng)絡(luò)共享及共享權(quán)限)\x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a成功建立了訂閱后,訂閱服務(wù)器上新增加了一個類別是作業(yè)(合并復(fù)制的時候類別是)\x0d\x0a\x0d\x0a它會按照我們給的時間調(diào)度表運行數(shù)據(jù)庫同步復(fù)制的作業(yè)。\x0d\x0a\x0d\x0a3、sql server復(fù)制配置好后, 可能出現(xiàn)異常情況的實驗日志:\x0d\x0a\x0d\x0a1.發(fā)布服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動,關(guān)機的時候,對已經(jīng)設(shè)置好的復(fù)制沒有多大影響\x0d\x0a\x0d\x0a中斷期間,分發(fā)和訂閱都接收到?jīng)]有復(fù)制的事務(wù)信息\x0d\x0a\x0d\x0a2.分發(fā)服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動,關(guān)機的時候,對已經(jīng)設(shè)置好的復(fù)制有一些影響\x0d\x0a\x0d\x0a中斷期間,發(fā)布服務(wù)器的事務(wù)排隊堆積起來\x0d\x0a(如果設(shè)置了較長時間才刪除過期訂閱的選項, 繁忙發(fā)布數(shù)據(jù)庫的事務(wù)日志可能會較快速膨脹),\x0d\x0a\x0d\x0a訂閱服務(wù)器會因為訪問不到發(fā)布服務(wù)器,反復(fù)重試\x0d\x0a我們可以設(shè)置重試次數(shù)和重試的時間間隔(更大的重試次數(shù)是9999, 如果每分鐘重試一次,可以支持約6.9天不出錯)\x0d\x0a\x0d\x0a分發(fā)服務(wù)器sql server服務(wù)啟動,網(wǎng)絡(luò)接通以后,發(fā)布服務(wù)器上的堆積作業(yè)將按時間順序作用到訂閱機器上:\x0d\x0a\x0d\x0a會需要一個比較長的時間(實際上是生成所有事務(wù)的insert,update,delete語句,在訂閱服務(wù)器上去執(zhí)行)\x0d\x0a我們在普通的pc機上實驗的58個事務(wù)100228個命令執(zhí)行花了7分28秒.\x0d\x0a\x0d\x0a3.訂閱服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動,關(guān)機的時候,對已經(jīng)設(shè)置好的復(fù)制影響比較大,可能需要重新初試化\x0d\x0a\x0d\x0a我們實驗環(huán)境(訂閱服務(wù)器)從18:46分意外停機以, 第二天8:40分重啟動后, 已經(jīng)設(shè)好的復(fù)制在8:40分以后又開始正常運行了, 發(fā)布服務(wù)器上的堆積作業(yè)將按時間順序作用到訂閱機器上, 但復(fù)制管理器里出現(xiàn)快照的錯誤提示, 快照可能需要重新初試化,復(fù)制可能需要重新啟動.(我們實驗環(huán)境的機器并沒有進(jìn)行快照初試化,復(fù)制仍然是成功運行的)\x0d\x0a\x0d\x0a4、刪除已經(jīng)建好的發(fā)布和定閱可以直接用delete刪除按鈕\x0d\x0a\x0d\x0a我們更好總是按先刪定閱,再刪發(fā)布,最后禁用發(fā)布的順序來操作。\x0d\x0a\x0d\x0a如果要徹底刪去sql server上面的復(fù)制設(shè)置, 可以這樣操作:\x0d\x0a\x0d\x0a -> 右鍵選擇 -> \x0d\x0a\x0d\x0a-> -> ->
2臺MSSQL服務(wù)器某數(shù)據(jù)庫怎么同步?
.介紹
現(xiàn)在的網(wǎng)站隨著訪問量的增加,單一服務(wù)器無法承擔(dān)巨大的訪問量,有沒有什么方便快捷的方式解決這個問題呢,答案是”有”!
比如建立服務(wù)器群,進(jìn)行均衡負(fù)載.
但是如果要解決像電信網(wǎng)通這樣的互訪問題(中國網(wǎng)民的悲哀..),這個解決辦法就無能為力了!
要解決這個問題最方便快捷的方式就是建立鏡像網(wǎng)站!由訪冊肢問者自己選擇適合自己網(wǎng)絡(luò)的速度最快的網(wǎng)站!這樣即可以解決線路問題,又可以解決訪問量問題!
2.網(wǎng)站同步的數(shù)據(jù)分類
網(wǎng)站數(shù)據(jù)基本分為兩類:
一類是文件,比如HTML,ASP,PHP等網(wǎng)頁文件,或者RAR,ZIP,RM,AVI等可下載文件!
要實現(xiàn)他們的同步很簡單,用FTP同步軟件就可以了!至于哪幾個我會在后面做詳細(xì)介紹.
一類是數(shù)據(jù)庫數(shù)據(jù)文件,比如MySQL,SQLServer等等!
數(shù)據(jù)庫同步的方法也很多,最簡單的辦法只是將數(shù)據(jù)庫目錄同步一下就OK了!
在后面我也會做詳細(xì)講解!
3.網(wǎng)站文件的同步
在這里用到的主要工具就是FTP,網(wǎng)站文件同步分兩種情況,一種是本地到遠(yuǎn)程,一種是遠(yuǎn)程到遠(yuǎn)程(FXP)!之一種不用說了,第二種遠(yuǎn)程到遠(yuǎn)程即FXP,支持它的軟件也很多,但是真正適合多網(wǎng)站同步鏡像的卻不多!
下面我介紹幾個我認(rèn)為不錯的軟件!
1.首先我要推薦的是國產(chǎn)的FTP軟件”網(wǎng)絡(luò)傳神”,功能非常強大,特別是在網(wǎng)站的同步鏡像方面,可惜的是,這款非常經(jīng)典的軟件已經(jīng)不再更新了,最后更新時間是2023年3月,最后一個版本是3.12!雖然如此還是非常好用的!下面是一段官方的簡介:
網(wǎng)絡(luò)傳神完全吸收了Cuteftp和UpdataNow的全部功能,并且增加了其他軟件沒有的多項功能:支持網(wǎng)站互傳;支持網(wǎng)站同步(UPDATANOW);支持后臺上傳(多線程上傳多個文件);可同時打開多個站點;多站點計劃上傳功能,支持鏡像站點;支持宏操作支持計劃操作;支持文件高級比較上傳;支持目錄隱藏過濾(為用ForntPage作主頁的朋友帶來福音);服務(wù)器自動識別功能;資源管理器瀏覽方式;可以自定義命令;支持RFC959標(biāo)準(zhǔn)具有更好的穩(wěn)定性;完備的信息返回機制及錯誤監(jiān)控機制完整的中文幫助。
2.第二款是由ReGet同一開發(fā)公司制作的專用于網(wǎng)站同步的軟件”WebSynchronizer”,用這款軟件,你才會體驗到網(wǎng)站同步的方便快捷,簡單容易.最新版本是1.3.62,網(wǎng)上能找到XX的最后版本是1.1版!下面是一段簡介:
檔案同步化工具-WebSynchronizer,由知名續(xù)傳軟件ReGet之軟件出版公司所推出,是網(wǎng)站同步化、檔案鏡像、檔案備份的絕佳工具,可以執(zhí)行下列主要工作:1)本機資料夾及遠(yuǎn)程資料夾的同步化;2)兩臺遠(yuǎn)程計算機中的資料夾同步化;3)兩個本機資料之同步化。
3.其他還有一些軟件如同步快梭(AutoSyncFTP),也能實現(xiàn)簡單的網(wǎng)站同步,不過,這款軟件非常不穩(wěn)定,而且2023年就已經(jīng)停止開發(fā).所以,不用考慮了!還有上次有朋友提到的SiteMirro,由于網(wǎng)上找不到可以用的版本,所以沒有辦法測試!
網(wǎng)絡(luò)傳神網(wǎng)站同步鏡像使用傻瓜指南
上次在網(wǎng)絡(luò)技術(shù)版已經(jīng)發(fā)過一個簡單的使用方法介紹,如果嫌我羅嗦(o(>_站點管理,在里面添加你需要同步的幾個的FTP服務(wù)器,下面我將介紹具體設(shè)置(主要是鏡像母站的設(shè)置)
母站設(shè)置最重要的地方就是”比較目錄(網(wǎng)站同步)”:
1.拖動傳送
就是手動拖動傳送時候的傳送方式,非拖動方式不受影響,因為母站的更新州埋世基本上是從本地目錄進(jìn)行的,所以建議這里選擇第二項”只上傳不同的文件”,鏡像站點這里可以忽略
2.磁盤比較設(shè)置
這個功能非常有用,可以通過文件長度和文件日期進(jìn)行文件差異對比.
你還可以設(shè)置本地目錄過濾和服務(wù)器目錄過濾,非常靈活!
好了,添加好母站和鏡像站之后,我們來設(shè)置同步:
如果是添加鏡像站,則會跳出下面的母站選擇窗口:
設(shè)置好多個鏡像站點之后,返回主界面就可以進(jìn)行網(wǎng)站同步了:
注意事項:
一般不要改動鏡像站點前面的“對鉤”標(biāo)志,因為鏡像站點同步的原理是“根據(jù)主站點的同步信息更新鏡像站點”,如果景象站點沒有更新那么必須將該鏡像站點單獨同步。
注意一般應(yīng)該“選項窗口”-〉“FTP客戶端”-〉“計劃”中的“更大連接個數(shù)”和“更大線程個數(shù)”一般不要改動保持為“1”。
如果同步時某個站點出錯同步?jīng)]有完全完成只需按“計劃”窗口中的按鈕單獨執(zhí)行某個站點的傳送即可。
再介紹一下網(wǎng)站鏡像同步中必要的功能,定時同步,這樣你就只要做好母站的更新,其他的讓網(wǎng)絡(luò)傳神幫你完成:
點擊設(shè)置:
進(jìn)入網(wǎng)絡(luò)傳神的選項設(shè)置窗口,選中FTP客戶端中的定時同步
定時下載:在指定的時段內(nèi)下載文件。
定時上傳:在指定的時段內(nèi)用網(wǎng)站同步的方法進(jìn)行上傳。
開始時間:如果要使用定時方式必須設(shè)置此項,在設(shè)置的時間中會自動開始所有設(shè)置為計劃的站點。
停止時間:如果設(shè)置此項則當(dāng)系統(tǒng)時間大于停止時間時自動停止所有設(shè)置為計劃的站點。
注意:定時上傳種沒有“停止時間”選項,網(wǎng)站同步完成后會自動停止,同時網(wǎng)站同步同一時間只能運行一次。
網(wǎng)絡(luò)傳神還有很多為便于同步鏡像設(shè)置的功能,大家實際使用中去體會吧!
WebSynchronizer網(wǎng)站同步鏡像使用傻瓜指南
WebSynchronizer功能非常強大,不單單是網(wǎng)站同步,還可以進(jìn)行本地目錄同步,本地到遠(yuǎn)程同步,功能方面遠(yuǎn)勝過傳神,不過,國內(nèi)好像沒有漢化版,對于一些對英文感冒的朋友用起來會不太舒服,希望CCF里的漢化高手能將他中文化!
開始運行程序,老外的軟件就是智能,一打開這個軟件就會有一個同步向?qū)鰜?
在這里,你也看出來了吧,這個軟件只支持兩個目錄間的同步.不過,我們可以創(chuàng)建多個項目來解決這個問題!具體我在后面介紹!這里,我們來看看如何建立兩個遠(yuǎn)程目錄的同步!
選擇第二項,進(jìn)入下一個選擇框:
網(wǎng)站同步當(dāng)然是選擇之一項了!再進(jìn)入下一步,要你選擇同步的之一個服務(wù)器,建議在這里serverslist,先編輯好需要同步的幾個FTP
同步方式設(shè)置說明:
之一項的意思是:上傳下載所有改變的文件
第二項的意思是:不改變文件夾內(nèi)容,只下載新的文件
點擊下一步進(jìn)行第二個服務(wù)器設(shè)置,方法和之一個一樣!
設(shè)置完成后,你還可以修改任務(wù)名稱!
我覺得這點就是這個軟件非常優(yōu)秀的地方,以任務(wù)的方式進(jìn)行管理.非常方便!
OK,現(xiàn)在我們就可以看到他的主界面了!
還有一點要提,他的計劃任務(wù)更能也很強大,在這里我就不再多說了!用過才知道他的強大!
有朋友會說,我要進(jìn)行兩個以上的網(wǎng)站同步怎么辦?
很簡單,再多建幾個任務(wù)就可以了,要鏡像多少網(wǎng)站都沒有問題!
這個軟件的網(wǎng)站同步鏡像可以非常靈活,比如可以本地-遠(yuǎn)程,然后再遠(yuǎn)程-遠(yuǎn)程!或者本地-遠(yuǎn)程1,本地-遠(yuǎn)程2,遠(yuǎn)程1-遠(yuǎn)程2,任何情形下的同步都可以完成!
數(shù)據(jù)庫同步操作指南
說完了文件同步,我們再來探討一下數(shù)據(jù)庫同步!
這里我主要教大家兩種最常用的數(shù)據(jù)庫的同步方法!
MySQL
MySQL數(shù)據(jù)同步主要有三種方式:
1.利用MySQL自身的數(shù)據(jù)庫同步功能
2.利用MySQL數(shù)據(jù)庫的特性(數(shù)據(jù)庫存在固頂目錄,并且以文件形式存儲),進(jìn)行數(shù)據(jù)庫目錄同步以達(dá)到數(shù)據(jù)同步目的
3.利用專用的MySQL數(shù)據(jù)庫同步軟件
1.利用MySQL自身的數(shù)據(jù)庫同步功能(下面參考自網(wǎng)上的文章,寫的非常詳細(xì)了)
MySQL從3.23.15版本以后提供數(shù)據(jù)庫復(fù)制功能。利用該功能可以實現(xiàn)兩個數(shù)據(jù)庫同步,主從模式,互相備份模式的功能.
數(shù)據(jù)庫同步復(fù)制功能的設(shè)置都在mysql的設(shè)置文件中體現(xiàn)。mysql的配置文件(一般是my.cnf),在unix環(huán)境下在/etc/mysql/my.cnf或者在mysql用戶的home目錄下的my.cnf。
windows環(huán)境中,如果c:根目錄下有my.cnf文件則取該配置文件。當(dāng)運行mysql的winmysqladmin.exe工具時候,該工具會把c:根目錄下的my.cnf命名為mycnf.bak。并在winnt目錄下創(chuàng)建my.ini。mysql服務(wù)器啟動時候會讀該配置文件。所以可以把my.cnf中的內(nèi)容拷貝到my.ini文件中,用my.ini文件作為mysql服務(wù)器的配置文件。
設(shè)置方法:
設(shè)置范例環(huán)境:
操作系統(tǒng):window2023professional
mysql:4.0.4-beta-max-nt-log
Aip:10.10.10.22
Bip:10.10.10.53
A:設(shè)置
1.增加一個用戶最為同步的用戶帳號:
GRANTFILEON*.*TObackup@’10.10.10.53’IDENTIFIEDBY‘1234’
2.增加一個數(shù)據(jù)庫作為同步數(shù)據(jù)庫:
createdatabasebackup
B:設(shè)置
1.增加一個用戶最為同步的用戶帳號:
GRANTFILEON*.*TObackup@’10.10.10.22’IDENTIFIEDBY‘1234’
2.增加一個數(shù)據(jù)庫作為同步數(shù)據(jù)庫:
createdatabasebackup
主從模式:A->B
A為master
修改Amysql的my.ini文件。在mysqld配置項中加入下面配置:
server-id=1
log-bin
#設(shè)置需要記錄log可以設(shè)置log-bin=c:mysqlbakmysqllog設(shè)置日志文件的目錄,
#其中mysqllog是日志文件的名稱,mysql將建立不同擴(kuò)展名,文件名為mysqllog的幾個日志文件。
binlog-do-db=backup#指定需要日志的數(shù)據(jù)庫
重起數(shù)據(jù)庫服務(wù)。
用showmasterstatus命令看日志情況。
B為slave
修改Bmysql的my.ini文件。在mysqld配置項中加入下面配置:
server-id=2
master-host=10.10.10.22
master-user=backup#同步用戶帳號
master-password=1234
master-port=3306
master-connect-retry=60預(yù)設(shè)重試間隔60秒
replicate-do-db=backup告訴slave只做backup數(shù)據(jù)庫的更新
重起數(shù)據(jù)庫
用showslavestatus看同步配置情況。
注意:由于設(shè)置了slave的配置信息,mysql在數(shù)據(jù)庫目錄下生成master.info
所以如有要修改相關(guān)slave的配置要先刪除該文件。否則修改的配置不能生效。
雙機互備模式。
如果在A加入slave設(shè)置,在B加入master設(shè)置,則可以做B->A的同步。
在A的配置文件中mysqld配置項加入以下設(shè)置:
master-host=10.10.10.53
master-user=backup
master-password=1234
replicate-do-db=backup
master-connect-retry=10
在B的配置文件中mysqld配置項加入以下設(shè)置:
log-bin=c:mysqllogmysqllog
binlog-do-db=backup
注意:當(dāng)有錯誤產(chǎn)生時*.err日志文件。同步的線程退出,當(dāng)糾正錯誤后要讓同步機制進(jìn)行工作,運行slavestart
重起AB機器,則可以實現(xiàn)雙向的熱備。
測試:
向B批量插入大數(shù)據(jù)量表AA()條
A數(shù)據(jù)庫每秒鐘可以更新2500條數(shù)據(jù)。
2.數(shù)據(jù)庫目錄同步,方法和文件同步一樣,設(shè)置好需要同步的兩個數(shù)據(jù)庫目錄就可以了!
缺點很明顯,數(shù)據(jù)同步只能單向進(jìn)行,可以作為備份方案
3.用專用的MySQL同步軟件進(jìn)行同步
這方面的軟件有SQLBalance和MyReplicator,優(yōu)點是方便直觀,還有很多爭強功能!
缺點和2一樣,只能單項同步!
當(dāng)然你也可以修改鏡像網(wǎng)站的程序為提交數(shù)據(jù)到母數(shù)據(jù)庫,讀取則在當(dāng)前鏡像下的數(shù)據(jù),不過,修改起來麻煩!普通用戶修改也非常難!呵呵,大家了解一下就可以!給大家一個思路!有能力的朋友可以試試阿!
4.關(guān)于MySQL論壇的數(shù)據(jù)同步
由于數(shù)據(jù)來源的不可控制(不好表達(dá)),論壇數(shù)據(jù)是實時的,而且還要考慮來自鏡像論壇的數(shù)據(jù),如何實現(xiàn)鏡像論壇與母論壇數(shù)據(jù)同步呢?
用1中介紹的MySQL自帶的數(shù)據(jù)庫同步功能互相備份模式就可以實現(xiàn)的!
不過,具體的應(yīng)用我沒有測試!穩(wěn)定性不敢保證!
有能力的朋友推薦用下面這種思路來同步,相對來說減少點效率,但能減少發(fā)生的錯誤!
比如鏡像論壇數(shù)據(jù)同步:
1.母論壇和鏡像論壇的數(shù)據(jù)全寫在母論壇數(shù)據(jù)庫里,主從模式,讀取只在本地讀取,這個需要修改程序!
2.每次寫數(shù)據(jù),都同時提交到兩個數(shù)據(jù)庫中,安全,但是效率很差,也得修改程序!
MSSQL
MSSQL數(shù)據(jù)同步利用數(shù)據(jù)庫復(fù)制技術(shù)實現(xiàn)數(shù)據(jù)同步更新(來自網(wǎng)絡(luò),也是非常完美的教程)
復(fù)制的概念
復(fù)制是將一組數(shù)據(jù)從一個數(shù)據(jù)源拷貝到多個數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個存儲站點上的有效方式。使用復(fù)制技術(shù),用戶可以將一份數(shù)據(jù)發(fā)布到多臺服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限的許可的范圍內(nèi)共享這份數(shù)據(jù)。復(fù)制技術(shù)可以確保分布在不同地點的數(shù)據(jù)自動同步更新,從而保證數(shù)據(jù)的一致性。
SQL復(fù)制的基本元素包括
出版服務(wù)器、訂閱服務(wù)器、分發(fā)服務(wù)器、出版物、文章
SQL復(fù)制的工作原理
SQLSERVER主要采用出版物、訂閱的方式來處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個分發(fā)數(shù)據(jù)庫,可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器
SQLSERVER復(fù)制技術(shù)類型
SQLSERVER提供了三種復(fù)制技術(shù),分別是:
1、快照復(fù)制(呆會我們就使用這個)
2、事務(wù)復(fù)制
3、合并復(fù)制
只要把上面這些概念弄清楚了那么對復(fù)制也就有了一定的理解。接下來我們就一步一步來實現(xiàn)復(fù)制的步驟。
之一先來配置出版服務(wù)器
(1)選中指定節(jié)點
(2)從下拉菜單的子菜單中選擇命令
(3)系統(tǒng)彈出一個對話框點然后看著提示一直操作到完成。
(4)當(dāng)完成了出版服務(wù)器的設(shè)置以后系統(tǒng)會為該服務(wù)器的樹形結(jié)構(gòu)中添加一個復(fù)制監(jiān)視器。同時也生成一個分發(fā)數(shù)據(jù)庫(distribution)
第二創(chuàng)建出版物
(1)選中指定的服務(wù)器
(2)從菜單的子菜單中選擇命令。此時系統(tǒng)會彈出一個對話框
(3)選擇要創(chuàng)建出版物的數(shù)據(jù)庫,然后單擊
(4)在的提示對話框中單擊系統(tǒng)就會彈出一個對話框。對話框上的內(nèi)容是復(fù)制的三個類型。我們現(xiàn)在選之一個也就是默認(rèn)的快照發(fā)布(其他兩個大家可以去看看幫助)
(5)單擊系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫服務(wù)器類型,SQLSERVER允許在不同的數(shù)據(jù)庫如ORACLE或ACCESS之間進(jìn)行數(shù)據(jù)復(fù)制。但是在這里我們選擇運行”SQLSERVER2023″的數(shù)據(jù)庫服務(wù)器
(6)單擊系統(tǒng)就彈出一個定義文章的對話框也就是選擇要出版的表
(7)然后直到操作完成。當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫也就變成了一個共享數(shù)據(jù)庫。
第三設(shè)計訂閱
(1)選中指定的訂閱服務(wù)器
(2)從下拉菜單中選擇子菜單的
(3)按照單擊操作直到系統(tǒng)會提示檢查SQLSERVER代理服務(wù)的運行狀態(tài),執(zhí)行復(fù)制操作的前提條件是SQLSERVER代理服務(wù)必須已經(jīng)啟動。
(4)單擊。完成訂閱操作。
完成上面的步驟其實復(fù)制也就是成功了。但是如何來知道復(fù)制是否成功了呢?這里可以通過這種方法來快速看是否成功。展開出版服務(wù)器下面的復(fù)制——發(fā)布內(nèi)容——右鍵發(fā)布內(nèi)容——屬性——擊活——狀態(tài)然后點立即運行代理程序接著點代理程序?qū)傩該艋钫{(diào)度把調(diào)度設(shè)置為每一天發(fā)生,每一分鐘,在0:00:00和23:59:59之間。接下來就是判斷復(fù)制是否成功了打開C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以時間做為文件名的文件夾差不多一分中就產(chǎn)生一個。要是你還不信的話就打開你的數(shù)據(jù)庫看在訂閱的服務(wù)器的指定訂閱數(shù)據(jù)庫下看是不是看到了你剛才所發(fā)布的表—
一個手工同步的方案
–定時同步服務(wù)器上的數(shù)據(jù)
–例子:
–測試環(huán)境,SQLServer2023,遠(yuǎn)程服務(wù)器名:xz,用戶名為:sa,無密碼,測試數(shù)據(jù)庫:test
–服務(wù)器上的表(查詢分析器連接到服務(wù)器上創(chuàng)建)
createtable(idintprimarykey,numbervarchar(4),namevarchar(10))
go
–以下在局域網(wǎng)(本機操作)
–本機的表,state說明:null表示新增記錄,1表示修改過的記錄,0表示無變化的記錄
ifexists(select*fromdbo.sysobjectswhereid=object_id(N”)andOBJECTPROPERTY(id,N’IsUserTable’)=1)
droptable
GO
createtable(idintidentity(1,1),numbervarchar(4),namevarchar(10),statebit)
go
–創(chuàng)建觸發(fā)器,維護(hù)state字段的值
createtriggert_stateon
afterupdate
as
updatesetstate=1
fromajoininsertedbona.id=b.id
wherea.stateisnotnull
go
–為了方便同步處理,創(chuàng)建鏈接服務(wù)器到要同步的服務(wù)器
–這里的遠(yuǎn)程服務(wù)器名為:xz,用戶名為:sa,無密碼
ifexists(select1frommaster..sysserverswheresrvname=’srv_lnk’)
execsp_dropserver’srv_lnk’,’droplogins’
go
execsp_addlinkedserver’srv_lnk’,”,’SQLOLEDB’,’xz’
execsp_addlinkedsrvlogin’srv_lnk’,’false’,null,’sa’
go
–創(chuàng)建同步處理的存儲過程
ifexists(select*fromdbo.sysobjectswhereid=object_id(N’.
‘)andOBJECTPROPERTY(id,N’IsProcedure’)=1)
dropprocedure.
GO
createprocp_synchro
as
–setXACT_ABORTon
–啟動遠(yuǎn)程服務(wù)器的MSDTC服務(wù)
–execmaster..xp_cmdshell’isql/S”xz”/U”sa”/P””/q”execmaster..xp_cmdshell”netstartmsdtc”,no_output”‘,no_output
–啟動本機的MSDTC服務(wù)
–execmaster..xp_cmdshell’netstartmsdtc’,no_output
–進(jìn)行分布事務(wù)處理,如果表用標(biāo)識列做主鍵,用下面的方法
–BEGINDISTRIBUTEDTRANSACTION
–同步刪除的數(shù)據(jù)
deletefromsrv_lnk.test.dbo.
whereidnotin(selectidfrom)
–同步新增的數(shù)據(jù)
insertintosrv_lnk.test.dbo.
selectid,number,namefromwherestateisnull
–同步修改的數(shù)據(jù)
updatesrv_lnk.test.dbo.set
number=b.number,name=b.name
fromsrv_lnk.test.dbo.a
joinbona.id=b.id
whereb.state=1
–同步后更新本機的標(biāo)志
updatesetstate=0whereisnull(state,1)=1
–COMMITTRAN
go
–創(chuàng)建作業(yè),定時執(zhí)行數(shù)據(jù)同步的存儲過程
ifexists(SELECT1frommsdb..sysjobswherename=’數(shù)據(jù)處理’)
EXECUTEmsdb.dbo.sp_delete_job@job_name=’數(shù)據(jù)處理’
execmsdb..sp_add_job@job_name=’數(shù)據(jù)處理’
–創(chuàng)建作業(yè)步驟
declare@sqlvarchar(800),@dbnamevarchar(250)
select@sql=’execp_synchro’–數(shù)據(jù)處理的命令
,@dbname=db_name()–執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)庫名
execmsdb..sp_add_jobstep@job_name=’數(shù)據(jù)處理’,
@step_name=’數(shù)據(jù)同步’,
@subsystem=’TSQL’,
@database_name=@dbname,
@command=@sql,
@retry_attempts=5,–重試次數(shù)
@retry_interval=5–重試間隔
–創(chuàng)建調(diào)度
EXECmsdb..sp_add_jobschedule@job_name=’數(shù)據(jù)處理’,
@name=’時間安排’,
@freq_type=4,–每天
@freq_interval=1,–每天執(zhí)行一次
@active_start_time=點執(zhí)行
數(shù)據(jù)庫 本地 同步的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫 本地 同步,數(shù)據(jù)庫本地同步:實現(xiàn)數(shù)據(jù)的實時備份和共享,如何實現(xiàn)同步兩個服務(wù)器的數(shù)據(jù)庫?,2臺MSSQL服務(wù)器某數(shù)據(jù)庫怎么同步?的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文標(biāo)題:數(shù)據(jù)庫本地同步:實現(xiàn)數(shù)據(jù)的實時備份和共享(數(shù)據(jù)庫本地同步)
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/cdcdhej.html


咨詢
建站咨詢
