IP的設(shè)置:A主機(jī) IP:10.10.0.119;Mask:255.255.0.0;B主機(jī) IP:10.10.8.112;Mask:255.255.0.0
成都創(chuàng)新互聯(lián)網(wǎng)絡(luò)公司擁有10多年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗(yàn),近千家客戶的共同信賴。提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)站定制、外鏈、建網(wǎng)站、網(wǎng)站搭建、成都響應(yīng)式網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)
在IP設(shè)置完成以后,需要確定兩主機(jī)的防火墻確實(shí)已經(jīng)關(guān)閉??梢允褂妹顂ervice iptables status查看防火墻狀態(tài)。如果防火墻狀態(tài)。
為仍在運(yùn)行。使用service iptables stop來停用防火墻。如果想啟動(dòng)關(guān)閉防火墻,可以使用setup命令來禁用或定制。最終以兩臺(tái)主機(jī)可以相互ping通為佳。
3.2 配置A主(master) B從(slave)模式;3.2.1 配置A 為master。
增加一個(gè)用戶同步使用的帳號(hào):
GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’。
賦予10.10.8.112也就是Slave機(jī)器有File權(quán)限,只賦予Slave機(jī)器有File權(quán)限還不行,還要給它REPLICATION SLAVE的權(quán)限才可以。
增加一個(gè)數(shù)據(jù)庫作為同步數(shù)據(jù)庫:create database test;
創(chuàng)建一個(gè)表結(jié)構(gòu):create table mytest (username varchar(20),password varchar(20));
修改配置文件:修改A的/etc/my.cnf文件。
在my.cnf配置項(xiàng)中加入下面配置:
server-id = 1 #Server標(biāo)識(shí)
log-bin
binlog-do-db=test #指定需要日志的數(shù)據(jù)庫
重起數(shù)據(jù)庫服務(wù):
service mysqld restart
查看server-id:
show variable like ‘server_id’。
主從同步原理圖
mysql復(fù)制的模式
具體配置
master_log_file是第四步中File的值
master_log_pos是第四步中Postion的值
Slave_IO_Running等于yes代表已經(jīng)連接到主庫
Slave_SQL_Running等于yes 可執(zhí)行主庫binlog
這四個(gè)記錄了 IO或者SQL連接或者執(zhí)行出現(xiàn)的錯(cuò)誤
為了保障數(shù)據(jù)的安全與穩(wěn)定性,我們常用數(shù)據(jù)庫的主從復(fù)制與主主復(fù)制來實(shí)現(xiàn)。主從復(fù)制為從機(jī)實(shí)時(shí)拷貝一份主機(jī)的數(shù)據(jù),當(dāng)主機(jī)有數(shù)據(jù)變化時(shí),從機(jī)的數(shù)據(jù)會(huì)跟著變,當(dāng)從機(jī)數(shù)據(jù)有變化時(shí),主機(jī)數(shù)據(jù)不變;同樣地,主主復(fù)制就是,多個(gè)主機(jī)之間,只要有一個(gè)主機(jī)的數(shù)據(jù)變化了,其它主機(jī)數(shù)據(jù)也會(huì)跟著變化。
添加以下內(nèi)容
如果你是使用我之前那種方式啟動(dòng)的MySQL,那么你只需要去你相關(guān)聯(lián)的宿主機(jī)的配置文件夾里面去建立一個(gè) my.cnf 然后寫入上面的類容就好了。
比如:我的啟動(dòng)命令如下(不應(yīng)該換行的,這里為了方便查看,我給它分行了)
那么我只需要在 /docker/mysql_master/conf 這個(gè)目錄下創(chuàng)建 my.cnf 文件就好了。
這個(gè)命令是需要在容器里面執(zhí)行的
docker重啟mysql會(huì)關(guān)閉容器,我們需要重啟容器。
確保在主服務(wù)器上 skip_networking 選項(xiàng)處于 OFF 關(guān)閉狀態(tài), 這是默認(rèn)值。 如果是啟用的,則從站無法與主站通信,并且復(fù)制失敗。
我的命令如下
在從服務(wù)器配置連接到主服務(wù)器的相關(guān)信息 (在容器里面的mysql執(zhí)行)
上面代碼的xxxxx你需要換成你的IP,docker 查看容器 IP 的命令如下:
啟動(dòng)的那個(gè)從服務(wù)器的線程
測(cè)試的話,你可以在主服務(wù)器里面,創(chuàng)建一個(gè)數(shù)據(jù)庫,發(fā)現(xiàn)從服務(wù)器里面也有了,就成功了。
如果你還想要一個(gè)從服務(wù)器,那么你只需要按照上面配置從服務(wù)器再配置一個(gè)就行了,新建的從服務(wù)器,會(huì)自動(dòng)保存主服務(wù)器之前的數(shù)據(jù)。(測(cè)試結(jié)果) 如果你上面的主從復(fù)制搞定了,那么這個(gè)主主復(fù)制就很簡單了。我們把上面的從服務(wù)器也改成主服務(wù)器
1)、修改上面的從服務(wù)器的my.cnf文件,和主服務(wù)器的一樣(注意這個(gè)server-id不能一樣)然后重啟服務(wù)器 2)、在從服務(wù)器里面創(chuàng)建一個(gè)復(fù)制用戶創(chuàng)建命令一樣(這里修改一下用戶名可以改為 repl2) 3)、在之前的主服務(wù)器里面運(yùn)行下面這個(gè)代碼
上面主要是教你怎么搭建一個(gè)MySQL集群,但是這里面還有很多其它的問題。也是我在學(xué)習(xí)過程中思考的問題,可能有的小伙伴上來看到文章長篇大論的看不下去,只想去實(shí)現(xiàn)這樣一直集群功能,所以我就把問題寫在下面了。
1)、MySQL的replication和pxc MySQL的集群方案有replication和pxc兩種,上面是基于replication實(shí)現(xiàn)的。
replication: 異步復(fù)制,速度快,無法保證數(shù)據(jù)的一致性。 pxc: 同步復(fù)制,速度慢,多個(gè)集群之間是事務(wù)提交的數(shù)據(jù)一致性強(qiáng)。
2)、MySQL的replication數(shù)據(jù)同步的原理 我們?cè)谂渲玫臅r(shí)候開啟了它的二進(jìn)制日志,每次操作數(shù)據(jù)庫的時(shí)候都會(huì)更新到這個(gè)日志里面去。主從通過同步這個(gè)日志來保證數(shù)據(jù)的一致性。
3)、可否不同步全部的數(shù)據(jù) 可以配置,同步哪些數(shù)據(jù)庫,甚至是哪些表。
4)、怎么關(guān)閉和開始同步
5)、我就我的理解畫出了,主從、主從從、主主、復(fù)制的圖。
往期推薦:
利用Docker僅花1分鐘時(shí)間安裝好MySQL服務(wù)
Linux下MySQL 5.7的離線與在線安裝(圖文)
Linux下安裝MySQL8.0(收藏!)