尤物视频网站_国产精品成人在亚洲_国产成人亚洲综合无码不卡精品_丁香五月香婷婷五月_亚洲成AV人片高潮喷水

您的位置:首頁 >聚焦 >

焦點資訊:docker高級篇第一章-docker復(fù)雜安裝說明【案例mysql有問題】

2022-12-17 15:42:50    來源:程序員客棧

大家好,咱們前面通過十篇的文章介紹了docker的基礎(chǔ)篇,從本篇開始,咱們的《docker學(xué)習(xí)系列》將要進入到高級篇階段(基礎(chǔ)篇大家可以查看之前發(fā)布的文章)。

咱們先來介紹:docker復(fù)雜方式安裝軟件。通過按照mysql\redis兩個案例來講解


【資料圖】

Docker復(fù)雜安裝說明,兩個案例:

1:安裝mysql主從復(fù)制

2:安裝redis集群

本文咱們就先來實現(xiàn)第一個案例:mysql主從復(fù)制

大家好,我是凱哥Java(kaigejava),樂于分享,每日更新技術(shù)文章,歡迎大家關(guān)注“凱哥Java”,及時了解更多。讓我們一起學(xué)Java。也歡迎大家有事沒事就來和凱哥聊聊~~~

直通車,本系列教程已發(fā)布文章,快速到達,《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為什么比虛擬機快?

【Docker學(xué)習(xí)系列】Docker學(xué)習(xí)2-常用命令之啟動命令和鏡像命令

【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ù)器容器實例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

## 輸入以下內(nèi)容

[mysqld]

## 設(shè)置server_id,同一局域網(wǎng)中需要唯一

server_id=101

## 指定不需要同步的數(shù)據(jù)庫名稱

binlog-ignore-db=mysql

## 開啟二進制日志功能

log-bin=mall-mysql-bin

## 設(shè)置二進制日志使用內(nèi)存大?。ㄊ聞?wù))

binlog_cache_size=1M

## 設(shè)置使用的二進制日志格式(mixed,statement,row)

binlog_format=mixed

## 二進制日志過期清理時間。默認值為0,表示不自動清理。

expire_logs_days=7

## 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免slave端復(fù)制中斷。

## 如:1062錯誤是指一些主鍵重復(fù),1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致

slave_skip_errors=1062

注意文件權(quán)限應(yīng)該是644

3:修改完配置之后重啟master實例

修改完mysql配置后,記得重啟實例

docker restart mysql-master

如果重啟失敗,查看是否因為my.conf文件寫錯導(dǎo)致。

或者查看錯誤日志:docker logs 容器id

修改后,重新啟動容器。

4:進入mysql-master容器

進入到mysql-master。然后登錄mysql試試。

在前臺顯示進入容器:

docker exec -it mysql-master /bin/bash

進入容器后,登錄mysql:

mysql -uroot -p

5:master容器實例內(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ù)器容器實例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:修改了宿主機的端口映射

2:修改了容器名稱

3:修改了數(shù)據(jù)卷掛載的目錄

7:進入/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

## 開啟二進制日志功能,以備Slave作為其它數(shù)據(jù)庫實例的Master時使用

log-bin=mall-mysql-slave1-bin

## 設(shè)置二進制日志使用內(nèi)存大?。ㄊ聞?wù))

binlog_cache_size=1M

## 設(shè)置使用的二進制日志格式(mixed,statement,row)

binlog_format=mixed

## 二進制日志過期清理時間。默認值為0,表示不自動清理。

expire_logs_days=7

## 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免slave端復(fù)制中斷。

## 如:1062錯誤是指一些主鍵重復(fù),1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致

slave_skip_errors=1062

## relay_log配置中繼日志

relay_log=mall-mysql-relay-bin

## log_slave_updates表示slave將復(fù)制事件寫進自己的二進制日志

log_slave_updates=1

## slave設(shè)置為只讀(具有super權(quán)限的用戶除外)

read_only=1

重新賦權(quán)

8:修改完配置后重啟slave實例

修改完mysql配置后,記得重啟實例

docker restart mysql-slave

9:在主數(shù)據(jù)庫這查看主從同步狀態(tài)

在mysql主庫的鏡像中,進入主mysql,然后執(zhí)行命令:

show master status;

10:進入mysql-slave容器

進入到mysql-master。然后登錄mysql試試。

在前臺顯示進入容器:

docker exec -it mysql-slave /bin/bash

進入容器后,登錄mysql:

mysql -uroot -p

11:在從數(shù)據(jù)庫中配置主從復(fù)制

在mysql從庫的鏡像中,進入從mysql,然后執(zhí)行命令公式:

change master to master_host="宿主機ip", master_user="在主庫上創(chuàng)建用于主從同步的用戶賬號", master_password="在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶密碼", master_port=master庫的端口, master_log_file="masterlog文件名稱", master_log_pos=當(dāng)前開始點, master_connect_retry=重試;

公式說明:見注釋

master_host:主數(shù)據(jù)庫的ip地址

master_port:主數(shù)據(jù)庫的端口

master_user:在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶賬號

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ù)庫從哪個位置開始復(fù)制數(shù)據(jù),通過查看主數(shù)據(jù)的狀態(tài),獲取Position參數(shù)

master_connect_retry:連接失敗充值的時間間隔,單位:秒

12:在從數(shù)據(jù)庫中查看主從同步狀態(tài)

查看主從同步第二中方法:

show slave status \G;

13:在從數(shù)據(jù)庫中開啟主從同步

進入從數(shù)據(jù)庫的mysql后,開啟主從同步:

start slave;

14:查看從數(shù)據(jù)庫狀態(tài)發(fā)現(xiàn)已經(jīng)同步

15:主從復(fù)制測試

關(guān)鍵詞: 主從復(fù)制 以下內(nèi)容 數(shù)據(jù)庫名稱

相關(guān)閱讀