Docker部署MySQL8集群(一主二從)的實(shí)現(xiàn)步驟
一.CentOS7.9安裝Docker20
1.安裝yum-utils工具
yum install -y yum-utils
2.設(shè)置docker的依賴源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
注釋:CentOS直接使用yum命令安裝的Docker版本為1.13.1屬于舊版docker的最后一個(gè)版本,所以需要配置一個(gè)repo,才能安裝新版的Docker-CE(社區(qū)版)。Docker-EE(企業(yè)版)需收費(fèi)讀者自行了解即可,這里使用CE社區(qū)版
3.安裝docker
yum -y install docker-ce
4.查看安裝的版本
docker -v docker version
5. 查看配套設(shè)置的版本
yum list installed | grep docker
6.拉取MySQL8鏡像
docker pull mysql:8
注解:mysql:5.7代表mysql版本為5.7
查看docker鏡像
docker images
二.部署MySQL集群(一主二從)
1.創(chuàng)建主從MySQL的配置及數(shù)據(jù)文件的存儲(chǔ)目錄
# 創(chuàng)建主服務(wù)的配置目錄和數(shù)據(jù)目錄 mkdir -p /usr/local/mysqlData/master/cnf mkdir -p /usr/local/mysqlData/master/data # 創(chuàng)建1號(hào)從服務(wù)器的配置目錄和數(shù)據(jù)目錄 mkdir -p /usr/local/mysqlData/slave/cnf mkdir -p /usr/local/mysqlData/slave/data # 創(chuàng)建2號(hào)從服務(wù)器的配置目錄和數(shù)據(jù)目錄 mkdir -p /usr/local/mysqlData/slave2/cnf mkdir -p /usr/local/mysqlData/slave2/data
創(chuàng)建兩個(gè)從服務(wù)器的配置是因?yàn)镸ySQL配置的server-id不能重復(fù)
2.配置主服務(wù)器的配置文件
vim /usr/local/mysqlData/master/cnf/mysql.cnf
配置文件如下
[mysqld] ## 設(shè)置server_id,注意要唯一 server-id=1 ## 開啟binlog log-bin=mysql-bin ## binlog緩存 binlog_cache_size=1M ## binlog格式(mixed、statement、row,默認(rèn)格式是statement) binlog_format=mixed ##設(shè)置字符編碼為utf8mb4 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4
3.配置從服務(wù)器的配置文件
# 1號(hào)從服務(wù)器 vim /usr/local/mysqlData/slave/cnf/mysql.cnf # 2號(hào)從服務(wù)器 vim /usr/local/mysqlData/slave2/cnf/mysql.cnf
配置文件如下(1號(hào)的server-id設(shè)置為2,2號(hào)的server-id設(shè)置為3,不重復(fù)即可)
[mysqld] ## 設(shè)置server_id,注意要唯一 server-id=2 ## 開啟binlog log-bin=mysql-slave-bin ## relay_log配置中繼日志 relay_log=edu-mysql-relay-bin ## 如果需要同步函數(shù)或者存儲(chǔ)過(guò)程 log_bin_trust_function_creators=true ## binlog緩存 binlog_cache_size=1M ## binlog格式(mixed、statement、row,默認(rèn)格式是statement) binlog_format=mixed ##設(shè)置字符編碼為utf8mb4 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' slave_skip_errors=1062 [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4
4.創(chuàng)建主從MySQL鏡像
# 主服務(wù)器實(shí)例化 docker run -itd -p 3307:3306 --name master -v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 # 1號(hào)從服務(wù)器實(shí)例化 docker run -itd -p 3308:3306 --name slaver -v /usr/local/mysqlData/slave/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 # 2號(hào)從服務(wù)器實(shí)例化 docker run -itd -p 3309:3306 --name slaver2 -v /usr/local/mysqlData/slave2/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8
參數(shù)解釋
-p 指定容器暴露的端口,宿主機(jī)(物理機(jī))端口: docker實(shí)例端口
-p 3307:3306 把物理機(jī)的3307端口給實(shí)例的端口3306端口進(jìn)行映射
-v 給容器掛載存儲(chǔ)卷,掛載到容器的某個(gè)目錄
-v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d 把剛創(chuàng)建的配置文件夾映射成實(shí)例的/etc/mysql/conf.d
-v /usr/local/mysqlData/master/data:/var/lib/mysql 數(shù)據(jù)文件夾的映射
-e 指定環(huán)境變量,容器中可以使用該環(huán)境變量
-e MYSQL_ROOT_PASSWORD=123456 設(shè)置MySQL的root賬號(hào)密碼為123456
5.查看已創(chuàng)建的實(shí)例
docker ps -a
6.創(chuàng)建mysql連接用戶
# 創(chuàng)建用戶 reader設(shè)置密碼為reader CREATE USER reader IDENTIFIED BY 'reader'; # 給予reader同步權(quán)限 GRANT REPLICATION SLAVE ON *.* to 'reader'@'%'; FLUSH PRIVILEGES;
注解:其余的用戶,遠(yuǎn)程連接的自行設(shè)置
7.獲取主服務(wù)器的連接信息
# MySQL的連接信息 SHOW MASTER STATUS; #新開連接 獲取master實(shí)例的在docker的地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' master
從服務(wù)器連接主服務(wù)器(兩臺(tái)從服務(wù)器均是以下操作)
# 配置連接的參數(shù) change master to master_host='172.17.0.2',master_user='reader',master_password='reader',master_log_file='mysql-bin.000003',master_log_pos=2259; # 啟動(dòng)同步 start slave; # 查看是否成功 show slave status\G # 兩項(xiàng)都為Yes時(shí)代表成功。 # Slave_IO_Running: Yes # Slave_SQL_Running: Yes # 失敗需要使用停止連接后檢查其他賬號(hào)密碼,地址,pos等參數(shù) # 停止連接,如果一次成功無(wú)需使用該命令 stop slave;
三.結(jié)果
主服務(wù)器執(zhí)行命令
SHOW SLAVE HOSTS;
能從主服務(wù)器查詢到兩臺(tái)從服務(wù)器的ID以及端口。完成MySQL部署。
到此這篇關(guān)于Docker部署MySQL8集群(一主二從)的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker部署MySQL8集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker中部署mysql服務(wù)的方法及遇到的坑
- 詳解使用Docker部署MySQL(數(shù)據(jù)持久化)
- docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼
- docker-compose基于MySQL8部署項(xiàng)目的實(shí)現(xiàn)
- Docker 部署 Mysql8.0的方法示例
- Docker部署Mysql集群的實(shí)現(xiàn)
- docker 部署mysql詳細(xì)過(guò)程(docker部署常見應(yīng)用)
- docker上部署MySQL的示例
- Docker部署MySQL并實(shí)現(xiàn)客戶端連接
- 使用Docker部署MySQL的實(shí)現(xiàn)步驟
相關(guān)文章
解決docker pull鏡像報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決docker pull鏡像報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03使用docker在linux環(huán)境中部署springboot包的教程
這篇文章主要介紹了使用docker在linux環(huán)境中部署springboot包,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Windows10系統(tǒng)下Docker默認(rèn)存儲(chǔ)位置更改方案
這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Docker默認(rèn)存儲(chǔ)位置更改方案的相關(guān)資料,在Docker中存儲(chǔ)路徑是一個(gè)重要的話題,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn)
本文主要介紹了Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn),通過(guò)結(jié)合Jenkins的持續(xù)集成和Docker的容器化技術(shù),可以高效地構(gòu)建、測(cè)試和部署應(yīng)用程序,感興趣的可以了解一下2023-11-11docker容器通過(guò)ping直接運(yùn)行獲取公網(wǎng)IP操作
這篇文章主要介紹了docker容器通過(guò)ping直接運(yùn)行獲取公網(wǎng)IP操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11親手教你Docker Compose安裝DOClever的詳細(xì)過(guò)程
DOClever是一個(gè)可視化免費(fèi)開源的接口管理工具,DOClever前后端全部采用了javascript來(lái)作為我們的開發(fā)語(yǔ)言。這篇文章主要介紹了Docker Compose安裝DOClever的詳細(xì)過(guò)程,需要的朋友可以參考下2021-09-09