首頁 資料庫 mysql教程 如何在一台windows主機上實作MySQL的主從複製?

如何在一台windows主機上實作MySQL的主從複製?

May 12, 2018 am 09:22 AM
windows 實現

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

         1Port

                Connect_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-5.7.21

MySQL 基礎知識小結

#navicat for mysql下載安裝以及簡單的使用

以上是如何在一台windows主機上實作MySQL的主從複製?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

c語言多線程的四種實現方式 c語言多線程的四種實現方式 Apr 03, 2025 pm 03:00 PM

語言多線程可以大大提升程序效率,C 語言中多線程的實現方式主要有四種:創建獨立進程:創建多個獨立運行的進程,每個進程擁有自己的內存空間。偽多線程:在一個進程中創建多個執行流,這些執行流共享同一內存空間,並交替執行。多線程庫:使用pthreads等多線程庫創建和管理線程,提供了豐富的線程操作函數。協程:一種輕量級的多線程實現,將任務劃分成小的子任務,輪流執行。

在Node環境中如何避免第三方接口返回403錯誤? 在Node環境中如何避免第三方接口返回403錯誤? Apr 01, 2025 pm 02:03 PM

Node環境下如何避免第三方接口返回403錯誤在使用Node.js調用第三方網站接口時,有時會遇到返回403錯誤的問題。 �...

Windows下Python .whl文件去哪下載? Windows下Python .whl文件去哪下載? Apr 01, 2025 pm 08:18 PM

Python二進制庫(.whl)下載途徑探究許多Python開發者在Windows系統上安裝某些庫時會遇到難題。一個常用的解決方法�...

如何高效讀取Windows系統日誌並只獲取最近幾天的信息? 如何高效讀取Windows系統日誌並只獲取最近幾天的信息? Apr 01, 2025 pm 11:21 PM

高效讀取Windows系統日誌:反向遍歷Evtx文件在使用Python處理Windows系統日誌文件(.evtx)時,直接讀取會從最早的�...

在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? 在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? Apr 05, 2025 pm 10:21 PM

在前端開發中如何實現類似Windows...

如何加快PS的載入速度? 如何加快PS的載入速度? Apr 06, 2025 pm 06:27 PM

解決 Photoshop 啟動慢的問題需要多管齊下,包括:升級硬件(內存、固態硬盤、CPU);卸載過時或不兼容的插件;定期清理系統垃圾和過多的後台程序;謹慎關閉無關緊要的程序;啟動時避免打開大量文件。

為什麼我的代碼無法獲取API返回的數據?如何解決這個問題? 為什麼我的代碼無法獲取API返回的數據?如何解決這個問題? Apr 01, 2025 pm 08:09 PM

為什麼我的代碼無法獲取API返回的數據?在編程中,我們常常會遇到API調用時返回空值的問題,這不僅讓人困惑...

c 多線程三種實現方式的區別是什麼 c 多線程三種實現方式的區別是什麼 Apr 03, 2025 pm 03:03 PM

多線程是計算機編程中的重要技術,用來提升程序執行效率。在 C 語言中,有多種實現多線程的方式,包括線程庫、POSIX 線程和 Windows API。

See all articles