大家好,咱們前面通過十篇的文章介紹了docker的基礎篇,從本篇開始,咱們的《docker學習系列》將要進入到高級篇階段(基礎篇大家可以查看之前發佈的文章)。 咱們先來介紹:docker複雜方式安裝軟體。通過按照mysql\redis兩個案例來講解 Docker複雜安裝說明,兩個案例: 1:安裝my ...
大家好,咱們前面通過十篇的文章介紹了docker的基礎篇,從本篇開始,咱們的《docker學習系列》將要進入到高級篇階段(基礎篇大家可以查看之前發佈的文章)。
咱們先來介紹:docker複雜方式安裝軟體。通過按照mysql\redis兩個案例來講解
Docker複雜安裝說明,兩個案例:
1:安裝mysql主從複製
2:安裝redis集群
本文咱們就先來實現第一個案例:mysql主從複製
大家好,我是凱哥Java(kaigejava),樂於分享,每日更新技術文章,歡迎大家關註“凱哥Java”,及時瞭解更多。讓我們一起學Java。也歡迎大家有事沒事就來和凱哥聊聊~~~
安裝mysql主從搭建步驟:
1:新建主伺服器容器實例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:進入/mydata/mysql-master/conf目錄下新建my.cnf
修改配置:
cd /mydata/mysql-master/conf
vim my.cnf
## 輸入以下內容
[mysqld]
## 設置server_id,同一區域網中需要唯一
server_id=101
## 指定不需要同步的資料庫名稱
binlog-ignore-db=mysql
## 開啟二進位日誌功能
log-bin=mall-mysql-bin
## 設置二進位日誌使用記憶體大小(事務)
binlog_cache_size=1M
## 設置使用的二進位日誌格式(mixed,statement,row)
binlog_format=mixed
## 二進位日誌過期清理時間。預設值為0,表示不自動清理。
expire_logs_days=7
## 跳過主從複製中遇到的所有錯誤或指定類型的錯誤,避免slave端複製中斷。
## 如:1062錯誤是指一些主鍵重覆,1032錯誤是因為主從資料庫數據不一致
slave_skip_errors=1062
註意文件許可權應該是644
3:修改完配置之後重啟master實例
修改完mysql配置後,記得重啟實例
docker restart mysql-master
如果重啟失敗,查看是否因為my.conf文件寫錯導致。
或者查看錯誤日誌: docker logs 容器id
修改後,重新啟動容器。
4:進入mysql-master容器
進入到mysql-master。然後登錄mysql試試。
在前臺顯示進入容器:
docker exec -it mysql-master /bin/bash
進入容器後,登錄mysql:
mysql -uroot -p
5:master容器實例內創建數據同步用戶
mysql創建用戶及密碼命令:
命令模板:CREATE USER '用戶名'@'可以訪問的ip' IDENTIFIED BY '密碼'
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
賦權命令模板:GRANT REPLICATION 許可權 on 訪問ip埠 TO '用戶名'@‘ip’
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
6:新建從伺服器容器實例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
區別:
1:修改了宿主機的埠映射
2:修改了容器名稱
3:修改了數據捲掛載的目錄
7:進入/mydata/mysql-slave/conf目錄下新建my.cnf
修改配置:
cd /mydata/mysql-slave/conf
vim my.cnf
## 輸入以下內容
[mysqld]
## 設置server_id,同一區域網中需要唯一
server_id=102
## 指定不需要同步的資料庫名稱
binlog-ignore-db=mysql
## 開啟二進位日誌功能,以備Slave作為其它資料庫實例的Master時使用
log-bin=mall-mysql-slave1-bin
## 設置二進位日誌使用記憶體大小(事務)
binlog_cache_size=1M
## 設置使用的二進位日誌格式(mixed,statement,row)
binlog_format=mixed
## 二進位日誌過期清理時間。預設值為0,表示不自動清理。
expire_logs_days=7
## 跳過主從複製中遇到的所有錯誤或指定類型的錯誤,避免slave端複製中斷。
## 如:1062錯誤是指一些主鍵重覆,1032錯誤是因為主從資料庫數據不一致
slave_skip_errors=1062
## relay_log配置中繼日誌
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave將複製事件寫進自己的二進位日誌
log_slave_updates=1
## slave設置為只讀(具有super許可權的用戶除外)
read_only=1
重新賦權
8:修改完配置後重啟slave實例
修改完mysql配置後,記得重啟實例
docker restart mysql-slave
9:在主資料庫這查看主從同步狀態
在mysql主庫的鏡像中,進入主mysql,然後執行命令:
show master status;
10:進入mysql-slave容器
進入到mysql-master。然後登錄mysql試試。
在前臺顯示進入容器:
docker exec -it mysql-slave /bin/bash
進入容器後,登錄mysql:
mysql -uroot -p
11:在從資料庫中配置主從複製
在mysql從庫的鏡像中,進入從mysql,然後執行命令公式:
change master to master_host='宿主機ip', master_user='在主庫上創建用於主從同步的用戶賬號', master_password='在主資料庫創建的用於同步數據的用戶密碼', master_port=master庫的埠, master_log_file='masterlog文件名稱', master_log_pos=當前開始點, master_connect_retry=重試;
公式說明:見註釋
master_host:主資料庫的ip地址
master_port:主資料庫的埠
master_user:在主資料庫創建的用於同步數據的用戶賬號
master_password:在主資料庫創建的用於同步數據的用戶的密碼
master_log_file:指定從資料庫要複製數據的日誌文件。通過查看主資料庫的狀態,獲取File參數;
master_log_pos:指定從資料庫從哪個位置開始複製數據,通過查看主數據的狀態,獲取Position參數
master_connect_retry:連接失敗充值的時間間隔,單位:秒
12:在從資料庫中查看主從同步狀態
查看主從同步第二中方法
show slave status \G;
13:在從資料庫中開啟主從同步
進入從資料庫的mysql後,開啟主從同步:
start slave;
14:查看從資料庫狀態發現已經同步
15:主從複製測試
結束語
如操作有問題歡迎去 我的 個人博客(www.kaigejava.com)留言或者 微信公眾號(凱哥Java)留言交流哦。
直通車,本系列教程已發佈文章,快速到達,《Docker學習系列》教程已經發佈的內容如下:
【圖文教程】Windows11下安裝Docker Desktop
【填坑】在windows系統下安裝Docker Desktop後遷移鏡像位置
【Docker學習系列】Docker學習1-docker安裝
【Docker學習系列】Docker學習2-docker設置鏡像加速器
【Docker學習系列】Docker學習3-docker的run命令幹了什麼?docker為什麼比虛擬機快?
【Docker學習系列】Docker學習2-常用命令之啟動命令和鏡像命令
【Docker學習系列】Docker學習系列3:常用命令之容器命令
【Docker學習系列】Docker學習4-常用命令之重要的容器命令
【Docker教程系列】Docker學習5-Docker鏡像理解
【Docker教程系列】Docker學習6-Docker鏡像commit操作案例
【Docker學習教程系列】7-如何將本地的Docker鏡像發佈到阿裡雲
【Docker學習教程系列】8-如何將本地的Docker鏡像發佈到私服?
「Docker學習系列教程」10-Docker容器數據捲案例
本文來自博客園,作者:kaizi1992,轉載請註明原文鏈接:https://www.cnblogs.com/kaigejava/p/16987482.html