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

Docker配置MySql環(huán)境的實(shí)現(xiàn)步驟

 更新時間:2024年02月03日 11:29:07   作者:你小子在看什么……  
通過使用Docker,開發(fā)人員可以更容易地構(gòu)建、測試和交付應(yīng)用程序,同時減少了環(huán)境配置和依賴項(xiàng)管理的復(fù)雜性,本文主要介紹了Docker配置MySql環(huán)境的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),感興趣的可以了解一下

一、簡單安裝

1. 首先從Docker Hub中拉取鏡像

這里我要安裝的是mysql8版本。

docker pull mysql:8.0.27

2. 啟動嘗試創(chuàng)建MySQL容器,并設(shè)置掛載卷。

docker run -p 3306:3306 \
           --name mysql8 \
           --privileged=true \
           -v /app/mysql8/log:/var/log/mysql \
           -v /app/mysql8/data:/var/lib/mysql \
           -v /app/mysql8/conf:/etc/mysql/conf.d \
           -v /app/mysql8/files:/var/lib/mysql-files \
           -e MYSQL_ROOT_PASSWORD=123456 \
           -d mysql:8.0.27
  • --name mysql8: 為容器指定一個名稱,這里是 mysql8
  • --privileged=true: 賦予容器更多的權(quán)限。在一般情況下,盡量避免使用 --privileged,因?yàn)樗鼤x予容器更多的權(quán)限,可能會帶來一些安全風(fēng)險。
  • -v /app/mysql8/log:/var/log/mysql: 將主機(jī)上的 /app/mysql8/log 目錄映射到容器內(nèi)的 /var/log/mysql,用于存儲MySQL的日志文件。
  • -v /app/mysql8/data:/var/lib/mysql: 將主機(jī)上的 /app/mysql8/data 目錄映射到容器內(nèi)的 /var/lib/mysql,用于持久化存儲MySQL的數(shù)據(jù)。
  • -v /app/mysql8/conf:/etc/mysql/conf.d: 將主機(jī)上的 /app/mysql8/conf 目錄映射到容器內(nèi)的 /etc/mysql/conf.d,用于提供自定義的MySQL配置文件。
  • -v /app/mysql8/files:/var/lib/mysql-files: 將主機(jī)上的 /app/mysql8/files 目錄映射到容器內(nèi)的 /var/lib/mysql-files,用于存儲MySQL的文件。
  • -e MYSQL_ROOT_PASSWORD=123456: 設(shè)置MySQL root用戶的密碼為 123456
  • -d: 后臺運(yùn)行容器。

3. 查看mysql8這個容器是否啟動成功

docker ps

4. 如果已經(jīng)成功啟動,進(jìn)入容器中簡單測試

4.1 進(jìn)入容器

docker exec -it mysql8 /bin/bash

4.2 登錄mysql中 

mysql -uroot -p123456

4.3 進(jìn)行簡單添加查找測試

CREATE DATABASE mydatabase;

USE mydatabase;

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

INSERT INTO users (username, email) VALUES
('john_doe', 'john@example.com'),
('jane_smith', 'jane@example.com'),
('bob_jones', 'bob@example.com');

SELECT * FROM users; 

二、主從復(fù)制安裝

2.1 主服務(wù)創(chuàng)建配置

1. 主從服務(wù)容器創(chuàng)建,并且配置

ps:這里也默認(rèn)使用mysql8版本進(jìn)行安裝。

docker run -p 3307:3306 \
           --name mysql-master \
           --privileged=true \
           -v /app/mysql-master/log:/var/log/mysql \
           -v /app/mysql-master/data:/var/lib/mysql \
           -v /app/mysql-master/conf:/etc/mysql/conf.d \
		   -v /app/mysql-master/files:/var/lib/mysql-files \
           -e MYSQL_ROOT_PASSWORD=123456 \
           -d mysql:8.0.27
  • docker run: 啟動一個新的Docker容器。
  • -p 3307:3306: 將主機(jī)的3307端口映射到容器的3306端口,這樣可以通過主機(jī)的3307端口訪問MySQL服務(wù)。
  • --name mysql-master: 為容器指定一個名稱,這里是 mysql-master。
  • --privileged=true: 賦予容器更高的權(quán)限。注意,一般情況下最好避免使用 --privileged,因?yàn)樗赡軙胍恍撛诘陌踩L(fēng)險。
  • -v /app/mysql-master/log:/var/log/mysql: 將主機(jī)上的 /app/mysql-master/log 目錄映射到容器內(nèi)的 /var/log/mysql,用于存儲MySQL的日志文件。
  • -v /app/mysql-master/data:/var/lib/mysql: 將主機(jī)上的 /app/mysql-master/data 目錄映射到容器內(nèi)的 /var/lib/mysql,用于持久化存儲MySQL的數(shù)據(jù)。
  • -v /app/mysql-master/conf:/etc/mysql/conf.d: 將主機(jī)上的 /app/mysql-master/conf 目錄映射到容器內(nèi)的 /etc/mysql/conf.d,用于提供自定義的MySQL配置文件。
  • -v /app/mysql-master/files:/var/lib/mysql-files: 將主機(jī)上的 /app/mysql-master/files 目錄映射到容器內(nèi)的 /var/lib/mysql-files,用于存儲MySQL的文件。
  • -e MYSQL_ROOT_PASSWORD=123456: 設(shè)置MySQL root用戶的密碼為 123456。
  • -d: 以后臺模式運(yùn)行容器。
  • mysql:8.0.27: 使用的MySQL鏡像的標(biāo)簽,這里是MySQL 8.0.27版本

2. 創(chuàng)建配置文件并設(shè)置參數(shù)

vim /app/mysql-master/conf/my.cnf
[mysqld]
## 設(shè)置server_id, 同一個局域網(wǎng)中需要唯一
server_id=1001
## 指定不需要同步的數(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)制日志過期清理時間。默認(rèn)值為0,表示不自動清理
expire_logs_days=7
## 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免slave端復(fù)制中斷
## 如:1062錯誤是指一些主鍵重復(fù),1032錯誤是因?yàn)橹鲝臄?shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062

ps:在編寫配置的時候,參數(shù)后不要留有空格,避免不必要的錯誤?。?!

3. 重啟容器使得配置生效

docker restart mysql-master

4. 進(jìn)入容器內(nèi),進(jìn)行主服務(wù)中進(jìn)行設(shè)置

4.1 進(jìn)入容器

docker exec -it mysql-master /bin/bash
mysql -uroot -p123456

4.2 創(chuàng)建數(shù)據(jù)同步用戶,并給同步用戶授權(quán)

create user 'slave'@'%' identified by '123456';
grant replication slave, replication client on *.* to 'slave'@'%';
flush privileges;

4.3 查看所有用戶的權(quán)限

SELECT user, host, authentication_string, Grant_priv, Super_priv, Create_priv, Insert_priv, Update_priv, Delete_priv, Select_priv FROM mysql.user;

 得到這樣得結(jié)果

4.4 查看MySQL主服務(wù)器的當(dāng)前狀態(tài),包括二進(jìn)制日志文件和位置

show master status;

參數(shù)說明:

File(文件)

表示當(dāng)前正在寫入的二進(jìn)制日志文件的名稱

Position(位置)

表示在二進(jìn)制日志文件中的當(dāng)前寫入位置

Binlog_Do_DB

一個逗號分隔的數(shù)據(jù)庫列表,表示正在復(fù)制的二進(jìn)制日志事件應(yīng)用于哪些數(shù)據(jù)庫

Binlog_Ignore_DB

一個逗號分隔的數(shù)據(jù)庫列表,表示正在復(fù)制的二進(jìn)制日志事件不應(yīng)用于哪些數(shù)據(jù)庫

Executed_Gtid_Set

表示已經(jīng)執(zhí)行的 GTID(全局事務(wù)標(biāo)識符)集合。在MySQL的 GTID 復(fù)制中

2.2 從服務(wù)創(chuàng)建配置

1. 從服務(wù)容器創(chuàng)建,并且配置

docker run -p 3308:3306 \
           --name mysql-slave \
           --privileged=true \
           -v /app/mysql-slave/log:/var/log/mysql \
           -v /app/mysql-slave/data:/var/lib/mysql \
           -v /app/mysql-slave/conf:/etc/mysql/conf.d \
		   -v /app/mysql-master/files:/var/lib/mysql-files \
           -e MYSQL_ROOT_PASSWORD=123456 \
           -d mysql:8.0.27

2. 創(chuàng)建配置文件并設(shè)置參數(shù)

vim /app/mysql-slave/conf/my.cnf
[mysqld]
## 設(shè)置server_id, 同一個局域網(wǎng)內(nèi)需要唯一
server_id=1002
## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql
## 開啟二進(jìn)制日志功能,以備slave作為其它數(shù)據(jù)庫實(shí)例的Master時使用
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)制日志過期清理時間。默認(rèn)值為0,表示不自動清理
expire_logs_days=7
## 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免slave端復(fù)制中斷
## 如:1062錯誤是指一些主鍵重復(fù),1032是因?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

ps:在編寫配置的時候,參數(shù)后不要留有空格,避免不必要的錯誤!??!

3. 重啟容器使得配置生效

docker restart mysql-slave

4. 進(jìn)入容器內(nèi),進(jìn)行從服務(wù)中進(jìn)行設(shè)置

4.1 進(jìn)入容器

docker exec -it mysql-slave /bin/bash
mysql -uroot -p123456

4.2 配置從服務(wù)器,指定主服務(wù)器

我這里使用的是 CentOS7,查看服務(wù)器地址

ifconfig

CHANGE MASTER TO
  MASTER_HOST = '192.168.153.133',       -- 主服務(wù)器的 IP 地址
  MASTER_USER = 'slave',                  -- 用于連接主服務(wù)器的用戶名
  MASTER_PASSWORD = '123456',             -- 用于連接主服務(wù)器的密碼
  MASTER_PORT = 3307,                     -- 主服務(wù)器的端口號
  MASTER_LOG_FILE = 'binlog.000011',      -- 主服務(wù)器的二進(jìn)制日志文件
  MASTER_LOG_POS = 1193,                  -- 主服務(wù)器的二進(jìn)制日志位置
  MASTER_CONNECT_RETRY = 30,              -- 如果連接失敗,重試的時間間隔(秒)
  GET_MASTER_PUBLIC_KEY = 1;              -- 啟用 SSL 模式,1 表示啟用

4.3 啟動 MySQL 主從復(fù)制

start slave;

 4.4 查看 MySQL 主從復(fù)制狀態(tài)

# \G 可以將橫向的結(jié)果集表格轉(zhuǎn)換成縱向展示。
# slave status的字段比較多,縱向展示比友好
show slave status \G;

主要查看 Slave_IO_Running 和 Slave_SQL_Running是否為 Yes 狀態(tài)。

ps:如果在安裝中遇到問題可以查看下面這篇文章  ↓↓↓ ↓↓↓ 

2.3 安裝中的遇到的問題

如果在安裝過程中遇到問題,可以查看這篇文章,這是我遇到的一些問題和解決方案。

Docker中安裝MySql的遇到的問題

icon-default.png?t=N7T8

2.4 配置完成,進(jìn)行簡單測試

1. 在主服務(wù)器中創(chuàng)建并添加數(shù)據(jù)

CREATE DATABASE IF NOT EXISTS mydatabase;

USE mydatabase;

CREATE TABLE IF NOT EXISTS users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);


INSERT INTO users (username, email) VALUES
    ('alice_white', 'alice@example.com'),
    ('charlie_brown', 'charlie@example.com'),
    ('emma_jones', 'emma@example.com');

select * from users;

2. 在從服務(wù)器中查詢數(shù)據(jù),是否同步

show databases;

use mydatabase;

select * from users;

3. 測試結(jié)果

主從服務(wù)器數(shù)據(jù)同步 

到此這篇關(guān)于Docker配置MySql環(huán)境的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker配置MySql環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 阿里云安裝docker全過程

    阿里云安裝docker全過程

    這篇文章主要介紹了阿里云安裝docker全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 非root用戶運(yùn)行Docker命令的操作步驟

    非root用戶運(yùn)行Docker命令的操作步驟

    在企業(yè)環(huán)境中,為了保證系統(tǒng)安全和權(quán)限的合理分配,通常不允許直接使用 root 用戶執(zhí)行 Docker 命令,本文將介紹如何配置普通用戶,使其能夠無須 root 權(quán)限便可執(zhí)行 Docker 命令,從而提升安全性和操作便捷性,需要的朋友可以參考下
    2025-04-04
  • Docker端口占用問題分析以及解決方案

    Docker端口占用問題分析以及解決方案

    這篇文章主要介紹了Docker端口占用問題分析以及解決方案,主要步驟包括檢查端口占用、處理Windows環(huán)境下的特殊問題、解決權(quán)限問題、修改端口映射和考慮其他可能原因,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • 關(guān)于docker安裝python3.8鏡像的問題

    關(guān)于docker安裝python3.8鏡像的問題

    這篇文章主要介紹了docker安裝python3.8鏡像的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 解決Docker警告:Your kernel does not support swap limit capabilities or the cgroup is not mounted問題

    解決Docker警告:Your kernel does not support&

    這篇文章主要介紹了解決Docker警告:Your kernel does not support swap limit capabilities or the cgroup is not mounted問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Docker端口暴露的幾種方式

    Docker端口暴露的幾種方式

    主要介紹了Docker端口暴露的幾種方式,包括-p(--publish)、-P(--publish-all)和EXPOSE,具有一定的參考價值,感興趣的可以了解一下
    2025-12-12
  • 在Docker容器中部署Django的時區(qū)問題

    在Docker容器中部署Django的時區(qū)問題

    本文主要介紹了在Docker容器中部署Django的時區(qū)問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Docker打包一個Python腳本的實(shí)現(xiàn)方法

    Docker打包一個Python腳本的實(shí)現(xiàn)方法

    本文主要介紹了Docker打包一個Python腳本的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • docker分布式部署jumpserver實(shí)踐

    docker分布式部署jumpserver實(shí)踐

    文章介紹了如何部署分布式JumpServer,包括定義網(wǎng)絡(luò)和數(shù)據(jù)持久化、部署數(shù)據(jù)庫、配置Redis密碼、生成隨機(jī)加密秘鑰并啟動JumpServer容器,作者建議在啟動前檢查SECRET_KEY是否一致,以確保數(shù)據(jù)庫加密字段的解密
    2026-03-03
  • Docker方式安裝gitlab--ARM64平臺安裝詳解

    Docker方式安裝gitlab--ARM64平臺安裝詳解

    這篇文章主要介紹了Docker方式安裝gitlab--ARM64平臺安裝,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

天全县| 鹤岗市| 镇康县| 巩留县| 开鲁县| 顺义区| 龙山县| 大埔县| 乌拉特后旗| 赤壁市| 宁南县| 开鲁县| 东辽县| 天门市| 四平市| 灵山县| 临夏市| 东乌珠穆沁旗| 额尔古纳市| 哈巴河县| 葵青区| 东台市| 康马县| 海原县| 长武县| 玛沁县| 辽源市| 河曲县| 邯郸县| 棋牌| 离岛区| 安阳市| 郴州市| 廉江市| 固始县| 瑞安市| 蒙阴县| 呼伦贝尔市| 凤山市| 子洲县| 镇雄县|