基于Docker 配置主從服務(wù)器實(shí)現(xiàn) mysql主從復(fù)制(8.0)

基于Docker 配置主從服務(wù)器實(shí)現(xiàn) mysql主從復(fù)制

版本

mysql - latest(8.0)

感謝

這里感謝B站上飛哥在狂神說(shuō)java這個(gè)IP上上傳的視頻資源

主從復(fù)制報(bào)錯(cuò)2061:Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection - 墨天輪

(1條消息) Docker搭建MySQL8主從復(fù)制 (全網(wǎng)最詳細(xì)版)_bright的博客-CSDN博客

ShardingShpere數(shù)據(jù)庫(kù)中間件- 專欄 -KuangStudy

(1條消息) ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS can_小偉的博客-CSDN博客

(1條消息) @@GLOBAL.GTID_MODE = OFF 問(wèn)題_wangxuelei036的博客-CSDN博客

等娄琉。

同時(shí)感謝 B站欠肾、CSDN戳表、簡(jiǎn)書(shū) 等提供的平臺(tái)!

mysql - 共同配置

安裝mysql
docker pull mysql:latest

選擇你自己需要安裝的mysql版本,這這里選擇的是最新的(latest),對(duì)應(yīng) 8.0,版本這里包含了一個(gè)連接的坑,我下文會(huì)講!

如果你不是使用Docker進(jìn)行安裝,而是直接在linux下安裝mysql,我推薦教程 - (02~03)

該博客是KaungStudy飛哥提供的文檔涡上。

mysql 是否安裝成功?
查看安裝成功的鏡像
docker images
查看docker已安裝鏡像

存在mysql紅框內(nèi)容就表示安裝成功!

mysql 啟動(dòng)
docker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:latest

run : 啟動(dòng)

-p 3306:3306 : 指定映射端口, -p 外部端口:內(nèi)部端口(容器內(nèi)部)

--name mysql-master :給容器起別名,起個(gè)名稱方便以后稱呼(我用的主-mysql是mymysql)

-e MYSQL_ROOT_PASSWORD=12345678 : 設(shè)置root用戶的密碼

-d : 后臺(tái)運(yùn)行

mysql:latest : mysql:tag,tag就是你選擇的msyql版本號(hào)

查看mysql-容器是否啟動(dòng)成功?

mysql啟動(dòng)成功后,會(huì)打印出當(dāng)前運(yùn)行容器的id

或者你自己查看容器狀態(tài)!

docker ps
查看正在運(yùn)行的容器列表

這樣的就表示啟動(dòng)成功了拦惋。

mysql 配置master

先進(jìn)入 mysql容器內(nèi)部,這里我的主mysql叫mymysql,命令如下:

docker exec -it mymysql /bin/bash
進(jìn)入容器

可以看到下一行的root@已經(jīng)不一樣了,并且該id就是你當(dāng)前進(jìn)入的容器的容器id,

查看容器內(nèi)部配置文件所在,我已經(jīng)把my.cnf所在截圖了,如下:

my.cnf路徑

/etc/mysql/my.cnf (這個(gè)有用!)

OK寻仗,我感覺(jué)我是不是廢話太多了,那我們下面就加快進(jìn)度吧!

拿到路徑之后,我們先進(jìn)入my.cnf,

vim進(jìn)入my.conf

好吧,容器內(nèi)部沒(méi)裝vim,你可以自己去安裝。

apt-get update

apt-get install vim

我就沒(méi)有這么去安裝了我直接用了docker cp

使用 docker cp 配置 my.cnf
  1. 將my.cnf 從容器復(fù)制到主機(jī)上
docker cp 容器id(或容器名稱):/etc/mysql/my.cnf /docker/mysql/master(或slavel1)/my.cnf

將容器id或名稱為XXX的容器在 /etc/mysql/my.cnf 復(fù)制給主機(jī)路徑下的/docker/mysql/master/my.cnf文件

  1. 修改my.cnf(添加對(duì)應(yīng)的主從配置)

    主節(jié)點(diǎn)如下:

[mysqld]
## 同一局域網(wǎng)內(nèi)注意要唯一
server-id=100  
## 開(kāi)啟二進(jìn)制日志功能瀑凝,可以隨便刃蚵(關(guān)鍵)
log-bin=master-bin
binlog-format=ROW     // 二級(jí)制日志格式,有三種 row粤咪,statement谚中,mixed
binlog-do-db=數(shù)據(jù)庫(kù)名  //同步的數(shù)據(jù)庫(kù)名稱,如果不配置,表示同步所有的庫(kù)

從節(jié)點(diǎn)如下:

[mysqld]
# 設(shè)置server_id,注意要唯一
server-id=201  
# 開(kāi)啟二進(jìn)制日志功能寥枝,以備Slave作為其它Slave的Master時(shí)使用
log-bin=mysql-slave-bin   
# relay_log配置中繼日志
relay_log=mysql-relay-bin  
# 設(shè)置為只讀,該項(xiàng)如果不設(shè)置宪塔,表示slave可讀可寫(xiě)
read_only=1  
  1. 將修改后的my.cnf復(fù)制回容器中
docker cp /docker/mysql/master(或slavel1)/my.cnf 容器id(或容器名稱):/etc/mysql/my.cnf 

就是和步驟1的指令路徑反一下。

  1. 重啟服務(wù)
docker restart 容器名稱/容器id

注意每個(gè)主從節(jié)點(diǎn)的server-id都要唯一!!!

master(主)配置

經(jīng)過(guò)共同配置之后呢,我們先進(jìn)入主-mysql中,查看對(duì)應(yīng)配置從節(jié)點(diǎn)需要的信息囊拜。

進(jìn)入mysql內(nèi)部
# 進(jìn)入容器內(nèi)部
docker exec -it 容器id/容器名稱 /bin/bash
# 進(jìn)入mysql
mysql -uroot -p密碼
進(jìn)入master-mysql

登錄成功

查看master服務(wù)的binlog文件名和位置(master節(jié)點(diǎn)執(zhí)行)
show master status;
master服務(wù)的binlog文件名和位置

OK某筐,接下來(lái)配置從節(jié)點(diǎn)。

slave(從)配置

它一開(kāi)始的步驟和主的一樣,都是共同配置,唯一不一樣的是修改 my.cnf不一樣,請(qǐng)注意!

進(jìn)入mysql內(nèi)部
# 進(jìn)入容器內(nèi)部
docker exec -it 容器id/容器名稱 /bin/bash
# 進(jìn)入mysql
mysql -uroot -p密碼
進(jìn)入slave1-mysql

)

登錄成功

執(zhí)行 change master to
change master to master_user='root',master_password='mysql8.0',master_host='192.168.168.101',master_port=3306,get_master_public_key=1, master_log_file='master-bin.000004', master_log_pos=1097, master_connect_retry=30;

master_host :Master庫(kù)的地址
master_port:Master的端口號(hào)冠跷,指的是容器的端口號(hào)
master_user:用于數(shù)據(jù)同步的用戶
master_password:用于同步的用戶的密碼
master_log_file:指定 Slave 從哪個(gè)日志文件開(kāi)始復(fù)制數(shù)據(jù)南誊,即上文中提到的 File 字段的值
master_log_pos:從哪個(gè) Position 開(kāi)始讀,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗蜜托,重試的時(shí)間間隔抄囚,單位是秒,默認(rèn)是60秒get_master_public_key=1: 解決 Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection 問(wèn)題導(dǎo)致的密碼插件問(wèn)題 - msyql8.0才出現(xiàn)的問(wèn)題橄务。

注意: 當(dāng)前字段中說(shuō)的文中指的是 在錨點(diǎn) - 查看master服務(wù)的binlog文件名和位置(master節(jié)點(diǎn)執(zhí)行)那里查詢出來(lái)的主節(jié)點(diǎn)信息幔托。

啟動(dòng)slave
start slave;
查看是否配置成功?
show slave status \G

\G : 表示換行。

查詢從節(jié)狀態(tài)

兩個(gè) YES 就成功了!

配置從節(jié)點(diǎn)時(shí),出現(xiàn)的各種問(wèn)題?

飛哥這里已經(jīng)例舉了一大部分,我就不一一講了,放置傳送門(mén): https://www.kuangstudy.com/zl/sharding#1369645557613608962

我講一下我的主機(jī)配置時(shí)出現(xiàn)的問(wèn)題?

  1. Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection 問(wèn)題導(dǎo)致的密碼插件問(wèn)題 - msyql8.0才出現(xiàn)的問(wèn)題蜂挪。

從配置錨點(diǎn) - 執(zhí)行 change master to里已經(jīng)加上了該解決的配置了,看 get_master_public_key=1重挑,從博客中得到的解決方法(在評(píng)論那塊)。

  1. No query specified

    show slave status\G;

    多了個(gè)分號(hào)(;)棠涮。

  1. The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

    額,我是因?yàn)槲业膹墓?jié)點(diǎn)連接主節(jié)點(diǎn)配置那里的ip地址配置錯(cuò)了谬哀。

  2. Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS can

    由于之前用的master_auto_position=1,現(xiàn)在改回0严肪,重新用pos方法change就可以了史煎。

    # 停止slave
    stop slave;
    # 清楚配置
    reset slave;
    change master to master_auto_position=0;
    change master to master_user='root',master_password='mysql8.0',master_host='192.168.168.101',master_port=3306,get_master_public_key=1, master_log_file='master-bin.000004', master_log_pos=1097, master_connect_retry=30;
    # 啟動(dòng)slave
    start slave;
    

使用 root用戶 造成從(slavel-mysql)服務(wù)器可以操作數(shù)據(jù)(crud)?

(2條消息) mysql從庫(kù)不能寫(xiě)嗎_mysql的主從復(fù)制,從庫(kù)設(shè)為只讀不能寫(xiě)_L NEO的博客-CSDN博客

我建議給從庫(kù)分配一個(gè)普通用戶賬號(hào)并僅分配對(duì)應(yīng)權(quán)限!

# 例如以下,創(chuàng)建一個(gè)名稱為 'username' 密碼為 'password' 且任何ip都可以連接的賬號(hào) 
create user 'username'@'%' identified by 'password';
# 分配權(quán)限,例如我只給他 SELECT 權(quán)限
grant select on *.* to 'username'@'%';
# 需要刷新
flush privileges;
# 查看效果
show grants for 'username'@'%';

查看權(quán)限

然后你就可以自己去測(cè)試了,如果先看賬號(hào)創(chuàng)建成功了嗎?

# 查詢 mysql 庫(kù)下的用戶表信息
select host,user from mysql.user;
查看用戶表信息

權(quán)限分配成功后,我這邊使用navicat對(duì)'username'賬號(hào)進(jìn)行登錄,并(修改诬垂、新增劲室、刪除)數(shù)據(jù),出現(xiàn)下圖錯(cuò)誤信息!

無(wú)權(quán)限提示
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伦仍,一起剝皮案震驚了整個(gè)濱河市结窘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌充蓝,老刑警劉巖隧枫,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喉磁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡官脓,警方通過(guò)查閱死者的電腦和手機(jī)协怒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卑笨,“玉大人孕暇,你說(shuō)我怎么就攤上這事〕嘈耍” “怎么了妖滔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)桶良。 經(jīng)常有香客問(wèn)我座舍,道長(zhǎng),這世上最難降的妖魔是什么陨帆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任曲秉,我火速辦了婚禮,結(jié)果婚禮上疲牵,老公的妹妹穿的比我還像新娘承二。我一直安慰自己,他們只是感情好瑰步,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布矢洲。 她就那樣靜靜地躺著,像睡著了一般缩焦。 火紅的嫁衣襯著肌膚如雪读虏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天袁滥,我揣著相機(jī)與錄音盖桥,去河邊找鬼。 笑死题翻,一個(gè)胖子當(dāng)著我的面吹牛揩徊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嵌赠,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼塑荒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了姜挺?” 一聲冷哼從身側(cè)響起齿税,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炊豪,沒(méi)想到半個(gè)月后凌箕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拧篮,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年牵舱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了串绩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芜壁,死狀恐怖礁凡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慧妄,我是刑警寧澤把篓,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站腰涧,受9級(jí)特大地震影響韧掩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜窖铡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一疗锐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧费彼,春花似錦滑臊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至颠猴,卻和暖如春关划,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翘瓮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工贮折, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人资盅。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓调榄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親呵扛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子每庆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容