新聞中心
隨著互聯(lián)網(wǎng)的快速發(fā)展,企業(yè)的數(shù)據(jù)量日益龐大,同時(shí),因?yàn)閼?yīng)用場(chǎng)景和技術(shù)特點(diǎn)的不同,許多企業(yè)在數(shù)據(jù)存儲(chǔ)和處理方面采用了不同的數(shù)據(jù)庫,比如傳統(tǒng)的關(guān)系型數(shù)據(jù)庫和新型的NoSQL數(shù)據(jù)庫。而在應(yīng)用開發(fā)中,為了使得不同的應(yīng)用能夠無縫地連接到這些不同類型的數(shù)據(jù)源,多數(shù)據(jù)庫支持就顯得尤為重要。

多數(shù)據(jù)庫支持的概念
多數(shù)據(jù)庫支持是指應(yīng)用程序具備訪問多個(gè)數(shù)據(jù)庫的能力。在企業(yè)應(yīng)用系統(tǒng)的開發(fā)中,多數(shù)情況下需要同時(shí)連接多個(gè)不同類型的數(shù)據(jù)源來支持更多的應(yīng)用場(chǎng)景,這就需要企業(yè)的開發(fā)人員使用多數(shù)據(jù)庫支持技術(shù)來實(shí)現(xiàn)這一目標(biāo)。
多數(shù)據(jù)庫支持的目的
多數(shù)據(jù)庫支持的主要目的是支持企業(yè)信息化建設(shè),使得企業(yè)的數(shù)據(jù)更加集中,管理更加規(guī)范化、標(biāo)準(zhǔn)化,從而提升企業(yè)的整體效率、降低操作成本,實(shí)現(xiàn)快速發(fā)展。
多數(shù)據(jù)庫支持的方法
多數(shù)據(jù)庫支持有多種實(shí)現(xiàn)方式,下面介紹幾種較為常見的:
1. 數(shù)據(jù)庫驅(qū)動(dòng)管理器(Database Driver Manager,簡(jiǎn)稱DDM)
DDM是Java SE提供的一種多數(shù)據(jù)庫支持方法,它可以提供額外的代碼,這些代碼可以在應(yīng)用處理過程中切換到不同的數(shù)據(jù)庫。開發(fā)人員只需編寫一種數(shù)據(jù)庫的代碼,就可以對(duì)不同類型的數(shù)據(jù)庫進(jìn)行訪問,省去了編寫不同代碼的麻煩。
2. 數(shù)據(jù)庫抽象層(Database Abstraction Layer,簡(jiǎn)稱DAL)
數(shù)據(jù)庫抽象層就是一種將不同類型的數(shù)據(jù)庫封裝成統(tǒng)一接口的方法,這樣應(yīng)用程序就可以通過調(diào)用這個(gè)接口來訪問不同類型的數(shù)據(jù)庫。它可以有效降低重復(fù)代碼的產(chǎn)生,提升應(yīng)用可維護(hù)性,并且在面對(duì)數(shù)據(jù)庫變更時(shí),只需修改DAO層即可,而不需要修改業(yè)務(wù)邏輯代碼。
3. 數(shù)據(jù)庫連接池(Database Connection Pool,簡(jiǎn)稱DCP)
數(shù)據(jù)庫連接池的主要目的是為了降低數(shù)據(jù)庫連接的開銷。當(dāng)多個(gè)應(yīng)用程序同時(shí)訪問數(shù)據(jù)庫時(shí),每次都需要重新建立連接,這對(duì)數(shù)據(jù)庫的負(fù)載有較大影響。數(shù)據(jù)庫連接池可以提供可管理的連接,允許多個(gè)應(yīng)用程序共享數(shù)據(jù)庫連接,降低了系統(tǒng)對(duì)數(shù)據(jù)庫的請(qǐng)求的數(shù)量,從而提升了系統(tǒng)的整體效率。
多數(shù)據(jù)庫支持的實(shí)踐
在多數(shù)據(jù)庫支持的實(shí)踐中,需要根據(jù)實(shí)際情況選擇不同的方法。
1. 應(yīng)用場(chǎng)景舉例
在實(shí)際應(yīng)用開發(fā)中,若應(yīng)用只需要訪問同類型的數(shù)據(jù)庫,則普通DAO層便可以滿足需求。但若應(yīng)用需要在多個(gè)類型的數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)交換,則需要使用數(shù)據(jù)庫抽象層技術(shù)實(shí)現(xiàn)不同類型的數(shù)據(jù)庫的訪問。
2. 經(jīng)驗(yàn)和技術(shù)要點(diǎn)
多數(shù)據(jù)庫支持技術(shù)屬于比較高級(jí)的應(yīng)用,應(yīng)用開發(fā)人員需要具備較強(qiáng)的編程能力和數(shù)據(jù)庫知識(shí)。在實(shí)際應(yīng)用過程中,應(yīng)針對(duì)不同應(yīng)用場(chǎng)景選擇合適的技術(shù)方法,同時(shí)需要具備良好的設(shè)計(jì)思路和技術(shù)實(shí)現(xiàn)方案。
3. 成功案例介紹
目前,多數(shù)大型網(wǎng)站和軟件都會(huì)采用多數(shù)據(jù)庫支持方法來滿足其對(duì)應(yīng)用場(chǎng)景的需求。比如知名的社交網(wǎng)站Facebook,它采用了MySQL、Cassandra、Hadoop等不同類型的數(shù)據(jù)庫,通過自己開發(fā)的多數(shù)據(jù)庫結(jié)構(gòu)來支持這些不同類型的數(shù)據(jù)源。
多數(shù)據(jù)庫支持技術(shù)在現(xiàn)代企業(yè)信息化建設(shè)中顯得尤為重要。在實(shí)際應(yīng)用過程中,應(yīng)用開發(fā)人員需要根據(jù)實(shí)際需求選擇不同類型的技術(shù)方法,設(shè)計(jì)出更加高效、可維護(hù)、具有重用性和可擴(kuò)展性的多數(shù)據(jù)庫支持結(jié)構(gòu)。企業(yè)需要不斷探索和創(chuàng)新,及時(shí)應(yīng)用最新技術(shù),才能更好地滿足市場(chǎng)需求,實(shí)現(xiàn)企業(yè)的快速發(fā)展。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220如何在單個(gè)Boot應(yīng)用中配置多數(shù)據(jù)庫
–在WEB.config配置下面的節(jié)點(diǎn),connectionstring寫的是連接數(shù)野昌據(jù)庫的字頌清扒符串datasource是填寫的數(shù)據(jù)庫,initialcatalog是連接的數(shù)據(jù)庫名稱,user id是連接數(shù)據(jù)的賬戶名,password是賬戶的密正洞碼
–在web應(yīng)用層獲取這段數(shù)據(jù)庫連接字符串的語句是
ConfigurationManager.ConnectionStrings.ToString()
如何實(shí)現(xiàn)同步兩個(gè)服務(wù)器的數(shù)據(jù)庫?
同步兩個(gè)SQLServer數(shù)據(jù)庫\x0d\x0a\x0d\x0a如何同步兩個(gè)sqlserver數(shù)據(jù)庫的內(nèi)容?程序代碼可以有版本管理cvs進(jìn)行悶畝同步管理,可是數(shù)據(jù)庫同步就非常麻煩,只能自己改了一個(gè)后再去改另一個(gè),如果忘記了更改另一個(gè)經(jīng)常造成兩個(gè)數(shù)據(jù)庫的結(jié)構(gòu)或內(nèi)容上不一致.各位有什么好的方法嗎?\x0d\x0a\x0d\x0a一、分發(fā)與復(fù)制\x0d\x0a\x0d\x0a用強(qiáng)制訂閱實(shí)現(xiàn)數(shù)據(jù)庫同步操作. 大量和批量的數(shù)據(jù)可以用數(shù)據(jù)庫的同步機(jī)制處理:\x0d\x0a//\x0d\x0a說明:\x0d\x0a為方便操作,所有操作均在發(fā)布服務(wù)器(分發(fā)服務(wù)器)上操作,并使用推模式\x0d\x0a在客戶機(jī)器使用強(qiáng)制訂閱方式。\x0d\x0a\x0d\x0a二、測(cè)試通過\x0d\x0a\x0d\x0a1:環(huán)境\x0d\x0a\x0d\x0a服務(wù)器環(huán)境:\x0d\x0a機(jī)器名稱: zehuadb\x0d\x0a操作系統(tǒng):windows 2023 server\x0d\x0a數(shù)據(jù)庫版本:sql 2023 server 個(gè)人版\x0d\x0a\x0d\x0a客戶端\x0d\x0a機(jī)器名稱:zlp\x0d\x0a操作系統(tǒng):windows 2023 server\x0d\x0a數(shù)據(jù)庫版本:sql 2023 server 個(gè)人版\x0d\x0a\x0d\x0a2:建用戶帳號(hào)\x0d\x0a\x0d\x0a在服務(wù)器端建立域用戶帳號(hào)\x0d\x0a我的電腦管理->本地用戶和組->用戶->建立\x0d\x0ausername:zlp\x0d\x0auserpwd:zlp\x0d\x0a\x0d\x0a3:重新啟動(dòng)服務(wù)器mssqlserver\x0d\x0a\x0d\x0a我的電腦->控制面版->管理工具->服務(wù)->mssqlserver 服務(wù)\x0d\x0a(更改為:域用戶帳號(hào),我們新建的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:強(qiáng)制配置訂閱服務(wù)器(推模式,拉模式與此雷同)\x0d\x0a工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->訂閱服務(wù)器->新建->sql server數(shù)據(jù)庫->輸入客戶端服務(wù)器名稱(zlp)->使用sql server 身份驗(yàn)證(sa,空密碼)->確定->應(yīng)用->確定\x0d\x0a\x0d\x0ad:初始化訂閱\x0d\x0a復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->雙擊訂閱->強(qiáng)制新建->下一步->選擇啟用的訂閱服務(wù)器->zlp->下一步->下一步->下一步->下一步->完成\x0d\x0a\x0d\x0a5:測(cè)試配置是否成功\x0d\x0a\x0d\x0a復(fù)制監(jiān)視器->發(fā)布衿?zehuadb)->雙擊sz:sz->點(diǎn)狀態(tài)->點(diǎn)立即運(yùn)行代理程序\x0d\x0a\x0d\x0a查看:\x0d\x0a復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->sz:sz->選擇zlp:sz(類型強(qiáng)制)->鼠標(biāo)右鍵->啟動(dòng)同步處理\x0d\x0a\x0d\x0a如果沒有錯(cuò)誤標(biāo)志(紅色叉),恭喜您配置成功\x0d\x0a\x0d\x0a6:測(cè)試數(shù)據(jù)\x0d\x0a\x0d\x0a在服務(wù)器執(zhí)行:\x0d\x0a\x0d\x0a選毀罩吵擇一個(gè)表,執(zhí)行如下sql:insert into wq_newsgroup_s select ‘測(cè)試成功’,5\x0d\x0a\x0d\x0a復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->sz:sz->快照->啟動(dòng)代理程序 ->zlp:sz(強(qiáng)制)->啟動(dòng)同步處理\x0d\x0a\x0d\x0a去查纖侍看同步的 wq_newsgroup_s 是否插入了一條新的記錄\x0d\x0a\x0d\x0a測(cè)試完畢,通過。\x0d\x0a7:修改數(shù)據(jù)庫的同步時(shí)間,一般選擇夜晚執(zhí)行數(shù)據(jù)庫同步處理\x0d\x0a(具體操作略) :d\x0d\x0a\x0d\x0a/*\x0d\x0a注意說明:\x0d\x0a服務(wù)器一端不能以(local)進(jìn)行數(shù)據(jù)的發(fā)布與分發(fā),需要先刪除注冊(cè),然后新建注冊(cè)本地計(jì)算機(jī)名稱\x0d\x0a\x0d\x0a卸載方式:工具->復(fù)制->禁止發(fā)布->是在”zehuadb”上靜止發(fā)布,卸載所有的數(shù)據(jù)庫同步配置服務(wù)器\x0d\x0a\x0d\x0a注意:發(fā)布服務(wù)器、分發(fā)服務(wù)器中的sqlserveragent服務(wù)必須啟動(dòng)\x0d\x0a采用推模式: “d:\microsoft sql server\mssql\repldata\unc” 目錄文件可以不設(shè)置共享\x0d\x0a拉模式:則需要共享~!\x0d\x0a*/\x0d\x0a少量數(shù)據(jù)庫同步可以采用觸發(fā)器實(shí)現(xiàn),同步單表即可。\x0d\x0a\x0d\x0a三、配置過程中可能出現(xiàn)的問題\x0d\x0a\x0d\x0a在sql server 2023里設(shè)置和使用數(shù)據(jù)庫復(fù)制之前,應(yīng)先檢查相關(guān)的幾臺(tái)sql server服務(wù)器下面幾點(diǎn)是否滿足:\x0d\x0a\x0d\x0a1、mssqlserver和sqlserveragent服務(wù)是否是以域用戶身份啟動(dòng)并運(yùn)行的(.\administrator用戶也是可以的)\x0d\x0a\x0d\x0a如果登錄用的是本地系統(tǒng)帳戶local,將不具備網(wǎng)絡(luò)功能,會(huì)產(chǎn)生以下錯(cuò)誤:\x0d\x0a\x0d\x0a進(jìn)程未能連接到distributor ‘@server name’\x0d\x0a\x0d\x0a(如果您的服務(wù)器已經(jīng)用了sql server全文檢索服務(wù), 請(qǐng)不要修改mssqlserver和sqlserveragent服務(wù)的local啟動(dòng)。\x0d\x0a會(huì)照成全文檢索服務(wù)不能用。請(qǐng)換另外一臺(tái)機(jī)器來做sql server 2023里復(fù)制中的分發(fā)服務(wù)器。)\x0d\x0a\x0d\x0a修改服務(wù)啟動(dòng)的登錄用戶,需要重新啟動(dòng)mssqlserver和sqlserveragent服務(wù)才能生效。\x0d\x0a\x0d\x0a2、檢查相關(guān)的幾臺(tái)sql server服務(wù)器是否改過名稱(需要srvid=0的本地機(jī)器上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(也就是本機(jī)器)但srvname和datasource不一樣, 需要按如下方法修改:\x0d\x0a\x0d\x0ause master\x0d\x0ago\x0d\x0a– 設(shè)置兩個(gè)變量\x0d\x0adeclare @serverproperty_servername varchar(100),\x0d\x0a@servername varchar(100)\x0d\x0a– 取得windows nt 服務(wù)器和與指定的 sql server 實(shí)例關(guān)聯(lián)的實(shí)例信息\x0d\x0aselect @serverproperty_servername = convert(varchar(100), serverproperty(‘servername’))\x0d\x0a– 返回運(yùn)行 microsoft sql server 的本地服務(wù)器名稱\x0d\x0aselect @servername = convert(varchar(100), @@servername)\x0d\x0a– 顯示獲取的這兩個(gè)參數(shù)\x0d\x0aselect @serverproperty_servername,@servername\x0d\x0a–如果@serverproperty_servername和@servername不同(因?yàn)槟愀倪^計(jì)算機(jī)名字),再運(yùn)行下面的\x0d\x0a–刪除錯(cuò)誤的服務(wù)器名\x0d\x0aexec sp_dropserver @server=@servername\x0d\x0a–添加正確的服務(wù)器名\x0d\x0aexec sp_addserver @server=@serverproperty_servername, @local=’local’\x0d\x0a\x0d\x0a修改這項(xiàng)參數(shù),需要重新啟動(dòng)mssqlserver和sqlserveragent服務(wù)才能生效。\x0d\x0a\x0d\x0a這樣一來就不會(huì)在創(chuàng)建復(fù)制的過程中出現(xiàn)18482、18483錯(cuò)誤了。\x0d\x0a\x0d\x0a3、檢查sql server企業(yè)管理器里面相關(guān)的幾臺(tái)sql server注冊(cè)名是否和上面第二點(diǎn)里介紹的srvname一樣\x0d\x0a\x0d\x0a不能用ip地址的注冊(cè)名。\x0d\x0a\x0d\x0a(我們可以刪掉ip地址的注冊(cè),新建以sql server管理員級(jí)別的用戶注冊(cè)的服務(wù)器名)\x0d\x0a\x0d\x0a這樣一來就不會(huì)在創(chuàng)建復(fù)制的過程中出現(xiàn)14010、20234、18456、18482、18483錯(cuò)誤了。\x0d\x0a\x0d\x0a4、檢查相關(guān)的幾臺(tái)sql server服務(wù)器網(wǎng)絡(luò)是否能夠正常訪問\x0d\x0a\x0d\x0a如果ping主機(jī)ip地址可以,但ping主機(jī)名不通的時(shí)候,需要在\x0d\x0a\x0d\x0awinnt\system32\drivers\etc\hosts (win2023)\x0d\x0awindows\system32\drivers\etc\hosts (win2023)\x0d\x0a\x0d\x0a文件里寫入數(shù)據(jù)庫服務(wù)器ip地址和主機(jī)名的對(duì)應(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ò)實(shí)用工具里建立別名,例如:\x0d\x0a5、系統(tǒng)需要的擴(kuò)展存儲(chǔ)過程是否存在(如果不存在,需要恢復(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上述步驟完成后, 會(huì)在當(dāng)前”@servername” sql server數(shù)據(jù)庫里建立了一個(gè)distribion庫和 一個(gè)distributor_admin管理員級(jí)別的用戶(我們可以任意修改密碼)。\x0d\x0a\x0d\x0a服務(wù)器上新增加了四個(gè)作業(yè):\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0asql server企業(yè)管理器里多了一個(gè)復(fù)制監(jiān)視器, 當(dāng)前的這臺(tái)機(jī)器就可以發(fā)布、分發(fā)、訂閱了。\x0d\x0a\x0d\x0a我們?cè)俅卧趕ql server企業(yè)管理器里-> 右鍵選擇 ->\x0d\x0a\x0d\x0a我們可以在 窗口-> -> -> -> -> / -> -> -> -> \x0d\x0a\x0d\x0a把網(wǎng)絡(luò)上的其它sql server服務(wù)器添加成為發(fā)布或者訂閱服務(wù)器.\x0d\x0a\x0d\x0a新增一臺(tái)發(fā)布服務(wù)器的選項(xiàng):\x0d\x0a\x0d\x0a我這里新建立的jin001發(fā)布服務(wù)器是用管理員級(jí)別的數(shù)據(jù)庫用戶test連接的,\x0d\x0a\x0d\x0a到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框, 默認(rèn)的是選中的,\x0d\x0a\x0d\x0a在新建的jin001發(fā)布服務(wù)器上建立和分發(fā)服務(wù)器fengyu/fengyu的鏈接的時(shí)需要輸入distributor_admin用戶的密碼。到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框,也可以不選,也就是不需要密碼來建立發(fā)布到分發(fā)服務(wù)器的鏈接(這當(dāng)然欠缺安全,在測(cè)試環(huán)境下可以使用)。\x0d\x0a\x0d\x0a2、新建立的網(wǎng)絡(luò)上另一臺(tái)發(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建立一個(gè)數(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 語句失敗,增加表的大小,增加生成之一個(gè)快照所要求的時(shí)間)\x0d\x0a\x0d\x0a->\x0d\x0a\x0d\x0a-> -> ->\x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a-> -> -> \x0d\x0a\x0d\x0a發(fā)布屬性里有很多有用的選項(xiàng):設(shè)定訂閱到期(例如24小時(shí))\x0d\x0a\x0d\x0a設(shè)定發(fā)布表的項(xiàng)目屬性:\x0d\x0a\x0d\x0a常規(guī)窗口可以指定發(fā)布目的表的名稱,可以跟原來的表名稱不一樣。\x0d\x0a\x0d\x0a下圖是命令和快照窗口的欄目\x0d\x0a\x0d\x0a( sql server 數(shù)據(jù)庫復(fù)制技術(shù)實(shí)際上是用insert,update,delete操作在訂閱服務(wù)器上重做發(fā)布服務(wù)器上的事務(wù)操作\x0d\x0a\x0d\x0a看文檔資料需要把發(fā)布數(shù)據(jù)庫設(shè)成完全恢復(fù)模式,事務(wù)才不會(huì)丟失\x0d\x0a\x0d\x0a但我自己在測(cè)試中發(fā)現(xiàn)發(fā)布數(shù)據(jù)庫是簡(jiǎn)單恢復(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ā)布表的訂閱選項(xiàng),并可以建立強(qiáng)制訂閱:\x0d\x0a\x0d\x0a成功建立了發(fā)布以后,發(fā)布服務(wù)器上新增加了一個(gè)作業(yè): \x0d\x0a\x0d\x0a分發(fā)服務(wù)器上新增加了兩個(gè)作業(yè):\x0d\x0a 類型\x0d\x0a 類型\x0d\x0a\x0d\x0a上面藍(lán)色字的名稱會(huì)根據(jù)發(fā)布服務(wù)器名,發(fā)布名及第幾次發(fā)布而使用不同的編號(hào)\x0d\x0a\x0d\x0arepl快照作業(yè)是sql server復(fù)制的前提條件,它會(huì)先把發(fā)布的表結(jié)構(gòu),數(shù)據(jù),索引,約束等生成到發(fā)布服務(wù)器的os目錄下文件\x0d\x0a(當(dāng)有訂閱的時(shí)候才會(huì)生成, 當(dāng)訂閱請(qǐng)求初始化或者按照某個(gè)時(shí)間表調(diào)度生成)\x0d\x0a\x0d\x0arepl日志讀取器在事務(wù)復(fù)制的時(shí)候是一直處于運(yùn)行狀態(tài)。(在合并復(fù)制的時(shí)候可以根據(jù)調(diào)度的時(shí)間表來運(yùn)行)\x0d\x0a\x0d\x0a建立一個(gè)數(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ù)器上新增加了一個(gè)類別是作業(yè)(合并復(fù)制的時(shí)候類別是)\x0d\x0a\x0d\x0a它會(huì)按照我們給的時(shí)間調(diào)度表運(yùn)行數(shù)據(jù)庫同步復(fù)制的作業(yè)。\x0d\x0a\x0d\x0a3、sql server復(fù)制配置好后, 可能出現(xiàn)異常情況的實(shí)驗(yàn)日志:\x0d\x0a\x0d\x0a1.發(fā)布服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(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)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制有一些影響\x0d\x0a\x0d\x0a中斷期間,發(fā)布服務(wù)器的事務(wù)排隊(duì)堆積起來\x0d\x0a(如果設(shè)置了較長(zhǎng)時(shí)間才刪除過期訂閱的選項(xiàng), 繁忙發(fā)布數(shù)據(jù)庫的事務(wù)日志可能會(huì)較快速膨脹),\x0d\x0a\x0d\x0a訂閱服務(wù)器會(huì)因?yàn)樵L問不到發(fā)布服務(wù)器,反復(fù)重試\x0d\x0a我們可以設(shè)置重試次數(shù)和重試的時(shí)間間隔(更大的重試次數(shù)是9999, 如果每分鐘重試一次,可以支持約6.9天不出錯(cuò))\x0d\x0a\x0d\x0a分發(fā)服務(wù)器sql server服務(wù)啟動(dòng),網(wǎng)絡(luò)接通以后,發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上:\x0d\x0a\x0d\x0a會(huì)需要一個(gè)比較長(zhǎng)的時(shí)間(實(shí)際上是生成所有事務(wù)的insert,update,delete語句,在訂閱服務(wù)器上去執(zhí)行)\x0d\x0a我們?cè)谄胀ǖ膒c機(jī)上實(shí)驗(yàn)的58個(gè)事務(wù)100228個(gè)命令執(zhí)行花了7分28秒.\x0d\x0a\x0d\x0a3.訂閱服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制影響比較大,可能需要重新初試化\x0d\x0a\x0d\x0a我們實(shí)驗(yàn)環(huán)境(訂閱服務(wù)器)從18:46分意外停機(jī)以, 第二天8:40分重啟動(dòng)后, 已經(jīng)設(shè)好的復(fù)制在8:40分以后又開始正常運(yùn)行了, 發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上, 但復(fù)制管理器里出現(xiàn)快照的錯(cuò)誤提示, 快照可能需要重新初試化,復(fù)制可能需要重新啟動(dòng).(我們實(shí)驗(yàn)環(huán)境的機(jī)器并沒有進(jìn)行快照初試化,復(fù)制仍然是成功運(yùn)行的)\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-> -> ->
如何用SQLServer建立分布式數(shù)據(jù)庫
很多組織機(jī)構(gòu)慢慢的在不同的服務(wù)器和地點(diǎn)部署SQLServer數(shù)據(jù)庫——為各種應(yīng)用和目的——開始考慮通過SQLServer集群的方式來合并。
將SQLServer實(shí)例和數(shù)據(jù)庫合并到一個(gè)中心的地點(diǎn)可以減低成本,尤其是維護(hù)和軟硬件許可證。此外,在合并之后,可以減低所需機(jī)器的數(shù)量,這些機(jī)器就可以用于備用。
當(dāng)尋找一個(gè)備用,比如高可用性的環(huán)境,企橡納業(yè)常常決定部署Microsoft的集群架構(gòu)。我常常被問到小的集群(由較少的節(jié)點(diǎn)組成)SQLServer實(shí)例和作為中心解決方案的大的集群哪一種更好。在我們比較了這兩個(gè)集群架構(gòu)之后,我讓你們自己做決定。
什么是Microsoft集群服務(wù)器
MSCS是一個(gè)WindowsServer企業(yè)版中的內(nèi)建功能。這個(gè)軟件支持兩個(gè)或者更多服務(wù)器節(jié)點(diǎn)連接起來形成一個(gè)“集群”,來獲得更高的可用性和對(duì)數(shù)據(jù)和應(yīng)用更簡(jiǎn)便的管理。MSCS可以自動(dòng)的檢查到服務(wù)器或者應(yīng)用的失效,并從中恢復(fù)。你也可以使用它來(手動(dòng))移動(dòng)服務(wù)器之間的負(fù)載來平衡利用率以及無需停機(jī)時(shí)間來調(diào)度計(jì)劃中的維護(hù)任務(wù)。
這種集群設(shè)計(jì)使用軟件“心跳”來檢測(cè)應(yīng)用或者服務(wù)器的失效。在服務(wù)器失效的事件中,它會(huì)自動(dòng)將資源(比如磁盤和IP地址)的所有權(quán)從失效的服務(wù)器轉(zhuǎn)移到活動(dòng)的服務(wù)器。注意還有方法可以保持心跳連接的更高的可用性,比如站點(diǎn)全面失效的情況下。
MSCS不要求在客戶計(jì)算機(jī)上安裝任何特殊軟件,因此用戶在災(zāi)難恢復(fù)的經(jīng)歷依賴于客戶-服務(wù)器應(yīng)用中客戶一方的本質(zhì)。客戶的重新連接常常是透明的,因?yàn)镸SCS在相同的IP地址上重啟應(yīng)用、文件共享等等。進(jìn)一步,為了災(zāi)難恢復(fù),集群的節(jié)點(diǎn)可以處于分離的、遙遠(yuǎn)的地點(diǎn)。
在集群服務(wù)器上的SQLServer
SQLServer2023可以配置為最多4個(gè)節(jié)點(diǎn)的集群,而SQLServer2023可以配置為最多8個(gè)節(jié)點(diǎn)的集群。當(dāng)一個(gè)SQLServer實(shí)例被配置為集群之后,它的磁盤資源、IP地址和服務(wù)就形成了集群組來實(shí)現(xiàn)災(zāi)難恢復(fù)。
SQLServer2023允許在一個(gè)集群上安裝16個(gè)實(shí)例。根據(jù)在線幫助,“SQLServer2023在一個(gè)服務(wù)器或者處理器上可以支持最多50個(gè)SQLServer實(shí)例,”但是,“只能使用25個(gè)硬盤驅(qū)動(dòng)器符,因此如果你需要更多的實(shí)例,那么需要預(yù)先規(guī)劃?!?/p>
注意SQLServer實(shí)例的災(zāi)難恢復(fù)階段是指SQLServer服務(wù)開始所需要的時(shí)間,這可能從幾秒鐘到幾分鐘。如果你需要更高的可用性,考慮使用其神拆他的方法,比如logshipping和數(shù)據(jù)庫鏡像。
單個(gè)的大的SQLServer集群還是小的集群
下面是大的、由更多的節(jié)點(diǎn)組成的集群的優(yōu)點(diǎn):
◆更高的可用新(更多的節(jié)點(diǎn)來災(zāi)難恢復(fù))。
◆更多的負(fù)載游如棗均衡選擇(更多的節(jié)點(diǎn))。
◆更低廉的維護(hù)成本。
◆增長(zhǎng)的敏捷性。多達(dá)4個(gè)或者8個(gè)節(jié)點(diǎn),依賴于SQL版本。
◆增強(qiáng)的管理性和簡(jiǎn)化環(huán)境(需要管理的少了)。
◆更少的停機(jī)時(shí)間(災(zāi)難恢復(fù)更多的選擇)。
◆災(zāi)難恢復(fù)性能不受集群中的節(jié)點(diǎn)數(shù)目影響。
下面是單個(gè)大的集群的缺點(diǎn):
◆集群節(jié)點(diǎn)數(shù)目有限(如果需要第9個(gè)節(jié)點(diǎn)怎么辦)。
◆在集群中SQL實(shí)例數(shù)目有限。
◆沒有對(duì)失效的防護(hù)——如果磁盤陣列失效了,就不會(huì)發(fā)生災(zāi)難恢復(fù)。
◆使用災(zāi)難恢復(fù)集群,無法在數(shù)據(jù)庫級(jí)別或者數(shù)據(jù)庫對(duì)象級(jí)別,比如表,創(chuàng)建災(zāi)難恢復(fù)集群。
虛擬化和集群
虛擬機(jī)也可以參與到集群中,虛擬和物理機(jī)器可以集群在一起,不會(huì)發(fā)生問題。SQLServer實(shí)例可以在虛擬機(jī)上,但是性能可能會(huì)受用影響,這依賴于實(shí)例所消耗的資源。在虛擬機(jī)上安裝SQLServer實(shí)例之前,你需要進(jìn)行壓力測(cè)試來驗(yàn)證它是否可以承受必要的負(fù)載。
在這種靈活的架構(gòu)中,如果虛擬機(jī)和物理機(jī)器集群在一起,你可以在虛擬機(jī)和物理機(jī)器之間對(duì)SQLServer進(jìn)行負(fù)載均衡。比如,使用虛擬機(jī)上的SQLServer實(shí)例開發(fā)應(yīng)用。然后在你需要對(duì)開發(fā)實(shí)例進(jìn)行壓力測(cè)試的時(shí)候,將它災(zāi)難恢復(fù)到集群中更強(qiáng)的物理機(jī)器上。
集群服務(wù)器可以用于SQLServer的高可用性、災(zāi)難恢復(fù)、可擴(kuò)展性和負(fù)載均衡。單個(gè)更大的、由更多的節(jié)點(diǎn)組成的集群往往比小的、只有少數(shù)節(jié)點(diǎn)的集群更好。大個(gè)集群允許更靈活環(huán)境,為了負(fù)載均衡和維護(hù),實(shí)例可以從一個(gè)節(jié)點(diǎn)移動(dòng)到另外的節(jié)點(diǎn)。
如何支持多數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于如何支持多數(shù)據(jù)庫,多數(shù)據(jù)庫支持方法及實(shí)踐,如何在單個(gè)Boot應(yīng)用中配置多數(shù)據(jù)庫,如何實(shí)現(xiàn)同步兩個(gè)服務(wù)器的數(shù)據(jù)庫?,如何用SQLServer建立分布式數(shù)據(jù)庫的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營(yíng)銷公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!
本文名稱:多數(shù)據(jù)庫支持方法及實(shí)踐(如何支持多數(shù)據(jù)庫)
URL鏈接:http://m.5511xx.com/article/cdohsgi.html


咨詢
建站咨詢
