基於 Docker 搭建 MySQL 一主兩從複製
在Docker中搭建MySQL 一主兩從複製
搭建環境
Centos 7.5 64位
MySQL 5.7.13
Docker 1.13.1
接下來,我們將會在一臺伺服器上安裝docker,並使用docker執行三個MySQL容器,分別為一主兩從。
安裝docker
執行命令
yum install -y docker
安裝成功啟動Docker後,檢視版本
出現版本資訊,則安裝成功
[[email protected] ~]# docker version
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-63.git94f4240.el7.centos.x86_64
Go version: go1.9.4
Git commit: 94f4240/1.13.1
Built: Fri May 18 15:44:33 2018
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-63.git94f4240.el7.centos.x86_64
Go version: go1.9.4
Git commit: 94f4240/1.13.1
Built: Fri May 18 15:44:33 2018
OS/Arch: linux/amd64
Experimental: false
啟動Docker
啟動Docker並設定為開機自啟動
[[email protected] ~]# systemctl start docker && systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
安裝MySQL
使用Docker拉取MySQL映象
docker pull mysql:5.7.13
執行主容器
docker run --name master2 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
--name 為容器指定名稱,這裡是master
-p 將容器的指定埠對映到主機的指定埠,這裡是將容器的3306埠對映到主機的3306埠
-e 設定環境變數,這裡是指定root賬號的密碼為root
-d 後臺執行容器,並返回容器ID
mysql:5.7.13 指定執行的mysql版本
檢驗是否啟動成功
docker ps -a 顯示所有的容器,包括未執行的
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7782adcbfb98 mysql:5.7.13 "docker-entrypoint..." 27 seconds ago Up 26 seconds 0.0.0.0:3308->3306/tcp master2
注意,是UP狀態,表示正在執行中
開放3308埠
firewall-cmd --zone=public --add-port=3308/tcp --permanent
firewall-cmd --reload
--permanent 永久開啟,避免下次開機需要再次手動開啟埠
使用Navicat連線測試
MySQL主容器已經啟動成功
建立主容器的複製賬號
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' identified by 'backup';
show grants for 'backup'@'%';
使用Navicat友好的影象化介面執行SQL
出現如下資訊表示授權成功
修改MySQL配置環境
建立配置檔案目錄
目錄結構如下
/usr/local/mysql/master
/usr/local/mysql/slave1
/usr/local/mysql/slave2
拷貝一份MySQL配置檔案
[[email protected] ~]# docker cp master2:/etc/mysql/my.cnf /usr/local/mysql/master2/my.cnf
進到master2目錄下,已存在拷貝的my.cnf
[[email protected] master2]# ll
total 4
-rw-r--r-- 1 root root 1771 Jun 9 2016 my.cnf
修改my.cnf,在 [mysqld] 節點最後加上後儲存
log-bin=mysql-bin
server-id=1
log-bin=mysql-bin 使用binary logging,mysql-bin是log檔名的字首
server-id=1 唯一伺服器ID,非0整數,不能和其他伺服器的server-id重複
將修改後的檔案覆蓋Docker中MySQL中的配置檔案
[[email protected] ~]#docker cp /usr/local/mysql/master2/my.cnf master2:/etc/mysql/my.cnf
重啟 mysql 的docker , 讓配置生效
[[email protected] master2]# docker restart master2
master2
啟動後,重新測試連線,連線成功表示主容器配置成功
執行MySQL從容器
首先執行從容器
docker run --name slave1 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
docker run --name slave2 -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
開放3309、3310埠
firewall-cmd --zone=public --add-port=3309-3310/tcp --permanent
firewall-cmd --reload
與主容器相似,拷貝配置檔案至slave1目錄修改後覆蓋回Docker中
[[email protected] ~]# docker cp slave1:/etc/mysql/my.cnf /usr/local/mysql/slave1/my.cnf
log-bin=mysql-bin
server-id=2
[[email protected] ~]#docker cp /usr/local/mysql/slave1/my.cnf slave1:/etc/mysql/my.cnf
別忘記,重啟slave1容器,使配置生效
配置主從複製
使用Navicat連線slave1後新建查詢,執行以下SQL
CHANGE MASTER TO
MASTER_HOST='ip',
MASTER_PORT=3308,
MASTER_USER='backup',
MASTER_PASSWORD='backup';
START SLAVE;
MASTER_HOST 填Navicat連線配置中的ip應該就可以
MASTER_PORT 主容器的埠
MASTER_USER 同步賬號的使用者名稱
MASTER_PASSWORD 同步賬號的密碼
檢查是否配置成功
show slave status;
Slave_IO_State 如果是Waiting for master to send event,那麼就成功一半了,如果是Connecting to master,基本就是配置失敗了,建議重新檢查下配置,具體失敗的原因可以檢視日誌追蹤
[[email protected] slave1]# docker logs slave1 -f
接著上文,我們說成功一半,並沒有說成功了,那麼另一半在於Slave_IO_Running與Slave_SQL_Running
清除設定資訊
stop slave;
reset slave all;
如果都是Yes,那麼恭喜你,可以測試主從複製的效果了,如果有一個不是Yes,一半是重啟從容器後,事務回滾引起的,那麼給出解決方法如下
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
執行後,再次觀察三個關鍵欄位應該就都沒問題了
至此,一主一從已經搭建完成,另外一臺也照此辦法即可。
測試主從複製
首先,在主例項中建立一個測試資料庫
開啟(重新整理)從例項,可見test庫已存在
在test庫中建立一個表feiyu,新增一個id測試欄位
向表中新增幾個資料
重新整理從庫,可見feiyu表及其中feiu資料已存在
至此,一個具備主從複製的一主兩從的MySQL就已搭建完成。
相關推薦
基於 Docker 搭建 MySQL 一主兩從複製
在Docker中搭建MySQL 一主兩從複製搭建環境Centos 7.5 64位MySQL 5.7.13Docker 1.13.1接下來,我們將會在一臺伺服器上安裝docker,並使用docker執行三個MySQL容器,分別為一主兩從。安裝docker執行命令yum inst
搭建MySQL一主多從————VMware Workstation 虛擬機nat網絡配置(一)
VMware Workstation 虛擬機 虛擬網絡 nat連接 運行 VMware Workstation Pro 在桌面找到該圖標,雙擊運行即可,如果沒有安裝請下載安裝。流程編輯 ==》虛擬網絡編輯器 ==》 VMnet0 如果沒有 添加網絡 最後設置完後,點擊確定即可。 配置虛
docker搭建redis一主二從哨兵模式叢集
1、IP規劃 master 192.168.0.11:6379 slave1 192.168.0.12:6379 slave2 192.168.0.13:6379 sentinel1 192.168.0.14:26379 sentinel2 192.168.0.15
【MySQL】MySQL一主二從複製環境切換主從庫
mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send ev
MySQL基於binlog實現主從複製,實現一主兩從
在移動網際網路開發中,為了減少資料庫單機的壓力、增加資料庫的併發訪問能力,同時大多數移動網際網路專案均是讀多寫少,鑑於此,將資料庫配置一主多從顯得尤為重要,下面我們將基於MySQL實現一主多從的配置。 準備工作 虛擬機器準備 準備裝有CentOS
MHA 一主兩從搭建
ring ssh-key set fault 配置 remote change use cat 環境介紹:主機名 IP MHA角色 MySQL角色node1 192.168.56.26 Node MySQL Master
Redis叢集主從複製(一主兩從)搭建配置教程【Windows環境】
由於本地環境的使用,所以搭建一個本地的Redis叢集,本篇講解Redis主從複製叢集的搭建,使用的平臺是Windows,搭建的思路和Linux上基本一致! (精讀閱讀本篇可能花費您15分鐘,略讀需5分鐘左右) Redis主從複製簡單介紹 為了使得叢集在一部分節點下線或
Mysql主從複製(GTID),一主兩從
複製原理: Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句(insert,update,delete,ALTER TABLE,grant等等)。 主從複製的原理其實就是把主伺服器上的BIN日誌複製到從伺服器上執行一遍,這樣
在遠端linux主機用docker部署mysql一主一從跟雙主從複製
在遠端linux主機用docker部署mysql一主一從跟雙主從複製 本處使用的是SSH連線工具Xshell連線遠端linux主機(需先在windows上安裝Xshell軟體),在同一臺linux主機或者兩臺linux主機都可以部署主從 (在操作過程中可能遇到的問題時的處理命令:當run
redis3.2.8 sentinel模式一主兩從高可用環境搭建測試
由於專案需要,研究了一下redis的叢集方式,記錄如下: 環境:centos7,由於是測試,我就把三個redis放在一臺機子上了。反正redis是單執行緒的,倒也無所謂。 redis叢集的方式有好幾種,分類下來其實大概是四種: 1.redis本身的叢集。redis3.x開始
Docker Compose搭建Redis一主二從三哨兵高可用叢集
一、Docker Compose介紹 https://docs.docker.com/compose/ Docker官方的網站是這樣介紹Docker Compose的: Compose是用於定義和執行多容器Docker應用程式的工具。通過Compose,您可以使用YAML檔案來配置應用程式的服務。然後,使
級聯復制轉化成一主兩從
級聯復制轉化成一主兩從1.如圖,級聯復制如果轉化成一主兩從?GTID復制處理方法:只需要把S2的復制停掉,然後重新change到M上即可;S2:stop slave;reset slave all;change master to M;start slave傳統復制處理方法(比較復雜):(1)停止S1的復制,
Mysql一主多從復制數據
sock 是否 art str cor term 數據庫 啟動 ado 應用場景:外部僅僅訪問主數據庫(Mysql_Master),多個從數據庫(Mysql_Slave)做數據庫熱備份。一旦主數據庫宕機,從服務器負責處理數據實驗拓補圖: 實驗環
MySQL一主多從
MySQL主192.168.65.128上配置/etc/my.cnf[root@localhost ~]# /etc/init.d/mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL.. SUCCESS!備份數據從1、192.168.65.
基於Docker搭建MySQL主從復制
效果 重啟 conn chang eve iter cli 配置 bin 摘要: 本篇博文相對簡單,因為是初次使用Docker,MySQL的主從復制之前也在Centos環境下搭建過,但是也忘的也差不多了,因此本次嘗試在Docker中搭建。 本篇博文相對簡單,因為是初次使
CentOS6.5配置MYSQL一主多從詳解
ali ati In restart 配置文件 left 主庫 vim 數據庫 一、環境 1 操作系統 :CentOS 6.5 2 數據庫版本:MySQL 5.6.27 3 主機A:192.168.1.1 (Master) 4 從機B:192.168.1.2 (
mysql 一主多從配置說明
背景 mysql 一主多從的場景是經常見的,具體的業務場景裡我們一般讀的壓力遠遠是大於寫的壓力,master我們可以用來做寫操作,slave用來做讀操作、備份,可以做到資料庫的負載均衡。 同步複製過程說明 (1) master將改變記錄到二進位制日誌(binary log)中(這些記
基於keepalived搭建mysql雙主高可用
目錄 概述 環境準備 keepalived搭建 mysql搭建 mysql雙主搭建 mysql雙主高可用搭建 概述 傳統(不借助中介軟體)的資料庫主從搭建,如果主節點掛掉了,從節點只能讀取無法寫
centos搭建redis 一主多從 哨兵
master:192.168.3.34 slave: 192.168.3.4 哨兵1:(sentinel1) :192.168.3.34 哨兵2:(sentinel2) :192.168.3.4 ##環境安裝 -- 下載壓縮包 wget http://do
mongodb實現一主兩從一個仲裁者
4臺機器安裝mongodb後,把4臺機器的mongod啟動,然後通過mongo連線你要做主機的mongo。 如以192.168.10.111:27017為主節點 master.conf配置 processManagement: fork: true net: