使用docker-compose搭建mysql主從詳細過程
一、docker-compose和主從的簡介
1、docker-compose
Docker-Compose項目是Docker官方的開源項目,負責實現(xiàn)對Docker容器集群的快速編排 通過編寫docker-compose文件可對多個服務同時進行啟動/停止/更新(可定義依賴,按順序啟動服務)
2、mysql主從
以往創(chuàng)建的集群都是做同樣的事情,比如說創(chuàng)建了三臺服務器,那么客戶端發(fā)送了一條增加請求,那么就會隨機分配到三臺服務器其中一臺,
那么mysql集群不一樣,首先呢我們不叫它mysql集群,我們叫mysql主從,那么就有主服務器和從服務器這樣兩種概念,主服務器負責寫的操作,也就是增刪改,從服務器負責讀的操作,也就是查詢,如果說客戶端發(fā)送了一條增加的請求,那么就會把這條增加的請求給到主服務器,再由主服務器把數(shù)據(jù)同步到從服務器
3、為什么要使用docke-compose?
微服務架構的應用系統(tǒng)一般包含若干個微服務,每個微服務一般都會部署多 個實例,如果每個微服務都要手動啟停, 那么效率之低,維護量之大可想而知.而使用 Docker Compose 可以輕松、高效的管理容器, 它是一個用于定義和運行多容器 Docker 的應用程序工具,可以用來一鍵啟動所有服務器,一鍵關閉所有服務器,一鍵刪除所有服務器,非常方便。
二、部署mysql主從集群
1、mysql-master主庫
在宿主機中創(chuàng)建相關目錄,用于掛載容器的相關數(shù)據(jù)
mkdir -p /data/mysql-master/{conf,data}
上傳主數(shù)據(jù)庫容器的配置文件my.cnf到/data/mysql-master/conf目錄下
cd /data/mysql-master/conf
rz 上傳
文章所需要的文件我會放到結尾
2、mysql-slave從庫
在宿主機中創(chuàng)建相關目錄,用于掛載容器的相關數(shù)據(jù)
mkdir -p /data/mysql-slave/{conf,data}
上傳從數(shù)據(jù)庫容器的配置文件my.cnf到/data/mysql-slave/conf目錄下
cd /data/mysql-slave/conf
rz 上傳
這兩個文件里的內容只有id是不一樣的
三、安裝docker-compose
1、上傳文件
安裝包剛下載過來是docker-compose-Linux-x86_64
需要將docker-compose-Linux-x86_64重命名為 docker-compose
將 docker-compose 文件上傳到虛擬機 的 /usr/local/bin/ 目錄下,這個目錄下的文件可以被全局使用到,
cd /usr/ocal/bin
2、添加可執(zhí)行權限
chmod +x /usr/local/bin/docker-compose
3、創(chuàng)建并編輯docker-compose.yml文件
可以使用默認的名稱docker-compose.yml,因為要做MySQL的主從所以我把名字改成了docker-composemysql.yml
我們編輯yml文件可以在外部的工具先編輯在上傳,比如idea
docker-composemysql.yml內容如下:
# 版本號 version: '3' # 定義服務 services: # 服務名 mysql-master: # 容器名稱 container_name: mysql-master # 鏡像 image: mysql/mysql-server:5.7 # 重啟 restart: always # 提供偽終端 tty: true # root具備管理員權限 privileged: true # 環(huán)境變量 environment: MYSQL_ROOT_PASSWORD: 123456 # 數(shù)據(jù)卷(目錄映射) volumes: - /data/mysql-master/conf/my.cnf:/etc/my.cnf - /data/mysql-master/data:/var/lib/mysql # 網(wǎng)絡 networks: mynetwork: ipv4_address: 172.19.0.3 # 服務名 mysql-slave: # 容器名稱 container_name: mysql-slave # 鏡像 image: mysql/mysql-server:5.7 # 重啟 restart: always # 提供偽終端 tty: true # root具備管理員權限 privileged: true # 環(huán)境變量 environment: MYSQL_ROOT_PASSWORD: 123456 # 數(shù)據(jù)卷(目錄映射) volumes: - /data/mysql-slave/conf/my.cnf:/etc/my.cnf - /data/mysql-slave/data:/var/lib/mysql # 網(wǎng)絡 networks: mynetwork: ipv4_address: 172.19.0.4 # 定義所需要的網(wǎng)絡 networks: mynetwork: driver: bridge ipam: config: - subnet: 172.19.0.0/16
創(chuàng)建文件夾mysql把編輯號的yml文件上傳進去
mkdir mysql
4、運行docker-composeysql.yml
檢查
docker-compose -f docker-composemysql.yml config -q
檢查一下yml文件有沒有錯誤的地方,沒報錯就是沒有
運行
docker-compose -f docker-composemysql.yml up -d
四、配置mysql主從
1、進入主庫容器配置遠程連接
docker exec -it mysql-master /bin/sh
2、登錄mysql主服務器
mysql -u root -p
輸入mysql密碼:123456
3、查看主節(jié)點關鍵參數(shù)
記住 File 的值和 Position 的值(此值重啟后會變化),等會配置 slave 服務器的時候要用
show master status;
4、給用戶授權并更新
grant all privileges on *.* to root@'%' identified by '123456'; flush privileges;
另外開一個窗口進入從服務器
5、進入從服務器
docker exec -it mysql-slave /bin/bash
6、登錄mysql從服務器
mysql -u root -p
輸入mysql密碼:123456
7、配置主從復制
CHANGE MASTER TO MASTER_HOST='172.19.0.3', MASTER_PORT=3306, MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;
各參數(shù)說明:
master_host='172.19.0.3' // 這里填master主機ip,除了填寫住宿主機IP,還可以填寫bridge網(wǎng)絡中的IP master_log_file='mysql-bin.000005', // 這里填寫 File 的值就是前面我們show master status;命令的執(zhí)行結果 master_log_pos=154;// 這里填寫 Position 的值就是前面我們show master status;命令的執(zhí)行結果
8、開啟主從復制
start slave;
9、查看連接狀態(tài)
show slave status\G
注1:這里只要看到兩個參數(shù)Slave_IO_Running和Slave_SQL_Running都為true,則表示復制是正常進行的,到這里我們的主從結構也就搭建完成了
注2:集群成功后,在mysql-master容器重啟后雖然File的值和Position的值會變化,但在mysql-slave可以進行跟蹤,所以不需要重新進行配置
五、測試主從服務
1、在主服務器創(chuàng)建一個數(shù)據(jù)庫
create databse test;
在使用 show databases;查看一下所以庫
2、在從服務器查看數(shù)據(jù)庫
show databases;
ok,已經(jīng)完成了數(shù)據(jù)的同步
六、將crm項目的數(shù)據(jù)庫通過命令導入主庫
在主服務器執(zhí)行
1、創(chuàng)建數(shù)據(jù)庫crm
create database crm;
2、把sql腳本上傳到主服務器的的數(shù)據(jù)目錄
cd /data/mysql-master/data
文章所需要的文件我會放到結尾
3、選擇數(shù)據(jù)庫
use crm;
4、設置數(shù)據(jù)庫編碼(可選)
set names utf8;
5、導入數(shù)據(jù)(注意sql文件的路徑)
source /var/lib/mysql/crm.sql;
已提前將crm.sql文件上傳到了宿主機/data/mysql-master/data目錄
使用show tables;查看剛剛導入的數(shù)據(jù)
在從數(shù)據(jù)庫也查詢一下,也是有數(shù)據(jù)的,完成了數(shù)據(jù)同步
總結
到此這篇關于使用docker-compose搭建mysql主從的文章就介紹到這了,更多相關docker-compose搭建mysql主從內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺的詳細教程
這篇文章主要介紹了借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01