亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

文章來源公眾號ytao ,

作者ytao

前言

MySQL的主從復(fù)制是實現(xiàn)應(yīng)用的高性能,高可用的基礎(chǔ)。對于數(shù)據(jù)庫讀操作較密集的應(yīng)用,通過使數(shù)據(jù)庫請求負(fù)載均衡分配到不同 MySQL服務(wù)器,可有效減輕數(shù)據(jù)庫壓力。當(dāng)遇到 MySQL單點故障中,也能在短時間內(nèi)實現(xiàn)故障切換。本文就 MySQL的內(nèi)建的復(fù)制功能進行闡述。

版本

  • MySQl: 5.7.17
  • centos: 7.4.1708
  • Docker: 1.13.1

概述

MySQL復(fù)制數(shù)據(jù)流程:

  1. 主庫在數(shù)據(jù)更新提交事務(wù)之前,將事件異步記錄到binlog二進制日志文件中,日志記錄完成后存儲引擎提交本次事務(wù)
  2. 從庫啟動一個I/O線程與主庫建立連接,用來請求主庫中要更新的binlog。這時主庫創(chuàng)建的binlog dump線程,這是二進制轉(zhuǎn)儲線程,如果有新更新的事件,就通知I/O線程;當(dāng)該線程轉(zhuǎn)儲二進制日志完成,沒有新的日志時,該線程進入sleep狀態(tài)。
  3. 從庫的I/O線程接收到新的事件日志后,保存到自己的relay log(中繼日志)中
  4. 從庫的SQL線程讀取中繼日志中的事件,并執(zhí)行更新保存。

配置主從庫

主庫my.cnf配置

在主庫的my.cnf中打開二進制日志,并設(shè)置服務(wù)Id。

log-bin = mysql-bin

server-id = 1

注意 server-id必須是一個唯一的數(shù)字,必須主從不一致, 且主從庫必須設(shè)置項。

從庫my.cnf配置

log-bin = mysql-bin

server-id = 2

log-slave-updates = 1

read-only = 1

從庫也開啟 log-bin, log-slave-updates設(shè)置為從庫重放中繼日志時,記錄到自己的二進制日志中,可以讓從庫作為其他服務(wù)器的主庫,將二進制日志轉(zhuǎn)發(fā)給其他從庫,在做一主多從方案時可考慮該種方案。

Dockerfile構(gòu)建MySQL鏡像

構(gòu)建所需文件

這里master和slave文件各自保存不共用,先創(chuàng)建文件夾/usr/local/mysql然后在目錄創(chuàng)建master和slave兩個目錄,再各自創(chuàng)建data文件夾

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

  • data 目錄用來保存數(shù)據(jù)文件的目錄
  • Dockerfile 保存Dockerfile內(nèi)容
  • init.sql 初始化數(shù)據(jù)庫的SQL
  • my.cnf 數(shù)據(jù)庫配置文件,配置方式上面已提到
  • start.sh Dockerfile構(gòu)建MySQL時的腳本

Dockerfile 內(nèi)容

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

這里的master和slave都是基于同一個鏡像構(gòu)建,使用的存儲引擎和其他的組件最好是同一中,不然在復(fù)制過程中可能會出現(xiàn)異常。

init.sql 初始化數(shù)據(jù)

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

創(chuàng)建data_copy數(shù)據(jù)庫和person表。

start.sh 腳本

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

構(gòu)建master和slave鏡像并運行容器

構(gòu)建master鏡像

docker build -t master/mysql .

構(gòu)建slave鏡像

docker build -t slave/mysql .

構(gòu)建成功會返回Successfuly,或通過docker images命令查看鏡像

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

使用剛構(gòu)建的鏡像來運行容器

# master 容器
docker run --name master -p 3306:3306 -v /usr/local/mysql/master/data/:/var/lib/mysql -d master/mysql
# slave 容器
docker run --name slave -p 3307:3306 -v /usr/local/mysql/slave/data/:/var/lib/mysql -d slave/mysql

指定 master端口為 3306, slave端口為 3307,掛載data目錄為保存數(shù)據(jù)的目錄。

連接到數(shù)據(jù)庫后驗證數(shù)據(jù)庫是否初始化成功

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

查看 log-bin 是否開啟

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

創(chuàng)建復(fù)制賬號

前面有提到從庫I/O線程要與主庫建立連接,所以需要用到賬號進行驗證。賬號除了要有連接權(quán)限(REPLICATION CLIENT),同時還要有復(fù)制權(quán)限(REPLICATION SLAVE)。

GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO muser@'%' IDENTIFIED BY 'ytao';

這里設(shè)置的訪問地址是開放的,實際使用過程中安全起見一定要指定訪問地址。

從庫啟動復(fù)制

從庫連接到主庫,獲取到二進制日志后重放。這里首先要配置上面創(chuàng)建的賬號進行連接,使用命令進行相應(yīng)的設(shè)置。

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

到這里復(fù)制還沒有啟動,需要再從庫中啟動

START SLAVE;

使用SHOW SLAVE STATUSG;命令查看啟動后的情況

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

上面標(biāo)記的輸出信息Slave_IO_Running:Yes和Slave_SQL_Running:Yes可以看到I/O線程和SQL線程已啟動運行中。

測試同步數(shù)據(jù)

如果在主庫中添加,更新或刪除一個數(shù)據(jù),那么從庫中應(yīng)該也有與主庫對應(yīng)的數(shù)據(jù)變化。向主庫添加一條數(shù)據(jù)

INSERT INTO `data_copy`.`person` (`id`, `name`) VALUES ('1', 'ytao');

查詢從庫數(shù)據(jù),數(shù)據(jù)已被同步過來。

基于Docker實現(xiàn)MYSQL主從復(fù)制

 

總結(jié)

上述是最簡單最基本的配置,但是理解上面的配置過程,就可以根據(jù)自身情況定制不同方案,實現(xiàn)一主多從,主主復(fù)制(主動-主動或主動-被動模式)等等來滿足自身需求。MySQL的復(fù)制雖然使用簡單方便,但也伴隨著一些問題需要我們在使用中進行解決,比如:不能從服務(wù)器異常停止中恢復(fù),數(shù)據(jù)同步的延遲等等,還好現(xiàn)在遇到的大部分問題在行業(yè)中已得到相應(yīng)的解決。對這方面感興趣的可以去了解下現(xiàn)在解決這些問題的中間件實現(xiàn)方案。

分享到:
標(biāo)簽:Docker
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定