最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何利用docker快速構(gòu)建MySQL主從復(fù)制環(huán)境

 更新時間:2017年05月05日 11:56:44   作者:iVictor  
這篇文章主要介紹了詳解如何利用docker快速構(gòu)建MySQL主從復(fù)制環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在學(xué)習(xí)MySQL的過程中,常常會測試各種參數(shù)的作用。這時候,就需要快速構(gòu)建出MySQL實例,甚至主從。 

考慮如下場景:

譬如我想測試mysqldump在指定--single-transaction參數(shù)的情況下,對于myisam表的影響。

本來想在現(xiàn)成的測試環(huán)境中進行,但測試環(huán)境中,有大量的數(shù)據(jù),執(zhí)行mysqldump進行全備,產(chǎn)生的SQL文件,很難基于表進行搜索。

這個時候,就特別渴望能有一套干凈的實例進行測試。

此刻,快速構(gòu)建能力就顯得尤為必要,很多童鞋可能會問,通過腳本不就能實現(xiàn)么?為什么要用docker?

個人感覺:腳本太重,會涉及很多額外的工作,譬如創(chuàng)建用戶,相對較長的數(shù)據(jù)庫初始化過程,MySQL啟動過程,而我需要的是一種快速構(gòu)建,快速銷毀的能力。

而這,正是Docker的強項。

如下,是利用docker啟動一個實例的時間,不到1s,如果使用腳本來做的話,絕不會這么快。

# time docker run --name slave -v /etc/slave.cnf:/etc/mysql/my.cnf -v /var/lib/mysql/slave:/var/lib/mysql -p3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.34
6b7fe5da9e8c77529ee634e163add57db5cd15757e88261ce320a502ae01f853

real  0m0.986s
user  0m0.026s
sys  0m0.018s

于是基于docker寫了個腳本,可在30s左右新建一套MySQL主從復(fù)制環(huán)境

#!/bin/bash

MASTER_DIR=/var/lib/mysql/master
SLAVE_DIR=/var/lib/mysql/slave

## First we could rm the existed container
docker rm -f master
docker rm -f slave

## Rm the existed directory
rm -rf $MASTER_DIR
rm -rf $SLAVE_DIR

## Start instance
docker run --name master -v /etc/master.cnf:/etc/mysql/my.cnf -v $MASTER_DIR:/var/lib/mysql --net=host -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.34
docker run --name slave -v /etc/slave.cnf:/etc/mysql/my.cnf -v $SLAVE_DIR:/var/lib/mysql --net=host -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.34
## Creating a User for Replication
docker stop master slave
docker start master slave

sleep 3

docker exec -it master mysql -S /var/lib/mysql/mysql.sock -e "CREATE USER 'repl'@'127.0.0.1' IDENTIFIED BY 'repl';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1';"

## Obtaining the Replication Master Binary Log Coordinates
master_status=`docker exec -it master mysql -S /var/lib/mysql/mysql.sock -e "show master status\G"`
master_log_file=`echo "$master_status" | awk 'NR==2{print substr($2,1,length($2)-1)}'`
master_log_pos=`echo "$master_status" | awk 'NR==3{print $2}'`
master_log_file="'""$master_log_file""'"

## Setting Up Replication Slaves 
docker exec -it slave mysql -S /var/lib/mysql/mysql.sock -e "CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE=$master_log_file,MASTER_LOG_POS=$master_log_pos;"docker exec -it slave mysql -S /var/lib/mysql/mysql.sock -e "start slave;"
docker exec -it slave mysql -S /var/lib/mysql/mysql.sock -e "show slave status\G"

## Creates shortcuts
grep "alias master" /etc/profile
if [ $? -eq 1 ];then
  echo 'alias mysql="docker exec -it master mysql"' >> /etc/profile
  echo 'alias master="docker exec -it master mysql -h 127.0.0.1 -P3306"' >> /etc/profile
  echo 'alias slave="docker exec -it master mysql -h 127.0.0.1 -P3307"' >> /etc/profile
  source /etc/profile
fi

腳本本身沒有太多需要說明的地方,主從容器起來后,遵循的還是常見的主從復(fù)制建立流程。

主要是說說創(chuàng)建容器所涉及的選項。

復(fù)制代碼 代碼如下:

docker run --name master -v /etc/master.cnf:/etc/mysql/my.cnf -v $MASTER_DIR:/var/lib/mysql  --net=host -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.34

 -v /etc/master.cnf:/etc/mysql/my.cnf:將本地的配置文件映射成容器的配置文件,這樣,可通過修改本地配置文件,來達到修改容器配置文件的效果。

 -v $MASTER_DIR:/var/lib/mysql :將本地目錄映射成容器的數(shù)據(jù)目錄,這樣,方便查看數(shù)據(jù)目錄的內(nèi)容,不然的話,就默認保存在/var/lib/docker/volumes目錄下,實在不方便查看。

 --net=host:共享宿主機的網(wǎng)絡(luò),大大降低容器之間的通信復(fù)雜度。

 注意

在腳本剛開始的時候,會刪除之前的容器,這包含兩步操作

1. 通過docker命令刪除容器

2. 通過操作系統(tǒng)命令刪除之前容器的數(shù)據(jù)目錄。

    如果不刪除的話,再次通過如下命令創(chuàng)建容器時,并不會清空之前的數(shù)據(jù)目錄,而是直接加載,相當(dāng)于新啟了一個mysqld進程啟動之前的實例。

復(fù)制代碼 代碼如下:

docker run --name master -v /etc/master.cnf:/etc/mysql/my.cnf -v $MASTER_DIR:/var/lib/mysql  --net=host -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.34

這也給我們提供了一個思路,如果只是想測試參數(shù)的作用,并不想新建實例的話,只需通過docker命令刪除容器,修改配置文件,通過上述命令創(chuàng)建容器即可。

在啟動實例后,執(zhí)行了一個重啟實例的操作,因為在測試的過程中,發(fā)現(xiàn)如果執(zhí)行docker exec -it master bash之類的操作,會導(dǎo)致容器down掉(具體down的原因還未分析),但是重啟實例后就沒問題。

docker stop master slave
docker start master slave

sleep 3

設(shè)置快捷鍵

mysql:mysql客戶端,可以通過該客戶端連接其它主機上的MySQL服務(wù)器。

master:執(zhí)行master即可登錄本機的master實例,省掉了指定主機名和端口的操作。

salve:執(zhí)行slave即可登錄本機的slave實例。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker學(xué)習(xí)筆記之k8s部署方法

    Docker學(xué)習(xí)筆記之k8s部署方法

    這篇文章主要介紹了Docker學(xué)習(xí)筆記之k8s部署方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Docker容器綁定外部IP和端口的方法

    Docker容器綁定外部IP和端口的方法

    Docker允許通過外部訪問容器或者容器之間互聯(lián)的方式來提供網(wǎng)絡(luò)服務(wù)。這篇文章主要介紹了Docker容器綁定外部IP和端口的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 解決docker報錯:docker:invalid?reference?format.

    解決docker報錯:docker:invalid?reference?format.

    在導(dǎo)入鏡像的時候出現(xiàn)問題:invalid reference format,這里總結(jié)下,這篇文章主要給大家介紹了關(guān)于解決docker報錯:docker:invalid?reference?format的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 總結(jié)Docker不適合部署數(shù)據(jù)庫的7大原因

    總結(jié)Docker不適合部署數(shù)據(jù)庫的7大原因

    在本篇文章里小編給大家整理一篇關(guān)于Docker不適合部署數(shù)據(jù)庫的7大原因,有興趣的朋友們可以參考學(xué)習(xí)下。
    2021-01-01
  • Docker部署tenine實現(xiàn)后端應(yīng)用的高可用與負載均衡(推薦)

    Docker部署tenine實現(xiàn)后端應(yīng)用的高可用與負載均衡(推薦)

    采用Docker部署Tengine和Keepalived,實現(xiàn)了一種適用于小型應(yīng)用場景的高可用負載均衡解決方案,本方案需要兩臺Ubuntu服務(wù)器、Docker軟件以及三個IP地址,適合需要簡易而可靠的負載均衡和高可用性的小型應(yīng)用部署,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • docker-compose安裝jenkins全過程

    docker-compose安裝jenkins全過程

    本文詳細介紹了如何在服務(wù)器上通過Docker安裝和配置Jenkins,包括環(huán)境準備、安裝JDK和Maven、配置環(huán)境變量、修改Maven設(shè)置、配置docker-compose.yml文件以及如何解決訪問403錯誤等步驟,此外,還涵蓋了如何新建流水線任務(wù)并配置pipeline腳本
    2024-09-09
  • Docker 批量刪除容器或鏡像的操作方法

    Docker 批量刪除容器或鏡像的操作方法

    這篇文章主要介紹了Docker 批量刪除容器或鏡像的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Docker每次啟動容器,IP及hosts指定的操作

    Docker每次啟動容器,IP及hosts指定的操作

    這篇文章主要介紹了Docker每次啟動容器,IP及hosts指定的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Docker下mysql設(shè)置字符集的方法

    Docker下mysql設(shè)置字符集的方法

    這篇文章主要介紹了Docker下的mysql設(shè)置字符集的方法,需要的朋友可以參考下
    2018-03-03
  • 詳解用Docker搭建Laravel和Vue項目的開發(fā)環(huán)境

    詳解用Docker搭建Laravel和Vue項目的開發(fā)環(huán)境

    這篇文章主要介紹了詳解用Docker搭建Laravel和Vue項目的開發(fā)環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03

最新評論

河北区| 措美县| 平塘县| 珲春市| 奈曼旗| 灵武市| 霍林郭勒市| 湘西| 双江| 自贡市| 阿拉善左旗| 报价| 宿松县| 景泰县| 通山县| 阳谷县| 安宁市| 北宁市| 曲周县| 芒康县| 阿荣旗| 额尔古纳市| 咸宁市| 罗甸县| 浪卡子县| 丰镇市| 嵊泗县| 同心县| 密山市| 金阳县| 嘉兴市| 大关县| 长泰县| 邯郸市| 沈阳市| 招远市| 玉田县| 深州市| 方城县| 汪清县| 游戏|