欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、簡單安裝

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

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

docker pull mysql:8.0.27

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

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,因為它會賦予容器更多的權(quán)限,可能會帶來一些安全風險。
  • -v /app/mysql8/log:/var/log/mysql: 將主機上的 /app/mysql8/log 目錄映射到容器內(nèi)的 /var/log/mysql,用于存儲MySQL的日志文件。
  • -v /app/mysql8/data:/var/lib/mysql: 將主機上的 /app/mysql8/data 目錄映射到容器內(nèi)的 /var/lib/mysql,用于持久化存儲MySQL的數(shù)據(jù)。
  • -v /app/mysql8/conf:/etc/mysql/conf.d: 將主機上的 /app/mysql8/conf 目錄映射到容器內(nèi)的 /etc/mysql/conf.d,用于提供自定義的MySQL配置文件。
  • -v /app/mysql8/files:/var/lib/mysql-files: 將主機上的 /app/mysql8/files 目錄映射到容器內(nèi)的 /var/lib/mysql-files,用于存儲MySQL的文件。
  • -e MYSQL_ROOT_PASSWORD=123456: 設置MySQL root用戶的密碼為 123456
  • -d: 后臺運行容器。

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

docker ps

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

4.1 進入容器

docker exec -it mysql8 /bin/bash

4.2 登錄mysql中 

mysql -uroot -p123456

4.3 進行簡單添加查找測試

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; 

二、主從復制安裝

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

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

ps:這里也默認使用mysql8版本進行安裝。

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: 將主機的3307端口映射到容器的3306端口,這樣可以通過主機的3307端口訪問MySQL服務。
  • --name mysql-master: 為容器指定一個名稱,這里是 mysql-master。
  • --privileged=true: 賦予容器更高的權(quán)限。注意,一般情況下最好避免使用 --privileged,因為它可能會引入一些潛在的安全風險。
  • -v /app/mysql-master/log:/var/log/mysql: 將主機上的 /app/mysql-master/log 目錄映射到容器內(nèi)的 /var/log/mysql,用于存儲MySQL的日志文件。
  • -v /app/mysql-master/data:/var/lib/mysql: 將主機上的 /app/mysql-master/data 目錄映射到容器內(nèi)的 /var/lib/mysql,用于持久化存儲MySQL的數(shù)據(jù)。
  • -v /app/mysql-master/conf:/etc/mysql/conf.d: 將主機上的 /app/mysql-master/conf 目錄映射到容器內(nèi)的 /etc/mysql/conf.d,用于提供自定義的MySQL配置文件。
  • -v /app/mysql-master/files:/var/lib/mysql-files: 將主機上的 /app/mysql-master/files 目錄映射到容器內(nèi)的 /var/lib/mysql-files,用于存儲MySQL的文件。
  • -e MYSQL_ROOT_PASSWORD=123456: 設置MySQL root用戶的密碼為 123456。
  • -d: 以后臺模式運行容器。
  • mysql:8.0.27: 使用的MySQL鏡像的標簽,這里是MySQL 8.0.27版本

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

vim /app/mysql-master/conf/my.cnf
[mysqld]
## 設置server_id, 同一個局域網(wǎng)中需要唯一
server_id=1001
## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql
## 開啟二進制日志功能
log-bin=mall-mysql-bin
## 設置二進制日志使用內(nèi)存大小(事務)
binlog_cache_size=1M
## 設置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed
## 二進制日志過期清理時間。默認值為0,表示不自動清理
expire_logs_days=7
## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷
## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062

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

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

docker restart mysql-master

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

4.1 進入容器

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主服務器的當前狀態(tài),包括二進制日志文件和位置

show master status;

參數(shù)說明:

File(文件)

表示當前正在寫入的二進制日志文件的名稱

Position(位置)

表示在二進制日志文件中的當前寫入位置

Binlog_Do_DB

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

Binlog_Ignore_DB

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

Executed_Gtid_Set

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

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

1. 從服務容器創(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ù)

vim /app/mysql-slave/conf/my.cnf
[mysqld]
## 設置server_id, 同一個局域網(wǎng)內(nèi)需要唯一
server_id=1002
## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql
## 開啟二進制日志功能,以備slave作為其它數(shù)據(jù)庫實例的Master時使用
log-bin=mall-mysql-slave1-bin
## 設置二進制日志使用內(nèi)存大小(事務)
binlog_cache_size=1M
## 設置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed
## 二進制日志過期清理時間。默認值為0,表示不自動清理
expire_logs_days=7
## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷
## 如:1062錯誤是指一些主鍵重復,1032是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062
## relay_log配置中繼日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave將復制事件寫進自己的二進制日志
log_slave_updates=1
## slave設置只讀(具有super權(quán)限的用戶除外)
read_only=1

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

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

docker restart mysql-slave

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

4.1 進入容器

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

4.2 配置從服務器,指定主服務器

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

ifconfig

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

4.3 啟動 MySQL 主從復制

start slave;

 4.4 查看 MySQL 主從復制狀態(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 配置完成,進行簡單測試

1. 在主服務器中創(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. 在從服務器中查詢數(shù)據(jù),是否同步

show databases;

use mydatabase;

select * from users;

3. 測試結(jié)果

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

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

相關文章

  • Windows10?Docker?Desktop安裝過程

    Windows10?Docker?Desktop安裝過程

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

    在vscode中使用ssh運行docker:從下載到運行全流程

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

    使用Dockerfile部署nodejs服務的方法步驟

    這篇文章主要介紹了使用Dockerfile部署nodejs服務的方法步驟,小編覺得挺不錯的,現(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指定默認命令,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主從集群的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • docker-mysql連接方式

    docker-mysql連接方式

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

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

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

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

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

    Elasticsearch使用常見問題解決方案

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

最新評論