日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
數據庫復制教程:詳解如何復制數據庫!(怎么把數據庫復制出來)

在數據庫管理中,如何進行數據備份和數據的復制是重要的基礎操作之一。數據的備份可以保證數據的安全性,在數據出現(xiàn)問題時可以快速恢復數據,而數據的復制可以將一個數據庫的內容“復制”到另一個數據庫中,實現(xiàn)數據的實時同步。本文將詳解數據庫復制的基本概念和操作流程,讓讀者在實際應用中更好地掌握數據庫復制的技能。

一、數據庫復制的概念

數據庫復制(Database Replication),也稱為數據庫副本(Database Copying),是指將一個數據庫的數據和結構復制到另一個數據庫中的過程。在數據庫復制中,源數據庫被稱為發(fā)布者(Publisher),目標數據庫被稱為訂閱者(Subscriber)。復制的目的是將數據從一個地方復制到另一個地方,以保證數據的安全性和可靠性。數據庫復制的應用非常廣泛,例如數據備份、數據分發(fā)、數據分析等。

二、數據庫復制的優(yōu)點

1.數據備份:數據備份是數據庫復制的最基本應用,如果數據庫出現(xiàn)故障或者數據被損壞,我們可以利用備份數據來恢復數據,保證數據的可靠性和完整性。

2.增加數據可用性:數據庫復制可以將一個數據庫的數據和結構復制到其他的幾個數據庫中,這樣一來,我們就可以使用不同的數據庫對相同的數據進行訪問,從而增加了數據的可用性。

3.提高數據處理效率:數據庫復制可以將數據復制到多個數據庫中,這樣一來,我們就可以并行處理數據,從而提高了數據處理的效率和速度。

三、如何復制數據庫

1. 創(chuàng)建訂閱者

在數據庫復制之前,我們需要先創(chuàng)建一個訂閱者(Subscriber),以便在服務器之間建立通信。創(chuàng)建訂閱者的步驟如下:

1)在SQL Server Management Studio中,打開“復制”文件夾,右鍵單擊“訂閱者”節(jié)點,選擇“添加訂閱者”。

2)在彈出的對話框中,選擇要復制的數據庫,并選擇“發(fā)布服務器”及其認證方式,填寫訂閱者名稱、訂閱者描述、訂閱者類型和訂閱者連接信息等相關信息,然后單擊“下一步”。

3)在下一個頁面上,選擇“為訂閱模板創(chuàng)建新的訂閱”,然后選擇“簡單訂閱”或“高級訂閱”,并配置訂閱者的選項和屬性。

4)在最后的頁面上,單擊“完全”以創(chuàng)建訂閱者。

2. 創(chuàng)建發(fā)布者

創(chuàng)建發(fā)布者是需要在源數據庫上操作,在源數據庫上要執(zhí)行以下步驟:

1)在SQL Server Management Studio中,打開“復制”文件夾,右鍵單擊“發(fā)布”節(jié)點,選擇“新建發(fā)布”。

2)在創(chuàng)建發(fā)布向導的“選擇發(fā)布類型”頁面上,選擇適當的發(fā)布類型,然后單擊“下一步”。

3)在“選擇發(fā)布數據庫”頁面上,選擇要發(fā)布的數據庫,并單擊“下一步”。

4)在“指定發(fā)布選項”頁面上,選擇要發(fā)布的表、視圖或存儲過程,并根據需要選擇其他發(fā)布選項,例如過濾規(guī)則等。然后單擊“下一步”。

5)在“指定訂閱服務器”頁面上,選擇要訂閱的服務器和訂閱者信息,并根據需要選擇其他發(fā)布選項,例如“允許更新訂閱”等。

6)在“完成添加發(fā)布”頁面上,單擊“下一步”,然后單擊“完成”。

3. 啟用發(fā)布者和訂閱者

在創(chuàng)建發(fā)布者和訂閱者之后,我們需要啟用它們才能開始數據庫復制。啟用發(fā)布者和訂閱者包括以下步驟:

1)在網絡中配置發(fā)布者和訂閱者,以便它們可以正常通信。

2)在SQL Server Management Studio中,打開“復制”文件夾,選中“發(fā)布”節(jié)點和訂閱者節(jié)點,并啟用它們。

3)等待數據復制完成,然后進行數據驗證和測試。

四、數據庫復制的注意事項

1. 數據庫復制要求網絡帶寬較大,因為大量的數據需要傳輸。

2. 如果發(fā)布者和訂閱者的時間沒有同步,則Copy的時候需要用到計算機之間的時間同步。

3. 如果在訂閱者端修改了數據,不要修改原始表的數據,而應該在訂閱者端創(chuàng)建一個新表,并在新表中進行修改。

4. 復制者的數量應適當,過多的復制者會加重服務器的負擔,過少的復制者可能會導致數據同步失敗。

結論:從以上介紹可以看出,數據庫的復制可以使得數據更加安全可靠,數據庫的復制可以增強數據的可用性,提高數據的處理效率。但同時,在進行數據庫復制的操作過程中也需要遵守一些注意事項。只有在合理遵守數據庫復制操作的流程和注意事項的情況下,才能保證數據庫的數據完整、準確、可靠。

相關問題拓展閱讀:

  • 現(xiàn)在我在學習MySQL,問問怎么復制粘貼數據庫

現(xiàn)在我在學習MySQL,問問怎么復制粘貼數據庫

這宴搭老得看你的數據表是什么存儲引擎,

新建的數據表默認是InnoDB

數據表的存儲引擎是可以更改的

隨便進入一張表,選擇操作,里面有存儲引擎可以修改,你想復制表就可以將存儲引擎修改成

myisam,

然后找到數據庫的data目錄復制好后,存儲引擎再改枝閉成你需要的類型

phpmyadmin新建表時存儲引擎

phpmyadmin修改存儲引晌升擎

每當我們討論一項(新的)領域技術的時候,更好的方式通常是首先拋出一些問題,這些問題大致分為三類:

誒?這項技術又是什么玩意(What)?

這項技術為什么會存在?我們已經有那么多解決方案(Method)了,我們?yōu)槭裁匆盟╓hy)?

如果這項技術那么好且我們正好有場景可以用到這項技術,且能使我們的系統(tǒng)得到很樂觀的優(yōu)化,那么我們怎么用呢(How)?

大概已經有同學覺得這些問題很熟悉了,是的,這就是黃金全法則提出的三個問題,對于每種新鮮事物我們首先基于這三個問題去了解,更有利于弄清楚事情的本質,端正態(tài)度去了解,而不是因為新,因為大家都說好,才要去了解……。說了那么多前奏,我們可以開始了,今天我們就帶著黃金圈法則提出的三個問題去看看MySQL數據庫復制這項領域技術,然后再結合實際應用擴展一些問題,本文也僅僅是結合自己了解的皮毛以拋磚引玉的態(tài)度和大家一起分享。

WHAT?

MySQL復制使得一臺MySQL數據庫服務器的數據被拷貝到其他一臺或者多臺數據庫服務器,前者通常被叫做Master,后者通常被叫做Slave。

MySQL復制示意圖

復制的結果是集群(Cluster)中的所有數據庫服務器得到的數據理論上都是一樣的,都是同一份數據,只是有多個copy。MySQL默認內建的復制策略是異步的,基于不同的配置,Slave不一定要一直和Master保持連接不斷的復制或等待復制,我們指定復制所有的數據庫,一部分數據庫,甚至是某個數據庫的某部分的表。

MySQL復制支持多種不同的復制策略,包括同步、半同步、異步和延遲策略等。

同步策略:Master要等待所有Slave應答之后才會提交(MySql對DB操作的提交通常是先對操作事件進行二進制日志文件寫入然后再進行提交)。

半同步策略:Master等待至少一個Slave應答就可以提交。

異步策略:Master不需要等待Slave應答就可以提交。

延遲策略:Slave要至少落后Master指定的時間。

MySQL復制同時支持多種不同的復制模式:

基于語句的復制,Statement Based Replication(SBR)。

基于行的復制Row Based Replication(RBR)。

混合復制(Mixed)。

WHY?

這個問題其實也就是MySQL復制有什么好處,我們可以將復制的好處歸結于下面幾類:

性能方面:MySQL復制是一種Scale-out方案,也即“水平擴展”,將原來的單點負載擴散到多臺Slave機器中去,從而提高總體的服務性能。在這種方式下,所有的寫操作,當然包括UPDATE操作,都要發(fā)生在Master服務器上。讀操作發(fā)生在一臺或者帆橋廳多臺Slave機器上。這種模型可以在一定程度上提高總體的服務性能,Master服務器專注于寫和更新消悔操作,Slave服務器專注于讀操作,我們同時可以通過增加Slave服務器的數量來提高讀服務的性能。

防腐化:由于數據被復制到了Slave,Slave可以暫停復制進程,進行數據備份,因此可以防止數據腐化。

故障恢復:同時多臺Slave如果有一臺Slave掛掉之后我們還可以從其他Slave讀取,如果配置了主從切換的話,當Master掛掉之后我們還可以選擇一臺Slave作為Master繼續(xù)提供寫服務,這大大增加了應用的可靠性態(tài)隱。

數據分析:實時數據可以存儲在Master,而數據分析可以從Slave讀取,這樣不會影響Master的性能。

HOW?

這里我們只介紹一下MySQL的復制是如何工作的,至于配置,網上也有很多相關的介紹,讀者具體應用的時候可以再去查閱。我們拿最常用的基于二進制文件的復制來看看。

MySQL復制工作示意圖

請點擊輸入圖片描述

請點擊輸入圖片描述

MySQL的復制過程大概如下:

首先,主庫在每次準備提交事務完成數據更新操作之前都會將數據更改操作記錄到二進制日志中,這些日志是以二進制的方式記錄數據更改的事件。值得一提的是二進制日志中記錄的順序實際上是事務的提交順序,而非SQL執(zhí)行語句的順序。在記錄二進制日志之后,主庫會告訴存儲引擎事務可以提交了。

然后,備庫會啟動一個IO線程,之所以叫做IO線程是因為這個線程專門做IO相關的工作,包括和主庫建立連接,然后在主庫上啟動一個特殊的二進制轉儲線程,這個轉儲線程會不斷的讀取二進制日志中的事件,發(fā)送給備庫的IO線程,備庫的IO線程會將事件記錄到中繼日志中。

備庫會有一個叫做SQL的線程被開啟,這個線程做的事情是讀取中繼日志中的DB操作事件在備庫執(zhí)行,從而實現(xiàn)數據更新。

總的來說,在發(fā)生復制的主庫服務器和備庫服務器中,一共有三個線程在工作。

上面我們已經大概了解的什么是復制?為什么要復制?如何復制?這三個問題了,接下來我們基于上面的介紹,提出一些實際應用可能會發(fā)生的問題來思考如何解決。博主自問自答的方式-。-

問答環(huán)節(jié)

問題一:通過復制模型雖然讀能力可以通過擴展slave機器來達到提高,而寫能力卻不能,如果寫達到瓶頸我們應該怎么做呢?

答:我們首先會得出結論,這種復制模型對于寫少讀多型應用是非常有優(yōu)勢的,其次,當遇到這種問題的時候我們可以對數據庫進行分庫操作,所謂分庫,就是將業(yè)務相關性比較大的表放在同一個數據庫中,例如之前數據庫有A,B,C,D四張表,A表和B表關系比較大,而C表和D表關系比較大,這樣我們把C表和D表分離出去成為一個單獨的數據庫,通過這種方式,我們可以將原有的單點寫變成雙點寫或多點些,從而降低原有主庫的寫負載。

問題二:因為復制是有延遲的,肯定會發(fā)生主庫寫了,但是從庫還沒有讀到的情況,遇到這種問題怎么辦?

答:MySQL支持不同的復制策略,基于不同的復制策略達到的效果也是不一樣的,如果是異步復制,MySQL不能保證從庫立馬能夠讀到主庫實時寫入的數據,這個時候我們要權衡選擇不同復制策略的利弊來進行取舍。所謂利弊,就是我們是否對從庫的讀有那么高的實時性要求,如果真的有,我們可以考慮使用同步復制策略,但是這種策略相比于異步復制策略會大大降低主庫的響應時間和性能。我們是否可以在應用的設計層面去避開這個問題?

問題三:復制的不同模式有什么優(yōu)缺點?我們如何選擇?

答:基于語句的復制實際上是把主庫上執(zhí)行的SQL在從庫上重新執(zhí)行一遍,這么做的好處是實現(xiàn)起來簡單,當前也有缺點,比如我們SQL里面使用了NOW(),當同一條SQL在從庫中執(zhí)行的時候顯然和在主庫中執(zhí)行的結果是不一樣的,注入此類問題可以類推。其次問題就是這種復制必須是串行的,為了保證串行執(zhí)行,就需要更多的鎖。

基于行的復制的時候二進制日志中記錄的實際上是數據本身,這樣從庫可以得到正確的數據,這種方式缺點很明顯,數據必須要存儲在二進制日志文件中,這無疑增加的二進制日志文件的大小,同時增加的IO線程的負載和網絡帶寬消耗。而相比于基于語句的復制還有一個優(yōu)點就是基于行的復制無需重放查詢,省去了很多性能消耗。

無論哪種復制模式都不是完美的,日志如何選擇,這個問題可以在理解他們的優(yōu)缺點之后進行權衡。

問題四:復制的工作過程只有三個線程來完成,對于Master來說,寫是并發(fā)的,也就出現(xiàn)了一個IO線程要把所有并發(fā)的數據變更事件記錄,這個IO線程會不會累死?當一個Master對應多個Slave的時候,其實在Master中會喚起多個IO線程,這無疑會增加Master的資源開銷,如果出現(xiàn)事件堆積,也就是事件太多,來不及及時發(fā)送出去怎么辦?另外就是Slave那邊的IO線程和SQL線程也會有對應主庫并發(fā)數據變更事件,而Slave方單個線程處理的問題,這個時候Slave線程會不會累死?

答:上面的問題確實會發(fā)生,上面之一個問題和第二個問題其實是寫負載的問題,當事件堆積太多,從庫時延就會變大,Slave單SQL線程問題據說有參數可以開啟并行操作,這個大家可以確認一下。

問題五:針對復制工作過程可能會出現(xiàn)的問題,主庫寫完二進制日志文件同時都會保存二進制日志的偏移量,但是當斷電的時候,二進制日志文件沒有刷新到磁盤,主庫重新啟動之后,從庫嘗試讀該偏移量的二進制日志,會出現(xiàn)讀不到的情況,這個問題應該怎么解決?

答:首先如果開啟了sync_binlog選項,對于innodb同時設置innodb_flush_log_at_trx_commot=1,則可以保證二進制日志文件會被寫入磁盤,但MyISAM引擎可能會導致數據損壞。如果沒有開啟這個選項,則可以通過制定從庫的二進制偏移量為下一個二進制日志文件的開頭,但是不能解決事件丟失問題。

問題六:從庫在非計劃的關閉或重啟時,回去讀master.info文件去找上次停止復制的位置,這同樣會有一個問題,如果master.info不正確,就會導致復制數據不一致的情況,遇到這個問題怎么辦?

答:這個問題可以通過兩種方式解決,一是控制master.info在從庫非計劃關閉或重啟的時候讓master.info能夠同步到磁盤,這樣下次啟動的時候就不會讀取錯誤的信息,這有助于減少錯誤的發(fā)生概率。另外想要找到正確的復制位置是困難的,我們也可以選擇忽略錯誤。

請點擊輸入圖片描述

請點擊輸入圖片描述

關于怎么把數據庫復制出來的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

創(chuàng)新互聯(lián)服務器托管擁有成都T3+級標準機房資源,具備完善的安防設施、三線及BGP網絡接入帶寬達10T,機柜接入千兆交換機,能夠有效保證服務器托管業(yè)務安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認可。


分享名稱:數據庫復制教程:詳解如何復制數據庫!(怎么把數據庫復制出來)
URL標題:http://www.dlmjj.cn/article/cdjjcoh.html