96 基於Docker的Mysql主從複製搭建

爲什麼基於Docker搭建?
資源有限
虛擬機搭建對機器配置有要求,並且安裝mysql步驟繁瑣
一臺機器上可以運行多個Docker容器
Docker容器之間相互獨立,有獨立ip,互不衝突
Docker使用步驟簡便,啓動容器在秒級別
利用Docker搭建主從服務器
首先拉取docker鏡像,我們這裏使用5.7版本的mysql:

docker pull mysql:5.7

然後使用此鏡像啓動容器,這裏需要分別啓動主從兩個容器

Master(主):

docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Slave(從):

docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Master對外映射的端口是3339,Slave對外映射的端口是3340。因爲docker容器是相互獨立的,每個容器有其獨立的ip,所以不同容器使用相同的端口並不會衝突。這裏我們應該儘量使用mysql默認的3306端口,否則可能會出現無法通過ip連接docker容器內mysql的問題。

使用docker ps命令查看正在運行的容器:



此時可以測試連接



配置Master(主)
通過docker exec -it 627a2368c865 /bin/bash命令進入到Master容器內部,也可以通過docker exec -it mysql-master /bin/bash命令進入。627a2368c865是容器的id,而mysql-master是容器的名稱。

cd /etc/mysql切換到/etc/mysql目錄下,然後vi my.cnf對my.cnf進行編輯。此時會報出bash: vi: command not found,需要我們在docker容器內部自行安裝vim。使用apt-get install vim命令安裝vim

會出現如下問題:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package vim

執行apt-get update,然後再次執行apt-get install vim即可成功安裝vim。然後我們就可以使用vim編輯my.cnf,在my.cnf中添加如下配置:

[mysqld]

同一局域網內注意要唯一

server-id=100

開啓二進制日誌功能,可以隨便取(關鍵)

log-bin=mysql-bin
配置完成之後,需要重啓mysql服務使配置生效。使用service mysql restart完成重啓。重啓mysql服務時會使得docker容器停止,我們還需要docker start mysql-master啓動容器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章