欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

基于docker的mysql5.7主從配置

本篇內(nèi)容介紹了“基于docker的MySQL5.7主從配置”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比景泰網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式景泰網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋景泰地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

建立主庫

準(zhǔn)備主庫的配置文件

docker下的mysql5.7數(shù)據(jù)庫配置文件存在在多個(gè)文件下,入口文件是/etc/mysql/my.cnf,其他文件是通過include方式進(jìn)來。
為了能更直觀的查看配置文件,所以主庫的配置文件放在/etc/mysql/mysql.conf.d/master.cnf

# vi $PWD/master.cnf
[mysqld]
server-id=100
log-bin=mysql-bin

# vi $PWD/master.sql
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

準(zhǔn)備主庫的存放目錄(可省略)

不難理解的是mysql數(shù)據(jù)庫里記錄的一筆筆數(shù)據(jù),最終還是以文件形式存在硬盤中的某幾個(gè)文件里的
在docker鏡像里的mysql5.7環(huán)境下,那些重要的數(shù)據(jù)文件是存在/var/lib/mysql目錄下,當(dāng)然是在容器環(huán)境中
所以建議將這些文件從容器內(nèi)部映射到容器外部,以便更方便的對(duì)其進(jìn)行備份保存。 本列中,我將容器內(nèi)部的/var/lib/mysql映射到自己主機(jī)的master/db目錄,這個(gè)目錄可以不建立,只要說明路徑,docker會(huì)幫我們建立 ps:自己主機(jī)可以使用網(wǎng)盤路徑,這樣數(shù)據(jù)庫的文件其實(shí)是存在遠(yuǎn)端的。

使用docker運(yùn)行mysql主庫

docker run -p 5001:3306 \
--name mymaster \
-v $PWD/master.cnf:/etc/mysql/mysql.conf.d/master.cnf \
-v $PWD/masterdb:/var/lib/mysql \
-v $PWD/master.sql:/docker-entrypoint-initdb.d/master.sql \
-e MYSQL_ROOT_PASSWORD=111111 \
-e MYSQL_DATABASE=waynedb \
-e MYSQL_USER=wayne \
-e MYSQL_PASSWORD=wayne \
-d mysql:5.7

逐行解釋:

  1. 將docker中的3306端口映射到外面的5001端口

  2. 將外面的配置文件映射到內(nèi)部

  3. 將數(shù)據(jù)庫文件映射到外面某個(gè)目錄下(可以省略)

  4. 設(shè)置root密碼

  5. 設(shè)置一個(gè)初始數(shù)據(jù)庫(可以省略)

  6. 設(shè)置用戶,默認(rèn)該用戶對(duì)上述初始數(shù)據(jù)庫有完全權(quán)限(可以省略)

  7. 設(shè)置上述用戶密碼(可以省略)

  8. 使用image為mysql的5.7版本

配置主庫

進(jìn)入主庫數(shù)據(jù)庫內(nèi)部

使用強(qiáng)大的docker,來模擬一個(gè)mysql客戶端,直接連接已經(jīng)運(yùn)行的主庫,注意填寫真實(shí)的主庫ip和端口號(hào)

docker run --rm -it --name mysql-client mysql:5.7 mysql -h20.2.11.97 --port=5001 -uroot -p

配置同步賬號(hào)和查看同步信息(廢棄)

進(jìn)入后先創(chuàng)建一個(gè)用于同步的賬號(hào)slave,密碼為123456,并賦予可同步權(quán)限

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

然后查詢狀態(tài),為從庫同步做準(zhǔn)備

show master status\G;

建立從庫

準(zhǔn)備從庫配置文件

# vi $PWD/slave.cnf
[mysqld]
server-id=101
## 開啟二進(jìn)制日志功能,以備Slave作為其它Slave的Master時(shí)使用
log-bin=mysql-slave-bin
## relay_log配置中繼日志
relay_log=edu-mysql-relay-bin

使用docker運(yùn)行mysql從庫

docker run -p 5002:3306 \
--name myslave \
-v $PWD/slave.cnf:/etc/mysql/mysql.conf.d/slave.cnf \
-v $PWD/slavedb:/var/lib/mysql \
-v $PWD/a.sql:/docker-entrypoint-initdb.d/a.sql \
-e MYSQL_ROOT_PASSWORD=111111 \
-e MYSQL_DATABASE=waynedb \
-e MYSQL_USER=wayne \
-e MYSQL_PASSWORD=wayne \
-d mysql:5.7

配置從庫

進(jìn)入從庫數(shù)據(jù)庫內(nèi)部

使用強(qiáng)大的docker,來模擬一個(gè)mysql客戶端,直接連接已經(jīng)運(yùn)行的主庫,注意填寫真實(shí)的從庫ip和端口號(hào)

docker run --rm -it --name mysql-client mysql:5.7 mysql -h20.2.11.97 --port=5002 -uroot -p

配置同步

配置從庫去連接主庫
請(qǐng)注意填寫真實(shí)的主庫ip和端口號(hào)
請(qǐng)注意填寫真實(shí)的master_log_file和master_log_pos,這個(gè)是從主庫上使用show master status\G;獲得

mysql> change master to master_host='10.2.11.97', 
master_user='slave', 
master_password='123456', 
master_port=5001, 
master_log_file='mysql-bin.000001', 
master_log_pos= 2830, 
master_connect_retry=30;
解釋:
master_host :Master的地址,指的是容器的獨(dú)立ip,可以通過docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱|容器id查詢?nèi)萜鞯膇p
master_port:Master的端口號(hào),指的是容器的端口號(hào)
master_user:用于數(shù)據(jù)同步的用戶
master_password:用于同步的用戶的密碼
master_log_file:指定 Slave 從哪個(gè)日志文件開始復(fù)制數(shù)據(jù),即上文中提到的 File 字段的值
master_log_pos:從哪個(gè) Position 開始讀,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時(shí)間間隔,單位是秒,默認(rèn)是60秒

啟動(dòng)從的復(fù)制功能

start slave;

使用docker的mysql來充當(dāng)客戶端

使用docker的mysql來充當(dāng)客戶端,運(yùn)行一次就退出(--rm),進(jìn)入交互模式(-it),黑體是mysql連接命令 docker run --rm -it --name mysql-client mysql:5.7 mysql -h227.0.0.1 --port=3339 -uroot -p

一鍵腳本

這個(gè)腳本需要基于docker的環(huán)境,請(qǐng)先配置好docker
僅需修改#-------------------------------上面的那部分內(nèi)容

master_ip= 主庫所在主機(jī)的真實(shí)ip
master_port= 主庫所在主機(jī)的監(jiān)聽端口
master_MYSQL_ROOT_PASSWORD=主庫的root賬號(hào)密碼
master_docker_name=主庫在docker下的名字
master_root_path=主庫的數(shù)據(jù)文件映射到主機(jī)的目錄

腳本如下:

#!/bin/bash

# master_ip和slave_ip如果相同的話,則master_port and slave_port不能相同,master_docker_name and slave_docker_name也不能相同
# 設(shè)置端口前,注意端口有沒有被占用
# master_ip和slave_ip要能互相訪問

# 主庫相關(guān)設(shè)置
master_ip=10.2.11.97
master_port=5010
master_MYSQL_ROOT_PASSWORD=111111
master_docker_name=mymaster_new
master_root_path=/home/wayne/newnew

# 從庫相關(guān)設(shè)置
slave_ip=10.2.11.97
slave_port=5011
slave_MYSQL_ROOT_PASSWORD=111111
slave_docker_name=myslave_new
slave_root_path=$master_root_path

# 從庫使用以下用戶去連接主庫同步
sync_user=slave
sync_pass=123456

#-----------------------------------------------------------
reset() {
	docker rm -f $master_docker_name
	docker rm -f $slave_docker_name
}

master() {
	if [ ! -d $master_root_path ]; then
		mkdir -p $master_root_path
	fi	

	cd $master_root_path
	cat << EOF > master.sql
CREATE USER '${sync_user}'@'%' IDENTIFIED BY '${sync_pass}';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '${sync_user}'@'%';
EOF

	cat << EOF > master.cnf
[mysqld]
server-id=100
log-bin=mysql-bin
EOF
	
	
	docker run -p ${master_port}:3306 \
	--name ${master_docker_name} \
	-v $PWD/master.cnf:/etc/mysql/mysql.conf.d/master.cnf \
	-v $PWD/masterdb:/var/lib/mysql \
	-v $PWD/master.sql:/docker-entrypoint-initdb.d/master.sql \
	-e MYSQL_ROOT_PASSWORD=${master_MYSQL_ROOT_PASSWORD} \
	-e MYSQL_DATABASE=waynedb \
	-e MYSQL_USER=wayne \
	-e MYSQL_PASSWORD=wayne \
	-d mysql:5.7

#	rm master.sql
#	rm master.cnf
}

slave() {
	i=1
	file=`docker run --rm -it --name mysql-client mysql:5.7 mysql -h ${master_ip} --port=${master_port} -uroot -p${master_MYSQL_ROOT_PASSWORD} -e "show master status\G;" 2>/dev/null|grep File |cut -f2 -d : | awk '$1=$1'`
	while [ -z $file ]
	do
		echo $i times sleep 5
		sleep 5
		i=`expr ${i} + 1`
		if [ $i -gt 10 ]; then
			echo "連接主庫失敗,從庫不建立并退出"
			exit 0
		fi
		file=`docker run --rm -it --name mysql-client mysql:5.7 mysql -h ${master_ip} --port=${master_port} -uroot -p${master_MYSQL_ROOT_PASSWORD} -e "show master status\G;" 2>/dev/null|grep File |cut -f2 -d : | awk '$1=$1'`
	done

	pos=`docker run --rm -it --name mysql-client mysql:5.7 mysql -h ${master_ip} --port=${master_port} -uroot -p${master_MYSQL_ROOT_PASSWORD} -e "show master status\G;" 2>/dev/null|grep Pos |cut -f2 -d : | awk '$1=$1'`

	echo $pos


	if [ ! -d $slave_root_path ]; then
		mkdir -p $slave_root_path
	fi	
	cd $slave_root_path
	cat << EOF > slavetmp.sql
stop slave;
change master to master_host='${master_ip}', 
master_user='${sync_user}', 
master_password='${sync_pass}', 
master_port=${master_port}, 
master_log_file='$file', 
master_log_pos= $pos, 
master_connect_retry=30;
start slave;
EOF

	cat -v slavetmp.sql |tr -d "^M" > slave.sql

	cat << EOF > slave.cnf
[mysqld]
server-id=101
## 開啟二進(jìn)制日志功能,以備Slave作為其它Slave的Master時(shí)使用
log-bin=mysql-slave-bin
## relay_log配置中繼日志
relay_log=edu-mysql-relay-bin
EOF

	docker run -p ${slave_port}:3306 \
	--name ${slave_docker_name} \
	-v $PWD/slave.cnf:/etc/mysql/mysql.conf.d/slave.cnf \
	-v $PWD/slavedb:/var/lib/mysql \
	-v $PWD/slave.sql:/docker-entrypoint-initdb.d/slave.sql \
	-e MYSQL_ROOT_PASSWORD=${slave_MYSQL_ROOT_PASSWORD} \
	-e MYSQL_DATABASE=waynedb \
	-e MYSQL_USER=wayne \
	-e MYSQL_PASSWORD=wayne \
	-d mysql:5.7


#	rm slave.sql
#	rm slavetmp.sql
#	rm slave.cnf
}

master
slave

#reset

“基于docker的mysql5.7主從配置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)頁名稱:基于docker的mysql5.7主從配置
本文來源:http://aaarwkj.com/article42/ijhsec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站導(dǎo)航、云服務(wù)器、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
一区二区三区高清av在线| 激情男女一区二区三区| 日韩欧美一区二区三区| 国产精品v一区二区三区| 国产精品对白久久久久粗| 亚洲av成人精品日韩一区麻豆| 久久久久久精品人妻网| 久久这里只有精品视频| av天堂久久这里只有精品美国| 久久精品熟女亚洲av色| 精品黄色大片不卡国产| 中文字幕中出亚洲精品| 一区二区三区蜜桃av| 日本熟女视频中文字幕| av毛片在线播放免费| av天堂黄色在线观看| 九九热视频这里是精品| 日本午夜理论视频在线播放| 丰满少妇在线观看网站| 91欧美日韩中在线视频| 国产三级精品三级在线播放| 91久久高清国语自产拍| 国偷蜜桃av一区二区三区| 亚洲av最近在线观看| 人妻有码av中文字幕久久| 天天做日日干夜夜操| 欧美久久久久久久黑人| 国产视频一区2区三区| 麻豆视传媒短视频网站免费| 亚洲精品一区二区三区高潮| 韩国黄色理论片一区二区麻豆| 成人一区二区三区乱码| av 一区二区三区av| 国产精品亚洲伦理在线| 亚洲欧美一区二区国产| 亚洲av网站女性向在线观看| 成人爱爱在线视频免费观看| 国产真实老熟女无套内| 色噜噜人妻av中文字幕| 日韩午夜电影一区二区三区| 青青草视频免费观看高清在线观看新|