當前位置:首頁 » 操作系統 » 不同伺服器的資料庫同步

不同伺服器的資料庫同步

發布時間: 2023-04-22 08:04:38

Ⅰ 不同伺服器之間的數據同步(skynet 和 c++)

最近公司開發了一個捕魚游戲,現在想要把這個項目嵌入到公司已有的游戲中,成為其子游戲,開發捕魚的伺服器框架是基於 skynet 的框架(獨立一套系統)。而已有的游戲伺服器框架是c++自研框架(也是獨立的一套系統),所以需要解決一個問題:就是兩個系統中數據共享的問題,因為用戶都是現有游戲中的。捕魚並沒有用戶,用戶從主游戲中進入到捕魚勢必瞎早要把 ta 的金幣、鑽石、道具等數據帶到捕魚伺服器,最終用戶退出捕魚游戲,要把用戶現在的金幣和其他數據移動回去,這里就涉及到數據共享和維護數據唯一性的問題了。

最初的方案是選擇 http 請求通知的方式進行通信。但是考慮到極端情況: 如高並發,如果一秒鍾發起 2W 次請求那麼以 http 的處理方式就是要 每秒建立tcp鏈接和斷開鏈接 * 2W次,文件描述符佔用、和不能便捷集成到兩個系統業務層中、以及網路異常處理需要依賴到DB保存數據待後續恢復、以及後續的集群部署需要再做考慮,等等這些缺點都是無法忍受的。

後面考慮用 redis 的 Pub/Sub 來實現高效的 MQ 並且在請求發起的時候如果超時,如果數據是必須被對方接收的話,還可以直接把數據寫入緩存,讓對端自行獲取。遂和其他 xxMQ 進行對比,最後不管從易用性、通用性、高可用等等方面上都是 redis 勝出,當然 redis 的 Pub/Sub 也是有缺點的,但是使用到上述的這個應用場景來說,都是可以忽略的。

數據一致性保證機制
如果發起端請求對端超時 會將請求的數據寫入到緩存,其格式如下:
保存到 redis 中的類型:set
key: 捕魚縮寫(f) + "_" + 用戶uid
value: "請求的命令 "+" @ " + [ k + "|" + value [ k + "|" + value ...] ]

實例 key = f_10001 value = req_mv_gold@gold=10000|session=1
含義為:捕魚發起的請求(f) 用戶uid(10001) 命令(req_mv_gold)和攜帶數據用 "@" 分割,數據中欄位與欄位用 "|" 進行分割。數據解析,按對應命令協議定義結構進行解析。

1.用戶登錄了捕魚,進入捕魚游戲,用戶向鬥地主發起請求 req_mv_gold 數據中 gold 欄位值為 0,鬥地主就把用戶的金幣先保存到臨時變數,然後置空用戶的金幣,再把用戶金幣通過 rsp_mv_gold 發送給捕魚,如果 rsp_mv_gold 沒有收到響應,鬥地主要把錢加回給用戶,意味這一次轉移金幣失敗

2.假如用戶已經成功完成了上面的步驟,此時用戶在鬥地主中的金幣值為 0,在捕魚中的金幣值為用戶實際金幣值。

3.等用戶退出捕魚游戲就再次向鬥地主發起第一個步驟的請求,如果擾坦成功,則完成了金幣轉移,如果失敗(可能鬥地主伺服器中,這個用戶下線了,可能鬥地主奔潰了,可能網路阻塞或者掉線),捕魚會把這次的請求寫入到 redis 中,也就是上面的這個例子。

4.用戶再次登錄鬥地主時,鬥地主伺服器需要去redis中查看是否有 捕魚縮寫(f) + " " + 用戶uid 的這個健的存在,如果存在了,就要讀取該鍵全部的成員
如:SMEMBERS f_10001,(理論上來說,每種請求最多一條記錄)並且刪除掉 redis中的 捕魚縮寫(f)+"
"+uid 的健 如:DEL f_10001。並且按具體內容恢復數據。

這個機制適用於全部需要確保對端收到的命令。如果對端是磨李雀捕魚,那麼 set 的鍵是 鬥地主縮寫(d) + "_" + uid,表示鬥地主發起的請求失敗了,捕魚會按上面的流程自行處理。

Ⅱ Oracle不同資料庫之間同步處理方案

背景:項目中遇到的問題,需要二區兩枝逗台資料庫之間同步一些表,以及導出sql文件同步至三區資料庫。

新建SQL文件生成的目錄D:mptmsudataDNLTBDIR。

二區資料庫中執行下列語句:

1)新建二區資料庫伺服器到二區資料庫伺服器的資料庫DATABASE LINK文件。

二區資料庫中執行下列語句:

2)二區資料庫伺服器新建表DNL_TBJL。

二區資料庫中執行下列語句:

在二區資料庫伺服器說新建相關表的觸發器,觸發器實現的碼告功能是東區2區向西區直接通過DBLINK直接執行;東區2區向東區3區通過生成SQL文件到D:mptmsudataDNLTBDIR目錄下;觸發器的每次操作都記錄到表格DNL_TBJL(id, tables,czlx, SQL, TIME, BAK)內。

通過Windows系統自帶的計劃任猛模賣務執行下面批處理實現數據入庫

1)三區區資料庫伺服器新建表DNL_SQLJL。

三區資料庫中執行下列語句:

2)三區區資料庫伺服器新建計劃任務定期執行DQ3QRK-ZXWJ.bat批處理。

3)DQ3QRK-ZXWJ.bat批處理調用DQ3QRK-ZXSQL.bat來執行入庫操作。

DQ3QRK-ZXWJ.bat語句如下:

DQ3QRK-ZXSQL.bat語句如下:

Ⅲ 如何實現同步兩個伺服器的資料庫

同步兩個SQLServer資料庫x0dx0ax0dx0a如何同步兩個sqlserver資料庫的內容?程序代碼可以有版本管理cvs進行同步管理,可是資料庫同步就非常麻煩,只能自己改了一個後再去改另一個,如果忘記了更改另一個經常造成兩個資料庫的結構或內容上不一致.各位有什麼好的方法嗎?x0dx0ax0dx0a一、分發與復制x0dx0ax0dx0a用強制訂閱實現資料庫同步操作. 大量和批量的數據可以用資料庫的同步機制處理:x0dx0a//x0dx0a說明:x0dx0a為方便操作,所有操作均在發布伺服器(分發伺服器)上操作,並使用推模式x0dx0a在客戶機器使用強制訂閱方式。x0dx0ax0dx0a二、測試通過x0dx0ax0dx0a1:環境x0dx0ax0dx0a伺服器環境:x0dx0a機器名稱: zehuadbx0dx0a操作系統:windows 2000 serverx0dx0a資料庫版本:sql 2000 server 個人版x0dx0ax0dx0a客戶端x0dx0a機器名稱:zlpx0dx0a操作系統:windows 2000 serverx0dx0a資料庫版本:sql 2000 server 個人版x0dx0ax0dx0a2:建用戶帳號x0dx0ax0dx0a在伺服器端建立域用戶帳號x0dx0a我的電腦管理->本地用戶和組->用戶->建立x0dx0ausername:zlpx0dx0auserpwd:zlpx0dx0ax0dx0a3:重新啟動伺服器mssqlserverx0dx0ax0dx0a我的電腦->控制面版->管理工具->服務->mssqlserver 服務x0dx0a(更改為:域用戶帳號,我們新建的zlp用戶 .\zlp,密碼:zlp)x0dx0ax0dx0a4:安裝分發伺服器x0dx0ax0dx0aa:配置分發伺服器x0dx0a工具->復制->配置發布、訂閱伺服器和分發->下一步->下一步(所有的均採用默認配置)x0dx0ax0dx0ab:配置發布伺服器x0dx0a工具->復制->創建和管理發布->選擇要發布的資料庫(sz)->下一步->快照發布->下一步->選擇要發布的內容->下一步->下一步->下一步->完成x0dx0ax0dx0ac:強制配置訂閱伺服器(推模式,拉模式與此雷同)x0dx0a工具->復制->配置發布、訂閱伺服器和分發->訂閱伺服器->新建->sql server資料庫->輸入客戶端伺服器名稱(zlp)->使用sql server 身份驗證(sa,空密碼)->確定->應用->確定x0dx0ax0dx0ad:初始化訂閱x0dx0a復制監視器->發布伺服器(zehuadb)->雙擊訂閱->強制新建->下一步->選擇啟用的訂閱伺服器->zlp->下一步->下一步->下一步->下一步->完成x0dx0ax0dx0a5:測試配置是否成功x0dx0ax0dx0a復制監視器->發布衿?zehuadb)->雙擊sz:sz->點狀態->點立即運行代理程序x0dx0ax0dx0a查看:x0dx0a復制監視器->發布伺服器(zehuadb)->sz:sz->選擇zlp:sz(類型強制)->滑鼠右鍵->啟動同步處理x0dx0ax0dx0a如果沒有錯誤標志(紅色叉),恭喜您配置成功x0dx0ax0dx0a6:測試數據x0dx0ax0dx0a在伺服器執行:x0dx0ax0dx0a選擇一個表,執行如下sql: insert into wq_newsgroup_s select '測試成功',5x0dx0ax0dx0a復制監視器->發布伺服器(zehuadb)->sz:sz->快照->啟動代理程序 ->zlp:sz(強制)->啟動同步處理x0dx0ax0dx0a去查看同步的 wq_newsgroup_s 是否插入了一條新的記錄x0dx0ax0dx0a測試完畢,通過。x0dx0a7:修改資料庫的同步時間,一般選擇夜晚執行資料庫同步處理x0dx0a(具體操作略) :dx0dx0ax0dx0a/*x0dx0a注意說明:x0dx0a伺服器一端不能以(local)進行數據的發布與分發,需要先刪除注冊,然後新建注冊本地計算機名稱x0dx0ax0dx0a卸載方式:工具->復制->禁止發布->是在"zehuadb"上靜止發布,卸載所有的資料庫同步配置伺服器x0dx0ax0dx0a注意:發布伺服器、分發伺服器中的sqlserveragent服務必須啟動x0dx0a採用推模式: "d:\microsoft sql server\mssql\repldata\unc" 目錄文件可以不設置共享x0dx0a拉模式:則需要共享~!x0dx0a*/x0dx0a少量資料庫同步可以採用觸發器實現,同步單表即可。x0dx0ax0dx0a三、配置過程中可能出現的問題x0dx0ax0dx0a在sql server 2000里設置和使用資料庫復制之前,應先檢查相關的幾台sql server伺服器下面幾點是否滿足:x0dx0ax0dx0a1、mssqlserver和sqlserveragent服務是否是以域用戶身份啟動並運行的(.\administrator用戶也是可以的)x0dx0ax0dx0a如果登錄用的是本地系統帳戶local,將不具備網路功能,會產生以下錯誤:x0dx0ax0dx0a進程未能連接到distributor '@server name'x0dx0ax0dx0a(如果您的伺服器已經用了sql server全文檢索服務, 請不要修改mssqlserver和sqlserveragent服務的local啟動。x0dx0a會照成全文檢索服務不能用。請換另外一台機器來做sql server 2000里復制中的分發伺服器。)x0dx0ax0dx0a修改服務啟動的登錄用戶,需要重新啟動mssqlserver和sqlserveragent服務才能生效。x0dx0ax0dx0a2、檢查相關的幾台sql server伺服器是否改過名稱(需要srvid=0的本地機器上srvname和datasource一樣)x0dx0ax0dx0a在查詢分析器里執行:x0dx0ause masterx0dx0aselect srvid,srvname,datasource from sysserversx0dx0ax0dx0a如果沒有srvid=0或者srvid=0(也就是本機器)但srvname和datasource不一樣, 需要按如下方法修改:x0dx0ax0dx0ause masterx0dx0agox0dx0a-- 設置兩個變數x0dx0adeclare @serverproperty_servername varchar(100),x0dx0a@servername varchar(100)x0dx0a-- 取得windows nt 伺服器和與指定的 sql server 實例關聯的實例信息x0dx0aselect @serverproperty_servername = convert(varchar(100), serverproperty('servername'))x0dx0a-- 返回運行 microsoft sql server 的本地伺服器名稱x0dx0aselect @servername = convert(varchar(100), @@servername)x0dx0a-- 顯示獲取的這兩個參數x0dx0aselect @serverproperty_servername,@servernamex0dx0a--如果@serverproperty_servername和@servername不同(因為你改過計算機名字),再運行下面的x0dx0a--刪除錯誤的伺服器名x0dx0aexec sp_dropserver @server=@servernamex0dx0a--添加正確的伺服器名x0dx0aexec sp_addserver @server=@serverproperty_servername, @local='local'x0dx0ax0dx0a修改這項參數,需要重新啟動mssqlserver和sqlserveragent服務才能生效。x0dx0ax0dx0a這樣一來就不會在創建復制的過程中出現18482、18483錯誤了。x0dx0ax0dx0a3、檢查sql server企業管理器裡面相關的幾台sql server注冊名是否和上面第二點里介紹的srvname一樣x0dx0ax0dx0a不能用ip地址的注冊名。x0dx0ax0dx0a(我們可以刪掉ip地址的注冊,新建以sql server管理員級別的用戶注冊的伺服器名)x0dx0ax0dx0a這樣一來就不會在創建復制的過程中出現14010、20084、18456、18482、18483錯誤了。x0dx0ax0dx0a4、檢查相關的幾台sql server伺服器網路是否能夠正常訪問x0dx0ax0dx0a如果ping主機ip地址可以,但ping主機名不通的時候,需要在x0dx0ax0dx0awinnt\system32\drivers\etc\hosts (win2000)x0dx0awindows\system32\drivers\etc\hosts (win2003)x0dx0ax0dx0a文件里寫入資料庫伺服器ip地址和主機名的對應關系。x0dx0ax0dx0a例如:x0dx0ax0dx0a127.0.0.1 localhostx0dx0a192.168.0.35 oracledb oracledbx0dx0a192.168.0.65 fengyu02 fengyu02x0dx0a202.84.10.193 bj_db bj_dbx0dx0a或者在sql server客戶端網路實用工具里建立別名,例如:x0dx0a5、系統需要的擴展存儲過程是否存在(如果不存在,需要恢復):x0dx0ax0dx0asp_addextendedproc 'xp_regenumvalues',@dllname ='xpstar.dll'x0dx0agox0dx0asp_addextendedproc 'xp_regdeletevalue',@dllname ='xpstar.dll'x0dx0agox0dx0asp_addextendedproc 'xp_regdeletekey',@dllname ='xpstar.dll'x0dx0agox0dx0asp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' x0dx0ax0dx0a接下來就可以用sql server企業管理器里[復制]-> 右鍵選擇 ->[配置發布、訂閱伺服器和分發]的圖形界面來配置資料庫復制了。x0dx0ax0dx0a下面是按順序列出配置復制的步驟:x0dx0ax0dx0a1、建立發布和分發伺服器x0dx0ax0dx0a[歡迎使用配置發布和分發向導]->[選擇分發伺服器]->[使"@servername"成為它自己的分發伺服器,sql server將創建分發資料庫和日誌]x0dx0a->[制定快照文件夾]-> [自定義配置] -> [否,使用下列的默認配置] -> [完成]x0dx0ax0dx0a上述步驟完成後, 會在當前"@servername" sql server資料庫里建立了一個distribion庫和 一個distributor_admin管理員級別的用戶(我們可以任意修改密碼)。x0dx0ax0dx0a伺服器上新增加了四個作業:x0dx0ax0dx0a[ 代理程序歷史記錄清除: distribution ]x0dx0a[ 分發清除: distribution ]x0dx0a[ 復制代理程序檢查 ]x0dx0a[ 重新初始化存在數據驗證失敗的訂閱 ]x0dx0ax0dx0asql server企業管理器里多了一個復制監視器, 當前的這台機器就可以發布、分發、訂閱了。x0dx0ax0dx0a我們再次在sql server企業管理器里[復制]-> 右鍵選擇 ->[配置發布、訂閱伺服器和分發]x0dx0ax0dx0a我們可以在 [發布伺服器和分發伺服器的屬性] 窗口-> [發布伺服器] -> [新增] -> [確定] -> [發布資料庫] -> [事務]/[合並] -> [確定] -> [訂閱伺服器] -> [新增] -> [確定]x0dx0ax0dx0a把網路上的其它sql server伺服器添加成為發布或者訂閱伺服器.x0dx0ax0dx0a新增一台發布伺服器的選項:x0dx0ax0dx0a我這里新建立的jin001發布伺服器是用管理員級別的資料庫用戶test連接的,x0dx0ax0dx0a到發布伺服器的管理鏈接要輸入密碼的可選框, 默認的是選中的,x0dx0ax0dx0a在新建的jin001發布伺服器上建立和分發伺服器fengyu/fengyu的鏈接的時需要輸入distributor_admin用戶的密碼。到發布伺服器的管理鏈接要輸入密碼的可選框,也可以不選,也就是不需要密碼來建立發布到分發伺服器的鏈接(這當然欠缺安全,在測試環境下可以使用)。x0dx0ax0dx0a2、新建立的網路上另一台發布伺服器(例如jin001)選擇分發伺服器x0dx0ax0dx0a[歡迎使用配置發布和分發向導]->[選擇分發伺服器]x0dx0ax0dx0a-> 使用下列伺服器(選定的伺服器必須已配置為分發伺服器) -> [選定伺服器](例如fengyu/fengyu)x0dx0ax0dx0a-> [下一步] -> [輸入分發伺服器(例如fengyu/fengyu)的distributor_admin用戶的密碼兩次]x0dx0ax0dx0a-> [下一步] -> [自定義配置] -> [否,使用下列的默認配置]x0dx0ax0dx0a-> [下一步] -> [完成] -> [確定]x0dx0ax0dx0a建立一個資料庫復制發布的過程:x0dx0ax0dx0a[復制] -> [發布內容] -> 右鍵選擇 -> [新建發布]x0dx0ax0dx0a-> [下一步] -> [選擇發布資料庫] -> [選中一個待發布的資料庫]x0dx0ax0dx0a-> [下一步] -> [選擇發布類型] -> [事務發布]/[合並發布]x0dx0ax0dx0a-> [下一步] -> [指定訂閱伺服器的類型] -> [運行sql server 2000的伺服器]x0dx0ax0dx0a-> [下一步] -> [指定項目] -> [在事務發布中只可以發布帶主鍵的表] -> [選中一個有主鍵的待發布的表]x0dx0ax0dx0a->[在合並發布中會給表增加唯一性索引和 rowguidcol 屬性的唯一標識符欄位[rowguid],默認值是newid()]x0dx0ax0dx0a(添加新列將: 導致不帶列列表的 insert 語句失敗,增加表的大小,增加生成第一個快照所要求的時間)x0dx0ax0dx0a->[選中一個待發布的表]x0dx0ax0dx0a-> [下一步] -> [選擇發布名稱和描述] ->x0dx0ax0dx0a-> [下一步] -> [自定義發布的屬性] -> [否,根據指定方式創建發布]x0dx0ax0dx0a-> [下一步] -> [完成] -> [關閉]x0dx0ax0dx0a發布屬性里有很多有用的選項:設定訂閱到期(例如24小時)x0dx0ax0dx0a設定發布表的項目屬性:x0dx0ax0dx0a常規窗口可以指定發布目的表的名稱,可以跟原來的表名稱不一樣。x0dx0ax0dx0a下圖是命令和快照窗口的欄目x0dx0ax0dx0a( sql server 資料庫復制技術實際上是用insert,update,delete操作在訂閱伺服器上重做發布伺服器上的事務操作x0dx0ax0dx0a看文檔資料需要把發布資料庫設成完全恢復模式,事務才不會丟失x0dx0ax0dx0a但我自己在測試中發現發布資料庫是簡單恢復模式下,每10秒生成一些大事務,10分鍾後再收縮資料庫日誌,x0dx0a這期間發布和訂閱伺服器上的作業都暫停,暫停恢復後並沒有丟失任何事務更改 )x0dx0ax0dx0a發布表可以做數據篩選,例如只選擇表裡面的部分列:x0dx0ax0dx0a例如只選擇表裡某些符合條件的記錄, 我們可以手工編寫篩選的sql語句:x0dx0ax0dx0a發布表的訂閱選項,並可以建立強制訂閱:x0dx0ax0dx0a成功建立了發布以後,發布伺服器上新增加了一個作業: [ 失效訂閱清除 ]x0dx0ax0dx0a分發伺服器上新增加了兩個作業:x0dx0a[ jin001-dack-dack-5 ] 類型[ repl快照 ]x0dx0a[ jin001-dack-3 ] 類型[ repl日誌讀取器 ]x0dx0ax0dx0a上面藍色字的名稱會根據發布伺服器名,發布名及第幾次發布而使用不同的編號x0dx0ax0dx0arepl快照作業是sql server復制的前提條件,它會先把發布的表結構,數據,索引,約束等生成到發布伺服器的os目錄下文件x0dx0a(當有訂閱的時候才會生成, 當訂閱請求初始化或者按照某個時間表調度生成)x0dx0ax0dx0arepl日誌讀取器在事務復制的時候是一直處於運行狀態。(在合並復制的時候可以根據調度的時間表來運行)x0dx0ax0dx0a建立一個資料庫復制訂閱的過程:x0dx0ax0dx0a[復制] -> [訂閱] -> 右鍵選擇 -> [新建請求訂閱]x0dx0ax0dx0a-> [下一步] -> [查找發布] -> [查看已注冊伺服器所做的發布]x0dx0ax0dx0a-> [下一步] -> [選擇發布] -> [選中已經建立發布伺服器上的資料庫發布名]x0dx0ax0dx0a-> [下一步] -> [指定同步代理程序登錄] -> [當代理程序連接到代理伺服器時:使用sql server身份驗證]x0dx0a(輸入發布伺服器上distributor_admin用戶名和密碼)x0dx0ax0dx0a-> [下一步] -> [選擇目的資料庫] -> [選擇在其中創建訂閱的資料庫名]/[也可以新建一個庫名]x0dx0ax0dx0a-> [下一步] -> [允許匿名訂閱] -> [是,生成匿名訂閱]x0dx0ax0dx0a-> [下一步] -> [初始化訂閱] -> [是,初始化架構和數據]x0dx0ax0dx0a-> [下一步] -> [快照傳送] -> [使用該發布的默認快照文件夾中的快照文件]x0dx0a(訂閱伺服器要能訪問發布伺服器的repldata文件夾,如果有問題,可以手工設置網路共享及共享許可權)x0dx0ax0dx0a-> [下一步] -> [快照傳送] -> [使用該發布的默認快照文件夾中的快照文件]x0dx0ax0dx0a-> [下一步] -> [設置分發代理程序調度] -> [使用下列調度] -> [更改] -> [例如每五分鍾調度一次]x0dx0ax0dx0a-> [下一步] -> [啟動要求的服務] -> [該訂閱要求在發布伺服器上運行sqlserveragent服務]x0dx0ax0dx0a-> [下一步] -> [完成] -> [確定]x0dx0ax0dx0a成功建立了訂閱後,訂閱伺服器上新增加了一個類別是[repl-分發]作業(合並復制的時候類別是[repl-合並])x0dx0ax0dx0a它會按照我們給的時間調度表運行資料庫同步復制的作業。x0dx0ax0dx0a3、sql server復制配置好後, 可能出現異常情況的實驗日誌:x0dx0ax0dx0a1.發布伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制沒有多大影響x0dx0ax0dx0a中斷期間,分發和訂閱都接收到沒有復制的事務信息x0dx0ax0dx0a2.分發伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制有一些影響x0dx0ax0dx0a中斷期間,發布伺服器的事務排隊堆積起來x0dx0a(如果設置了較長時間才刪除過期訂閱的選項, 繁忙發布資料庫的事務日誌可能會較快速膨脹),x0dx0ax0dx0a訂閱伺服器會因為訪問不到發布伺服器,反復重試x0dx0a我們可以設置重試次數和重試的時間間隔(最大的重試次數是9999, 如果每分鍾重試一次,可以支持約6.9天不出錯)x0dx0ax0dx0a分發伺服器sql server服務啟動,網路接通以後,發布伺服器上的堆積作業將按時間順序作用到訂閱機器上:x0dx0ax0dx0a會需要一個比較長的時間(實際上是生成所有事務的insert,update,delete語句,在訂閱伺服器上去執行)x0dx0a我們在普通的pc機上實驗的58個事務100228個命令執行花了7分28秒.x0dx0ax0dx0a3.訂閱伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制影響比較大,可能需要重新初試化x0dx0ax0dx0a我們實驗環境(訂閱伺服器)從18:46分意外停機以, 第二天8:40分重啟動後, 已經設好的復制在8:40分以後又開始正常運行了, 發布伺服器上的堆積作業將按時間順序作用到訂閱機器上, 但復制管理器里出現快照的錯誤提示, 快照可能需要重新初試化,復制可能需要重新啟動.(我們實驗環境的機器並沒有進行快照初試化,復制仍然是成功運行的)x0dx0ax0dx0a4、刪除已經建好的發布和定閱可以直接用delete刪除按鈕x0dx0ax0dx0a我們最好總是按先刪定閱,再刪發布,最後禁用發布的順序來操作。x0dx0ax0dx0a如果要徹底刪去sql server上面的復制設置, 可以這樣操作:x0dx0ax0dx0a[復制] -> 右鍵選擇 [禁用發布] -> [歡迎使用禁用發布和分發向導]x0dx0ax0dx0a-> [下一步] -> [禁用發布] -> [要在"@servername

Ⅳ 如何實現兩台伺服器mysql資料庫同步

1.主上修改my.cnf文件:
server-id=1
log-bin=mysql-bin
2.從上修改配置文件 my.cnf
server-id=2
relay-log=relay-bin
read-only =1
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
#replicate-wild-do-table = tt.admin
replicate-wild-do-table = my_db.stu // 所要同步的資料庫的單個蔽羨手錶
3. 創建宏嫌 同步的用戶(主上)
grant replication client,replication slave on *.* to rep@'10.41.50.105' identified by 'root';

4.同步到主庫(在從上操作)
change master to master_host='10.41.50.80',master_user='rep',master_password='派灶root';
5.在從上驗證:
show slave status\G;

主從同步某些表

Ⅳ 怎麼實現兩台伺服器的mysql數據同步

可以通過程序實現。
功能如下:
一、通過程序實時監控被監控的資料庫的數據變動情況。
二、數據同步程序,當監控數據發生變化變更時,另一台伺服器資料庫將進行同步更新數據。

任何編程語言都可以實現。具體編程方法得看你自身資料庫的情況而編寫了。

Ⅵ Mysql兩台資料庫伺服器異地資料庫同步

以下配置在本機上已經成功:

實現功能:A為主伺服器,B為從伺服器,初始狀態時,A和B中的數據信息相同,當A中的數據發生變化時,B也跟著發生相應的變化,使得A和B的數據信息同步,達到備份的目的。

環境:
A、B的MySQL資料庫版本同為4.1.20
A:
操作系統:Windows 2003 server
IP地址:192.168.100.1
B:
操作系統:Windows 2003 server
的IP地址:192.168.100.2

配置過程:
1、在A的資料庫中建立一個備份帳戶,命令如下:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO backup@'192.168.100.2'
IDENTIFIED BY 『1234』;

建立一個帳戶backup,並且只能允許從192.168.100.2這個地址上來登陸,密碼是1234。

2、因為mysql版本新密碼演算法不同,所以進入mysql下,輸入:set password for 'backup'@'192.168.100.2'=old_password('1234');

3、關停A伺服器,將A中的數據拷貝到B伺服器中,使得A和B中的數據同步,並且確保在全部設置操作結束前,禁止在A和B伺服器中進行寫操作,使得兩資料庫中的數據一定要相同!

4、對A伺服器的配置進行修改,打開mysql/my.ini文件,在[mysqld]下面添加如下內容:
server-id=1
log-bin=c:\log-bin.log

server-id:為主伺服器A的ID值
log-bin:二進制變更日值

5、重啟A伺服器,從現在起,它將把客戶堆有關資料庫的修改記載到二進制變更日誌里去。

6、關停B伺服器,對B伺服器錦熙配置,以便讓它知道自己的鏡像ID、到哪裡去找主伺服器以及如何去連接伺服器。最簡單的情況是主、從伺服器分別運行在不同的主機上並都使用著默認的TCP/IP埠,只要在從伺服器啟動時去讀取的mysql/my.ini文件里添加以下幾行指令就行了。
[mysqld]
server-id=2
master-host=192.168.100.1
master-user=backup
master-password=1234
//以下內容為可選
replicate-do-db=backup

server-id:從伺服器B的ID值。注意不能和主伺服器的ID值相同。
master-host:主伺服器的IP地址。
master-user:從伺服器連接主伺服器的帳號。
master-password:從伺服器連接主伺服器的帳號密碼。
replicate-do-db:告訴主伺服器只對指定的資料庫進行同步鏡像。

7、重啟從伺服器B。至此所有設置全部完成。更新A中的數據,B中也會立刻進行同步更新。如果從伺服器沒有進行同步更新,你可以通過查看從伺服器中的mysql_error.log日誌文件進行排錯。

8、由於設置了slave的配置信息,mysql在資料庫data目錄下生成master.info,所以如有要修改相關slave的配置要先刪除該文件,否則修改的配置不能生效。

Ⅶ 如何實現同步兩個伺服器的資料庫

同步兩個SQLServer資料庫
如何同步兩個sqlserver資料庫的內容?程序代碼可以有版本管理cvs進行同步管理,可是資料庫同步就非常麻煩,只能自己改了一個後再去改另一個,如果忘記了更改另一個經常造成兩個資料庫的結構或內容上不一致.各位有什麼好的方法嗎?
一、分發與復制
用強制訂閱實現資料庫同步操作.
大量和批量的數據可以用資料庫的同步機制處理:
//
說明:
為方便操作,所有操作均在發布伺服器(分發伺服器)上操作,並使用推模式
在客戶機器使用強制訂閱方式。
二、測試通過
1:環境
伺服器環境:
機器名稱:
zehuadb
操作系統:windows
2000
server
資料庫版本:sql
2000
server
個人版
客戶端
機器名稱:zlp
操作系統:windows
2000
server
資料庫版本:sql
2000
server
個人版
2:建用戶帳號
在伺服器端建立域用戶帳號
我的電腦管理->本地用戶和組->用戶->建立
username:zlp
userpwd:zlp
3:重新啟動伺服器mssqlserver
我的電腦->控制面版->管理工具->服務->mssqlserver
服務
(更改為:域用戶帳號,我們新建的zlp用戶
.\zlp,密碼:zlp)
4:安裝分發伺服器
a:配置分發伺服器
工具->復制->配置發布、訂閱伺服器和分發->下一步->下一步(所有的均採用默認配置)
b:配置發布伺服器
工具->復制->創建和管理發布->選擇要發布的資料庫(sz)->下一步->快照發布->下一步->選擇要發布的內容->下一步->下一步->下一步->完成
c:強制配置訂閱伺服器(推模式,拉模式與此雷同)
工具->復制->配置發布、訂閱伺服器和分發->訂閱伺服器->新建->sql
server資料庫->輸入客戶端伺服器名稱(zlp)->使用sql
server
身份驗證(sa,空密碼)->確定->應用->確定

Ⅷ 如何同步兩個SQLServer資料庫的內容

第一先來配置出版伺服器:

(1)選中指定[伺服器]節點

(2)從[工具]下拉菜單的[復制]子菜單中選擇[發布、訂閱伺服器和分發]命令

(3)系統彈出一個對話框點[下一步]然後看著提示一直操作到完成。

(4)當完成了出版伺服器的設置以後系統會為該伺服器的樹形結構中添加一個復制監視器。同時也生成一個分發資料庫(distribution)

第二創建出版物:

(1)選中指定的伺服器

(2)[工具]菜單的[復制]子菜單中選擇[創建和管理發布]命令。此時系統會彈出一個對話框

(3)選擇要創建出版物的資料庫,然後單擊[創建發布]

(4)在[創建發布向導]的提示對話框中單擊[下一步]系統就會彈出一個對話框。對話框上的內容是復制的三個類型。我們現在選第一個也就是默認的快照發布(其他兩個大家可以去看看幫助)

(5)單擊[下一步]系統要求指定可以訂閱該發布的資料庫伺服器類型,SQLSERVER允許在不同的資料庫如 ORACLE或ACCESS之間進行數據復制。但是在這里我們選擇運行"SQL SERVER 2000"的資料庫伺服器

(6)單擊[下一步]系統就彈出一個定義文章的對話框也就是選擇要出版的表

(7)然後[下一步]直到操作完成。當完成出版物的創建後創建出版物的資料庫也就變成了一個共享資料庫。

Ⅸ 兩台伺服器兩個sql資料庫怎麼實現數據同步

用定時任務同步的方法來實現,用實時介面會影響系統的運作。
用spring做一個定時任務,每天低谷時候進行跑批處理就可以同步了。

Ⅹ 兩台伺服器的數據同步如何實現

1.安裝CentOS7.0yum install ssh 安裝SSH協議yum install rsync (rsync是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件)service sshd restart 啟動服務任務

熱點內容
求中點編程 發布:2025-05-18 01:03:14 瀏覽:840
安卓pay是什麼 發布:2025-05-18 01:02:27 瀏覽:747
免費手游掛機腳本 發布:2025-05-18 00:55:43 瀏覽:354
sd卡手機存儲系統存儲 發布:2025-05-18 00:55:28 瀏覽:637
pythonlistintstr 發布:2025-05-18 00:48:18 瀏覽:604
輕應用緩存 發布:2025-05-18 00:31:02 瀏覽:252
鳥存儲空氣 發布:2025-05-18 00:20:24 瀏覽:201
linux刻錄iso 發布:2025-05-18 00:16:15 瀏覽:663
php動態參數 發布:2025-05-18 00:12:05 瀏覽:425
安卓應用上傳 發布:2025-05-18 00:11:57 瀏覽:803