亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)險(xiǎn)。
  • -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)險(xiǎn)。
  • -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)文章

  • Windows10?Docker?Desktop安裝過程

    Windows10?Docker?Desktop安裝過程

    Docker?Desktop是Docker公司推出的一款桌面應(yīng)用程序,它提供了一個用戶友好的界面,方便開發(fā)人員在本地環(huán)境中使用容器技術(shù),這篇文章主要介紹了Windows10?Docker?Desktop安裝過程,需要的朋友可以參考下
    2024-01-01
  • 在vscode中使用ssh運(yùn)行docker:從下載到運(yùn)行全流程

    在vscode中使用ssh運(yùn)行docker:從下載到運(yùn)行全流程

    首先在本機(jī)或者服務(wù)器上下載docker并運(yùn)行,本文目的旨在本機(jī)下載docker并打包,然后在服務(wù)器上進(jìn)行加載,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • 使用Dockerfile部署nodejs服務(wù)的方法步驟

    使用Dockerfile部署nodejs服務(wù)的方法步驟

    這篇文章主要介紹了使用Dockerfile部署nodejs服務(wù)的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解

    Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解

    這篇文章主要介紹了Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 解讀Dockerfile中CMD和ENTRYPOINT是否可以混著用

    解讀Dockerfile中CMD和ENTRYPOINT是否可以混著用

    在Dockerfile中,CMD和ENTRYPOINT可以混著用,CMD指定默認(rèn)命令,ENTRYPOINT指定啟動命令,CMD可以被docker run命令的參數(shù)覆蓋
    2025-03-03
  • 使用Docker部署MySQL 5.7&8.0主從集群的方法步驟

    使用Docker部署MySQL 5.7&8.0主從集群的方法步驟

    這篇文章主要介紹了使用Docker部署MySQL 5.7&8.0主從集群的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • docker-mysql連接方式

    docker-mysql連接方式

    這篇文章主要介紹了docker-mysql連接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Docker容器通過獨(dú)立IP暴露給局域網(wǎng)的方法

    Docker容器通過獨(dú)立IP暴露給局域網(wǎng)的方法

    這篇文章主要介紹了Docker容器通過獨(dú)立IP暴露給局域網(wǎng)的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-04-04
  • docker?gitea?drone實(shí)現(xiàn)超輕量級CI?CD實(shí)戰(zhàn)詳解

    docker?gitea?drone實(shí)現(xiàn)超輕量級CI?CD實(shí)戰(zhàn)詳解

    這篇文章主要為大家介紹了docker?gitea?drone實(shí)現(xiàn)超輕量級CI?CD實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Elasticsearch使用常見問題解決方案

    Elasticsearch使用常見問題解決方案

    這篇文章主要介紹了Elasticsearch使用常見問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論