焦點(diǎn)資訊:docker高級(jí)篇第一章-docker復(fù)雜安裝說明【案例mysql有問題】
大家好,咱們前面通過十篇的文章介紹了docker的基礎(chǔ)篇,從本篇開始,咱們的《docker學(xué)習(xí)系列》將要進(jìn)入到高級(jí)篇階段(基礎(chǔ)篇大家可以查看之前發(fā)布的文章)。
咱們先來介紹:docker復(fù)雜方式安裝軟件。通過按照mysql\redis兩個(gè)案例來講解
【資料圖】
Docker復(fù)雜安裝說明,兩個(gè)案例:
1:安裝mysql主從復(fù)制
2:安裝redis集群
本文咱們就先來實(shí)現(xiàn)第一個(gè)案例:mysql主從復(fù)制
大家好,我是凱哥Java(kaigejava),樂于分享,每日更新技術(shù)文章,歡迎大家關(guān)注“凱哥Java”,及時(shí)了解更多。讓我們一起學(xué)Java。也歡迎大家有事沒事就來和凱哥聊聊~~~
直通車,本系列教程已發(fā)布文章,快速到達(dá),《Docker學(xué)習(xí)系列》教程已經(jīng)發(fā)布的內(nèi)容如下:
【圖文教程】Windows11下安裝Docker Desktop
【填坑】在windows系統(tǒng)下安裝Docker Desktop后遷移鏡像位置
【Docker學(xué)習(xí)系列】Docker學(xué)習(xí)1-docker安裝
【Docker學(xué)習(xí)系列】Docker學(xué)習(xí)2-docker設(shè)置鏡像加速器
【Docker學(xué)習(xí)系列】Docker學(xué)習(xí)3-docker的run命令干了什么?docker為什么比虛擬機(jī)快?
【Docker學(xué)習(xí)系列】Docker學(xué)習(xí)2-常用命令之啟動(dòng)命令和鏡像命令
【Docker學(xué)習(xí)系列】Docker學(xué)習(xí)系列3:常用命令之容器命令
【Docker學(xué)習(xí)系列】Docker學(xué)習(xí)4-常用命令之重要的容器命令
【Docker教程系列】Docker學(xué)習(xí)5-Docker鏡像理解
【Docker教程系列】Docker學(xué)習(xí)6-Docker鏡像commit操作案例
【Docker學(xué)習(xí)教程系列】7-如何將本地的Docker鏡像發(fā)布到阿里云
【Docker學(xué)習(xí)教程系列】8-如何將本地的Docker鏡像發(fā)布到私服?
「Docker學(xué)習(xí)系列教程」9-Docker容器數(shù)據(jù)卷介紹
「Docker學(xué)習(xí)系列教程」10-Docker容器數(shù)據(jù)卷案例
Docker學(xué)習(xí)11-Docker常規(guī)方式安裝軟件
【Docker學(xué)習(xí)教程系列匯總】筆記及遇到問題解決文章
安裝mysql主從搭建步驟:
1:新建主服務(wù)器容器實(shí)例3307
命令
docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
2:進(jìn)入/mydata/mysql-master/conf目錄下新建my.cnf
修改配置:
cd /mydata/mysql-master/conf
vim my.cnf
## 輸入以下內(nèi)容
[mysqld]
## 設(shè)置server_id,同一局域網(wǎng)中需要唯一
server_id=101
## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql
## 開啟二進(jìn)制日志功能
log-bin=mall-mysql-bin
## 設(shè)置二進(jìn)制日志使用內(nèi)存大?。ㄊ聞?wù))
binlog_cache_size=1M
## 設(shè)置使用的二進(jìn)制日志格式(mixed,statement,row)
binlog_format=mixed
## 二進(jìn)制日志過期清理時(shí)間。默認(rèn)值為0,表示不自動(dòng)清理。
expire_logs_days=7
## 跳過主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免slave端復(fù)制中斷。
## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062
注意文件權(quán)限應(yīng)該是644
3:修改完配置之后重啟master實(shí)例
修改完mysql配置后,記得重啟實(shí)例
docker restart mysql-master
如果重啟失敗,查看是否因?yàn)閙y.conf文件寫錯(cuò)導(dǎo)致。
或者查看錯(cuò)誤日志:docker logs 容器id
修改后,重新啟動(dòng)容器。
4:進(jìn)入mysql-master容器
進(jìn)入到mysql-master。然后登錄mysql試試。
在前臺(tái)顯示進(jìn)入容器:
docker exec -it mysql-master /bin/bash
進(jìn)入容器后,登錄mysql:
mysql -uroot -p
5:master容器實(shí)例內(nèi)創(chuàng)建數(shù)據(jù)同步用戶
mysql創(chuàng)建用戶及密碼命令:
命令模板:CREATE USER "用戶名"@"可以訪問的ip" IDENTIFIED BY "密碼"
CREATE USER "slave"@"%" IDENTIFIED BY "123456";
賦權(quán)命令模板:GRANT REPLICATION 權(quán)限 on 訪問ip端口 TO "用戶名"@‘ip’
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO "slave"@"%";
6:新建從服務(wù)器容器實(shí)例3308
命令:
docker run -p 3308:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
區(qū)別:
1:修改了宿主機(jī)的端口映射
2:修改了容器名稱
3:修改了數(shù)據(jù)卷掛載的目錄
7:進(jìn)入/mydata/mysql-slave/conf目錄下新建my.cnf
修改配置:
cd /mydata/mysql-slave/conf
vim my.cnf
## 輸入以下內(nèi)容
[mysqld]
## 設(shè)置server_id,同一局域網(wǎng)中需要唯一
server_id=102
## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql
## 開啟二進(jìn)制日志功能,以備Slave作為其它數(shù)據(jù)庫實(shí)例的Master時(shí)使用
log-bin=mall-mysql-slave1-bin
## 設(shè)置二進(jìn)制日志使用內(nèi)存大小(事務(wù))
binlog_cache_size=1M
## 設(shè)置使用的二進(jìn)制日志格式(mixed,statement,row)
binlog_format=mixed
## 二進(jìn)制日志過期清理時(shí)間。默認(rèn)值為0,表示不自動(dòng)清理。
expire_logs_days=7
## 跳過主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免slave端復(fù)制中斷。
## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062
## relay_log配置中繼日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave將復(fù)制事件寫進(jìn)自己的二進(jìn)制日志
log_slave_updates=1
## slave設(shè)置為只讀(具有super權(quán)限的用戶除外)
read_only=1
重新賦權(quán)
8:修改完配置后重啟slave實(shí)例
修改完mysql配置后,記得重啟實(shí)例
docker restart mysql-slave
9:在主數(shù)據(jù)庫這查看主從同步狀態(tài)
在mysql主庫的鏡像中,進(jìn)入主mysql,然后執(zhí)行命令:
show master status;
10:進(jìn)入mysql-slave容器
進(jìn)入到mysql-master。然后登錄mysql試試。
在前臺(tái)顯示進(jìn)入容器:
docker exec -it mysql-slave /bin/bash
進(jìn)入容器后,登錄mysql:
mysql -uroot -p
11:在從數(shù)據(jù)庫中配置主從復(fù)制
在mysql從庫的鏡像中,進(jìn)入從mysql,然后執(zhí)行命令公式:
change master to master_host="宿主機(jī)ip", master_user="在主庫上創(chuàng)建用于主從同步的用戶賬號(hào)", master_password="在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶密碼", master_port=master庫的端口, master_log_file="masterlog文件名稱", master_log_pos=當(dāng)前開始點(diǎn), master_connect_retry=重試;
公式說明:見注釋
master_host:主數(shù)據(jù)庫的ip地址
master_port:主數(shù)據(jù)庫的端口
master_user:在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶賬號(hào)
master_password:在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶的密碼
master_log_file:指定從數(shù)據(jù)庫要復(fù)制數(shù)據(jù)的日志文件。通過查看主數(shù)據(jù)庫的狀態(tài),獲取File參數(shù);
master_log_pos:指定從數(shù)據(jù)庫從哪個(gè)位置開始復(fù)制數(shù)據(jù),通過查看主數(shù)據(jù)的狀態(tài),獲取Position參數(shù)
master_connect_retry:連接失敗充值的時(shí)間間隔,單位:秒
12:在從數(shù)據(jù)庫中查看主從同步狀態(tài)
查看主從同步第二中方法:
show slave status \G;
13:在從數(shù)據(jù)庫中開啟主從同步
進(jìn)入從數(shù)據(jù)庫的mysql后,開啟主從同步:
start slave;
14:查看從數(shù)據(jù)庫狀態(tài)發(fā)現(xiàn)已經(jīng)同步
15:主從復(fù)制測(cè)試
關(guān)鍵詞: 主從復(fù)制 以下內(nèi)容 數(shù)據(jù)庫名稱
相關(guān)閱讀
-
焦點(diǎn)資訊:docker高級(jí)篇第一章-docker復(fù)...
大家好,咱們前面通過十篇的文章介紹了docker的基礎(chǔ)篇,從本篇開始... -
我跟 ChatGPT 吵起來了
什么是ChatGPT呢?我們直接來問一下ChatGPT就好啦。嗯,ChatGPT使用... -
協(xié)程這么好,它能完全代替線程么?:全球...
好多問題呀,開始回答或者提問前,其實(shí)可以看看問題本身是不是有問... -
目標(biāo)檢測(cè)系列 | 無NMS的端到端目標(biāo)檢...
全卷積檢測(cè)器放棄一對(duì)多匹配,采用一對(duì)一匹配策略實(shí)現(xiàn)端到端檢測(cè),... -
當(dāng)前時(shí)訊:自古二樓出人才,天涯論壇停...
這幾天,大家肯定看到了天涯論壇無法發(fā)帖的消息,里面的帖子的最后... -
每日速訊:Efficient-HRNet | Efficie...
許多新興智能物聯(lián)網(wǎng)應(yīng)用對(duì)輕量級(jí)多人姿勢(shì)估計(jì)的需求越來越大。然而...