docker如何配置mysql主從復(fù)制
前提條件
1 具有docker環(huán)境的centos7
yum install docker service docker start
2 mysql鏡像(版本5.5以上,本文采用8.0)
docker pull mysql:8.0
mysql集群配置文件
1 創(chuàng)建配置集結(jié)構(gòu)如下

mkdir -p /home/data/mysql/data/master mkdir -p /home/data/mysql/data/slave mkdir -p /home/data/mysql/master mkdir -p /home/data/mysql/slave
2 創(chuàng)建節(jié)點(diǎn)配置文件(master.cnf與slave.cnf)
cd /home/data/mysql/master vi master.cnf
cd /home/data/mysql/slave vi slave.cnf
內(nèi)容如下
[mysqld] server-id=1 #任意自然數(shù)n,只要保證兩臺(tái)MySQL主機(jī)不重復(fù)就可以了。 log-bin=mysql-bin #開啟二進(jìn)制日志 #auto_increment_increment=2 #步進(jìn)值auto_imcrement。一般有n臺(tái)主MySQL就填n #auto_increment_offset=1 #起始值。一般填第n臺(tái)主MySQL。此時(shí)為第一臺(tái)主MySQL #binlog-ignore=mysql #忽略mysql庫【我一般都不寫】 #binlog-ignore=information_schema #忽略information_schema庫【我一般都不寫】 #replicate-do-db=aa #要同步的數(shù)據(jù)庫,默認(rèn)所有庫
搭建mysql環(huán)境
1 為mysql容器創(chuàng)建專有橋接網(wǎng)絡(luò),以便固定mysql容器ip
docker network create --driver bridge --subnet 172.25.0.0/16 mysql_net
備注:創(chuàng)建橋接網(wǎng)卡 mysql_net 指定自網(wǎng)段為172.25.0.0 如果不指定ip則與docker容器的docker0網(wǎng)卡同網(wǎng)段

2 創(chuàng)建mysql容器
(1) master
docker create --privileged=true #為容器掛載目錄添加權(quán)限 --name mysqlmaster #容器名為mysqlmaster -v /home/data/mysql/data/master:/var/lib/mysql #集群配置集中/data/master 掛載到容器/var/lib/mysql -v /home/data/mysql/master:/etc/mysql/conf.d #配置集中/master 中master.cnf 掛載到 /etc/mysql/conf.d中設(shè)置啟動(dòng) -e MYSQL_ROOT_PASSWORD=root #設(shè)置啟動(dòng)密碼 --net mysql_net #指定容器連接網(wǎng)絡(luò) --ip 172.25.0.3 #指定容器使用ip -p 3307:3306 mysql:8.0 #指定主機(jī)映射到容器端口 即 主機(jī)訪問centos7 為3307 容器端口為3306
備注:上面#號(hào)后需要?jiǎng)h除
(2)salve
docker create --privileged=true --name mysqlslave -v /home/data/mysql/data/slave:/var/lib/mysql -v /home/data/mysql/salve:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --net mysql_net --ip 172.25.0.2 -p 3308:3306 mysql:8.0
備注:同上
3 啟動(dòng)容器
docker start mysqlsalve docker start mysqlmaster
查看運(yùn)行狀態(tài)
docker ps -a

查看容器ip
docker network inspect mysql_net

4 容器設(shè)置遠(yuǎn)程訪問
docker exec -it mysqlmaster /bin/bash
使用容器ip登錄 并輸入密碼
mysql -u root -p -h 172.25.0.3
修改root帳號(hào)密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
備注:同理進(jìn)入另一個(gè)容器相同操作
5 使用navicat在主機(jī)(非centos7)登錄mysql容器


備注:容器ip為docker容器內(nèi)部路由使用,虛擬機(jī)ip為外部主機(jī)入口,可以通過橋接訪問到容器
啟動(dòng)mysql主從
1 進(jìn)入master 賦權(quán)限 以及查詢master 的日志文件 以及位置
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'root'; --賦權(quán)限給root用戶 flush privileges; --刷新權(quán)限
show master status;

2 進(jìn)入slave 設(shè)置slave配置以及啟動(dòng)slave
change master to master_host='172.25.0.3', --master的ip 不能為127.0.0.1 master_user='root', --master的帳號(hào)密碼 master_password='root', master_log_file='mysql-bin.000003', --master 查詢的file名 注意上面! master_port=3306, --master 端口 坑!為容器端口 不是主機(jī)端口 master_log_pos=596; --日志文件位置 注意上面!
start slave; show slave status;

備注:主從同步啟動(dòng)標(biāo)志 若出現(xiàn)cennecting to master 則有錯(cuò)誤 請(qǐng)自己查找
3 驗(yàn)證主從
主庫創(chuàng)建任何數(shù)據(jù),從庫隨即更新!

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker?部署?OnlyOffice?文檔服務(wù)器的操作方法
本文詳細(xì)介紹了如何使用Docker部署OnlyOffice文檔服務(wù)器,包括準(zhǔn)備工作、設(shè)置變量和目錄結(jié)構(gòu)、創(chuàng)建并運(yùn)行OnlyOffice容器、訪問OnlyOffice文檔服務(wù)器以及配置和管理,通過這些步驟,你可以在本地快速搭建一個(gè)強(qiáng)大的文檔編輯平臺(tái),感興趣的朋友一起看看吧2025-02-02
Docker.v19安裝和配置Docker Compose編排工具的方法
這篇文章主要介紹了安裝Docker.v19和配置Docker Compose編排工具的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-06-06
基于Docker的MongoDB實(shí)現(xiàn)授權(quán)訪問的方法
這篇文章主要介紹了基于Docker的MongoDB實(shí)現(xiàn)授權(quán)訪問的方法,需要的朋友可以參考下2017-03-03
3分鐘用Docker搭建一個(gè)Minecraft服務(wù)器
這篇文章主要介紹了3分鐘用Docker搭建一個(gè)Minecraft服務(wù)器的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫的實(shí)現(xiàn)
本文主要介紹了Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Docker私有倉庫Registry部署的實(shí)現(xiàn)
這篇文章主要介紹了Docker私有倉庫Registry部署的實(shí)現(xiàn),私有倉庫最常用的就是Registry、Harbor兩種,本文詳細(xì)介紹如何搭建registry私有倉庫,感興趣的可以了解一下2020-06-06

