1. 程式人生 > >Docker實現MySQL主從復制(主主復制同理)

Docker實現MySQL主從復制(主主復制同理)

clas 文件 mysql的安裝 -- 雙向 res 嘗試 4.0 用戶名

  因為最近在學習MySQL,看到很多地方有“分庫分表”,“讀寫分離”的字眼,就想嘗試一下吧!

首先,因為本人經濟能力有限,買不起那麽多服務器,所以就借用Docker來搭建虛擬機來作為兩臺服務器。

一、準備主從服務器

  1、創建主服務器

$docker run -it --name=mysql_master ubuntu:14.04 /bin/bash

  技術分享圖片

  2、創建從服務器

$docker run -it --name=mysql_slave ubuntu:14.04 /bin/bash

  技術分享圖片

至此,兩臺服務器準備完畢,參數如下:

操作系統(OS):Ubuntu 14.04

主服務器IP:172.17.0.2

從服務器IP:172.17.0.3

二、在主從服務器上安裝MySQL

  因為版本問題,需要先更新一下軟件源(如果不更新的話,後面安裝MySQL的時候會提示沒有安裝包)

$ apt-get update

技術分享圖片

我這裏安裝MySQL也只需要一步就可以了

apt-get install mysql-server

技術分享圖片

中間會出現確認的停止,按“y”即可。

最後會出現讓你輸入MySQL的root用戶的登錄密碼,後面會用到。

技術分享圖片

再確認一次密碼

技術分享圖片

至此,主從服務器MySQL的安裝完成

三、搭建MySQL主從復制

這裏簡單說一下主從復制的原理,就是根據MySQL的日誌文件,將主服務器的MySQL操作日誌文件發送給從服務器,讓從服務器執行日誌文件,達到主從復制的目的。

  1、配置主服務器(以下在主服務器中操作)

    在主服務器中找到MySQL的配置文件(my.cnf),修改該配置文件。(最近也在學習Linux基礎,小秀一把)

$ find -name mf.cnf

技術分享圖片

表示配置文件在這個目錄

然後修改該文件

$ vi /etc/mysql/my.cnf

技術分享圖片

然後就進到這個界面

技術分享圖片

然後找到這麽幾行,這個就是我們要配置的地方了

技術分享圖片

把server-id和log_bin前面的“#”的註釋符去掉即可。

server-id:用於識別服務器MySQL,以後只要是有關於做MySQL集群的,server-id在集群中一定是要唯一的。

log_bin:用於存放二進制日誌文件的,其他MySQL就是根據這個文件進行復制的。

其他可以先不用管。

保存退出即可。之後需要重啟MySQL服務(service mysql restart)

然後在MySQL進行授權,至於為什麽要授權呢?其他服務器的MySQL要獲取日誌文件總要一些權限吧

登錄MySQL

技術分享圖片

這個就比較尷尬,是MySQL服務沒開起來的原因

技術分享圖片

出現紅色一行即為開啟成功,然後再登錄MySQL就可以了。

然後就是授權了,因為是主從復制,所以授權命令有點特殊,正常的話可以看下我之前寫的一篇。

技術分享圖片

其中以後會用到的是,用戶名和密碼,即“usr”和“123”,其中“flush privileges”是更新權限的命令。

然後就是查看主服務器相關日誌文件的信息。

技術分享圖片

這裏的文件“mysql-bin.000001”和“48481”我們會用到。

然後退出MySQL,再來看看我們的日誌文件生產沒有。日誌文件生成的目錄在上面的配置中也有。技術分享圖片

有了這個文件就說配置已經生效了

2、配置從服務器

  進入從服務器,也是一樣,要修改MySQL的配置文件(my.cnf),server-id一定不能與主服務器的相同技術分享圖片

這樣既可

保存退出,重啟MySQL服務(service mysql restart)

然後進入MySQL,接收主服務器的日誌文件。

技術分享圖片

是不是在這裏看到很多熟悉的信息?

master_host:發送日誌文件的主機

master_user:被授權的用戶

master_password:用戶密碼

master_log_file:日誌文件名

master_log_pos:日誌文件位置

最後在查看從服務器的狀態。

技術分享圖片

紅框裏的兩行都為Yes,即為成功了!!!

如果不是,就多檢查檢查以上步驟。

最後就來驗證一下吧。

1、在主服務器創建數據庫

技術分享圖片

2、在從服務器創建數據庫

技術分享圖片

最後結果說明,主從復制只是單向的復制,那如何進行雙向的復制,這個就是主主復制了。

實現主主復制的效果也很簡單,在配置的時候,將在主從服務器所做的再反過做一次就好。

即,在從服務器進行一次授權,在主服務器MySQL進行配置就好

Docker實現MySQL主從復制(主主復制同理)