MySQL的主從複製是透過binlog日誌來實現的,主從複製中的「主」指的是MySQL主伺服器上的資料庫,「從」指的是MySQL從伺服器上的資料庫,而這種複製是基於資料庫層級的,為此從伺服器中的資料庫名稱必須和主伺服器中的資料庫名稱保持一致,那麼,要想實作主從複製,我們至少要有兩個MySQL伺服器(最好是兩個MySQL伺服器分別位於不同的主機上,或是在一個主機上安裝兩個MySQL,連接埠不同即可)。
一般來說,MySQL資料庫的主函式庫和從函式庫分佈在不同的主機上。假如,現在我們只有一台主機,而且是windows系統,要如何實現MySQL的主從複製呢?方法如下:
這裡我們只介紹 一主一從 的運算方法。
我的電腦已經安裝了 xampp 整合環境(和wamp安裝套件類似),可以把它裡面的MySQL服務當作MySQL的主伺服器。那麼,我們還需要在這台電腦上再安裝一個MySQL,作為資料庫的從伺服器。
我的電腦xampp中已安裝的MySQL版本為 5.6.20,連接埠為3306。
我們需要再安裝一個MySQL(最好是安裝相同版本和相近版本的,以免出現問題),連接埠改為3307
資料庫伺服器的參數:
#主伺服器(master): IP為127.0.0.1,連接埠為3306
從伺服器(slave): IP為127.0.0.1,連接埠為3307
#主伺服器設定:
修改主伺服器的資料庫設定檔(E:\xampp\mysql\bin\my.ini),在 [mysqld] 標籤的最下面,加入以下程式碼:
#需要備份的資料庫
binlog-do-db=test
#不需要備份的資料庫
## binlog-ignore-db=mysql
#開啟二進位日誌
log-bin=mysql-bin
#伺服器id
##1
儲存退出,重新啟動MySQL主伺服器。binlog-do-db用於指定需要同步的資料庫,binlog-ignore-db指定不需要同步的資料庫,如果這兩個參數都不設置,則從伺服器複製主伺服器的所有資料庫。
一般不用root帳號作同步帳號,為此,我們需要在主伺服器上建立一個新的使用者(如 user01,密碼為123456)。 這裡我們用命令列的方式創建,方法如下:
#開啟cmd,切換至 E:\xampp\mysql \bin,用root 帳號連接MySQL主伺服器:
#########mysql -uroot -p -P3306############建立新使用者: # ##############create user 'user01'@'127.0.0.1' identified by '123456';###################( @後面的ip位址為允許連線的客戶端的ip位址。 ####grant replication slave on *.* to 'user01'@'127.0.0.1' identified by '123456';
(@後面的ip位址為允許連接的客戶端的ip位址,如果改為'%',就表示客戶端沒有ip位址的限制)
如果主伺服器的資料庫(test)中,已經有數據,我們需要先手動把主伺服器中的資料複製到從伺服器。方法如下:
在本案例中,我們只備份一個資料庫(test),test中有一個表格basic_user,表中也已經有資料了。為了防止我們複製資料的時候,資料庫test中的資料發生更新,我們需要先鎖定資料庫,指令如下:
#flush tables with read lock;
##這個指令是全域讀取鎖定,它會為主伺服器中的所有資料庫加上讀鎖,這裡順便說一下讀鎖和寫鎖的差別:
read lock(讀鎖):也叫共用鎖,允許所有的讀操作,但阻塞寫入操作,即所有連接只可以讀取數據,但不允許寫入數據。
write lock(寫鎖):也叫排它鎖、獨佔鎖,只允許目前連接的讀取和寫,不允許其他並發的讀取操作和寫入操作。
鎖定主伺服器的資料庫後,我們在從伺服器中,也建立一個資料庫test,並將所有的表(包括表格結構和表格資料)都匯入。
然後,我們執行下面的指令,解鎖:
#unlock tables;
#檢視主伺服器的master 狀態:
mysql> show master status;mysql> show master status; ------------------ ---------- -------------- ------- ----------- ---------------------------------- | File | Position | Binlog_Do_DB | Binlog_Iore_DB | Binlog_Do_DB | Binlog_Iore_DB | Binlog_Do_DB | Binlog_Iore_DB | Binlog_Do_DB | Binlog_Iore_DB |,cExecuted_Do_DB
------------------ ---------- -------------- ----- ------------- -------------------| mysql-bin.000008 | 498 | test | mysql | |-------------------------------- ---------- -------------- ------------------ -------------------
從伺服器設定:修改從伺服器的資料庫設定檔(
E:\mysql\my.ini) ,在 [mysqld] 標籤的最下面,新增如下程式碼:
#連接埠########## ########port = 3307#############伺服器id######server_id = 2#####開啟二進位日誌(從伺服器不是必須開啟二進位日誌)
log-bin=mysql-bin
儲存退出,重新啟動MySQL服務。
連接MySQL從伺服器:
mysql -uroot -p -P3307
設定複製的參數:
change master to master_host='127.0.0.1',master_user='user01',master_password='123456',master_port=3306,##master_log_file= 'mysql-bin.000008',master_log_pos=498;
#參數詳解:master_host: 主伺服器的IP
master_user: 主伺服器上新建立的使用者名稱
master_password: 使用者的密碼 ##master_port
: 主伺服器的端口,如果未曾修改,預設即可。
master_log_file: 主伺服器二進位日誌檔案的名稱,填入查看主伺服器的master狀態時顯示的File的值
#master_log_pos:日誌的位置,填入檢視主伺服器的master狀態時顯示的Position的值## 啟動從伺服器的slave複製功能:
start slave;查看從伺服器的slave狀態:mysql> show slave status \G*** ************************ 1. row *********************** **** Slave_IO_State: Waiting for master to send event## 1 Master_User: user01 1PortConnect_Retry: 60
Read_Master_Log_Pos: 120
Relay_Log_File: hp-PC-relay-bin.000004
Relay_Log_Pos: 283
. ave_IO_Running: Yes
Slave_SQL_Running: Yes
如果 Slave_IO_Running 和 Slave_SQL_Running 的值都為 Yes,則表示主從複製的所有設定都已成功,也就是從伺服器已經可以自動與主伺服器的資料庫資料實作同步了。
此後,只要主伺服器的資料有更新(例如:在test資料庫中新建了一張表格或表格中的資料發生了變化),從伺服器都會自動與主伺服器保持一致。但如果有人刻意改變了從伺服器的數據,主伺服器中的數據並不會同步更新,除非我們把這兩個MySQL伺服器設定為互為主從。
以上是我整理到的有關在window環境下配置mysql的主從架構,有興趣的小夥伴們可以去嘗試看看。
相關文章:
以上是如何在一台windows主機上實作MySQL的主從複製?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

MySQL不是一門編程語言,但其查詢語言SQL具備編程語言的特性:1.SQL支持條件判斷、循環和變量操作;2.通過存儲過程、觸發器和函數,用戶可以在數據庫中執行複雜邏輯操作。

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

記事本++7.3.1
好用且免費的程式碼編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。