《高可用MySQL》讀書筆記2 – 單機版MySQL主從配置

來源:互聯網
上載者:User

標籤:伺服器   資料庫   

這裡搭建的主從是最簡單的單一主從複製(即一個Master和一個slave,沒有任何的熱機備份和多slave),該主從結構的基本拓撲圖如下所示:

建立基本的主從複製可以總結為以下三個基本步驟:

  1. 配置master伺服器
  2. 配置slave伺服器
  3. 將slave串連到master

在配置完成之後,我們會做一個簡單的測試,測試複製是否正常。

  本文所涉及的master和slave伺服器均位於同一台單機上,使用不同的連接埠號碼區分,基本的環境為:Window 7 旗艦版 32位,MySQL的版本為5.6.21 。上一篇筆記(Windows環境下壓縮版MySQL安裝)中,已經介紹了壓縮版mysql配置的基本過程,這裡需要複製一份,並解壓縮到另外一個目錄(例如D:/Mysql_slave目錄中)。為了區分master和slave,我們分別使用不同的連接埠號碼:master使用3306,slave使用3307連接埠號碼。

一、配置Master

  將伺服器配置為Master,需要確保伺服器有一個活動的二進位日誌(binary log)和唯一的伺服器ID(server-id,用於區分伺服器).二進位日誌中包含了Master的所有改變,並且可以在Slave上執行。

配置master的my.ini檔案:

開啟master目錄下的my.ini檔案,在檔案中添加如下內容:

server-id = 1binlog-do-db = testlog-bin=master-binlog-bin-index=master-bin.index

其中:

(1)       server-id=1用於設定管理員ID,是mysql主從叢集中的一個唯一區分號。所有的伺服器都應該有自己的唯一ID,如果一個Slave串連到Master,但是和Master有相同的ID,則會產生Master和Slave ID相同的錯誤

(2)       binlog-do-db :指定主從複製的資料庫。

(3)       log-bin欄位給出了二進位日誌所產生的所有檔案的基本名,二進位檔案可以包含多個檔案,如所示:

(4)       log-bin-index.這其實是指定了一個索引檔案(純文字,內容為檔案清單),該索引檔案中包含所有二進位檔案的列表。如果沒有為log-bin-index設定預設值,則會使用機器的hostname產生log-bin-index檔案,這樣,在伺服器的hostname改變後,可能會出現無法找到索引檔案,從而認為二進位檔案列表為空白,導致無法正確的產生二進位bin-log。所以,推薦應該使用機器無關的名字作為bin-log-index的檔案名稱.

  配置完ini檔案之後,需要從命令列啟動mysqld服務,進入master的bin目錄(D:.Mysql/bin)並執行下述命令(如果之前配置過mysql,執行之前請關閉已經啟動的mysql服務net stop mysql):

mysqld –console

如果啟動成功,cmd視窗會出現如下類似的內容(紅色部分是關鍵):

  這時master伺服器已經啟動了.將該cmd視窗最小化不用管它。新開一個cmd視窗,串連到master(mysql –u root -pxxx),通過show master status可以查看master的狀態。

  Slave串連Master時,會啟動一個標準的用戶端去串連Master,並請求Master將所有的改動轉儲給它。因此,在串連時,需要Master上有一個具有複製許可權的使用者。在master的控制台執行如下命令:

Create user reply_user;Grant REPLICATION SLAVE On *.* to reply_user IDENTIFIED BY ‘xxxxxxxxx’;Flush privileges;

  Replication slave許可權並沒有什麼特別之處,只是這個使用者能夠從Master上二進位檔案的轉儲資料。完全可以給一個常規的使用者賦予該許可權,但最好還是將複製Slave的使用者和其他使用者區分開來,這樣的話,如果想要禁止某些slave的連結,只要刪除該使用者就可以了

二、配置Slave

  配置Slave的過程和配置Master的過程基本相同,不同的是,需要配置一個不同的連接埠號碼,需要一個不同的server-id號。並且需要為Slave配置relay-log(中繼日誌)和relay-log-index(中繼日誌的索引檔案)。開啟Slave目錄下的my.ini(D:/mysql_slave目錄),添加如下內容:

#mysql slave port port = 3307 #slave server id server_id   = 2 #replication database replicate-do-db=test #relay log file relay-log=slave-relay-bin #relay log index file relay-log-index=slave-relay-bin.index

修改完Slave後。同樣需要通過命令啟動slave的mysqld:

d:cd mysql_slave/binmysqld –console

現在雖然配置好了Master和Slave。但是Master和Slave之間沒有任何的聯絡,這時如果在Slave的控制台執行:show slave status;會出現提示:it is not a slave

三、Slave串連到Master

將Slave串連到Master,需要知道Master的四個基本的資訊:

(1)       主機名稱或者IP地址,由於這裡都是單機,主機的IP為127.0.0.1

(2)       Master使用的連接埠號碼,3306

(3)       Master上具有REPLICATION SLAVE許可權的使用者

(4)       該帳號的密碼。

在配置Master的時候已經建立了一個具有相關許可權的使用者,在Slave的控制台運行以下命令:

Change Master to     Master_host=’127.0.0.1’,     Master_port=3306,     Master_user=”reply_user”,     Master_Password=”xxxx”;

執行完之後,可以通過start Slave命令啟動Slave。

這時如果執行show slave status;會輸出以下類似內容(注意標紅部分):

現在,一個基本的mysql主從已經搭建起來了。我們接著做一些簡單的測試,看看複製是否正常。測試步驟如下:

1.  在Master上建立表:

CREATE TABLE `web_user2` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(30) NOT NULL DEFAULT ‘‘,  `creatime` datetime NOT NULL DEFAULT ‘0000-00-00 00:00:00‘,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2.  插入資料

Insert into web_user2 (`name`) values (‘first‘),(‘test‘),(‘showb‘),(‘blood‘);Select * from `web_user2`;

3.  進入Slave查看是否同步正常

Show tables;Select * from web_user;

4.  在master的控制台上查看複製的事件-Binlog events

Flush logs;Show binlog events;

日誌比較長,這裡只截取了前兩條:

從binlog的內容來看,複製已經配置成功了。

下一步,將會繼續探索二進位日誌的相關東西。

參考文獻:

  1. 《高可用Mysql》
  2. http://www.cnblogs.com/zhangjun516/archive/2013/03/18/2965604.html
  3. http://blog.itpub.net/7607759/viewspace-719707/

《高可用MySQL》讀書筆記2 – 單機版MySQL主從配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.