開始安裝:
創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護(hù)、公眾號搭建、成都小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!
注意提示需要安裝net-tools包:
按順序安裝:
查詢?nèi)罩纠锩娴某跏蓟艽a:
修改密碼:
1,設(shè)置utf-8字符格式,兩個主機(jī)配置相同
授權(quán)
主機(jī)(master)添加配置文件信息:
主機(jī)添加配置信息:
從機(jī)添加的配置信息:
master服務(wù)器查看MySQL狀態(tài):
運行slave服務(wù)器MySQL(從服務(wù)器):執(zhí)行接入master服務(wù)器MySQL服務(wù)語句:
運行:
主庫上操作
其中file是binlog的文件名稱,position是當(dāng)前的偏移量。在設(shè)置從庫需要同步的內(nèi)容的時候需要設(shè)置這兩個參數(shù)。
一.?準(zhǔn)備服務(wù)器
準(zhǔn)備兩臺主機(jī),分別安裝好Mysql (要相同版本),確定版本無誤,確保mysql服務(wù)正常啟動,確保兩臺主機(jī)處于同一個局域網(wǎng)中,確定好哪臺做為主、備機(jī)器,假設(shè)A為主機(jī),B為備機(jī),假設(shè):
A主機(jī)IP地址為:172.16.16.90 端口3306
B主機(jī)IP地址為: 172.16.99.98 端口3306
二.?Mysql建立主-從服務(wù)器熱備配置步驟
1.?創(chuàng)建同步用戶
進(jìn)入MySql操作界面,在主服務(wù)器上為從服務(wù)器建立一個連接帳戶,該帳戶必須授予REPLICATION SLAVE權(quán)限。
操作指令如下:
1)?grant select,replication slave on *.* to 'replicate'@'172.16.99.98' identified by '1234567';
2)?flush privileges;
2.?修改Mysql配置
如果上面的準(zhǔn)備工作做好,就可以進(jìn)行對Mysql配置文件進(jìn)行修改了,首先找到主服務(wù)器Mysql安裝文件所有在目錄,找到my.ini文件用記事本打開。在[mysqld]下增加如下內(nèi)容:
server-id?=?1
log-bin=mysql-bin
binlog-do-db?=test? ?#需要備份的數(shù)據(jù)庫,多個寫多行
binlog-ignore-db?=?mysql??????#不需要備份的數(shù)據(jù)庫,多個寫多行
3.?重啟mysql服務(wù)
修改完配置文件保存后,重啟一下mysql服務(wù)。
4.?查看主服務(wù)器狀態(tài)
進(jìn)入A服務(wù)器Mysql 客戶端輸入命令
1)Show master STATUS;
2)返回結(jié)果如下:
注意看里面的參數(shù),特別前面兩個File和Position,在從服務(wù)器(Slave)配置主從關(guān)系會有用到的。
5.?從服務(wù)器Slave配置修改配置文件
因為這里面是以主-從方式實現(xiàn)mysql雙機(jī)熱備的,所以在從服務(wù)器就不用在建立同步帳戶了,直接打開配置文件my.ini進(jìn)行修改即可,道理還是同修改主服務(wù)器上的一樣,只不過需要修改的參數(shù)不一樣。
如下:
[mysqld]
server-id?=?2
log-bin=mysql-bin
replicate-do-db?=?test
replicate-ignore-db?=mysql
6.?重啟mysql服務(wù)
修改完配置文件保存后,重啟一下mysql服務(wù)。
7.?配置從服務(wù)器
先停止slave服務(wù)線程,這個是很重要的,如果不這樣做會造成下面操作不成功,再用change mster 語句指定同步位置,操作如下:
1)?stop?slave;
2)?change master to master_host='172.16.16.90',
master_user='replicate',master_password='1234567',master_port=3306,
master_log_file='mysql-bin.000001',master_log_pos=98;
3)?start slave
4) show?slave?status
查看下面兩項值均為Yes,即表示設(shè)置從服務(wù)器成功。
Slave_IO_Running:?Yes
Slave_SQL_Running:?Yes
為了保障數(shù)據(jù)的安全與穩(wěn)定性,我們常用數(shù)據(jù)庫的主從復(fù)制與主主復(fù)制來實現(xiàn)。主從復(fù)制為從機(jī)實時拷貝一份主機(jī)的數(shù)據(jù),當(dāng)主機(jī)有數(shù)據(jù)變化時,從機(jī)的數(shù)據(jù)會跟著變,當(dāng)從機(jī)數(shù)據(jù)有變化時,主機(jī)數(shù)據(jù)不變;同樣地,主主復(fù)制就是,多個主機(jī)之間,只要有一個主機(jī)的數(shù)據(jù)變化了,其它主機(jī)數(shù)據(jù)也會跟著變化。
添加以下內(nèi)容
如果你是使用我之前那種方式啟動的MySQL,那么你只需要去你相關(guān)聯(lián)的宿主機(jī)的配置文件夾里面去建立一個 my.cnf 然后寫入上面的類容就好了。
比如:我的啟動命令如下(不應(yīng)該換行的,這里為了方便查看,我給它分行了)
那么我只需要在 /docker/mysql_master/conf 這個目錄下創(chuàng)建 my.cnf 文件就好了。
這個命令是需要在容器里面執(zhí)行的
docker重啟mysql會關(guān)閉容器,我們需要重啟容器。
確保在主服務(wù)器上 skip_networking 選項處于 OFF 關(guān)閉狀態(tài), 這是默認(rèn)值。 如果是啟用的,則從站無法與主站通信,并且復(fù)制失敗。
我的命令如下
在從服務(wù)器配置連接到主服務(wù)器的相關(guān)信息 (在容器里面的mysql執(zhí)行)
上面代碼的xxxxx你需要換成你的IP,docker 查看容器 IP 的命令如下:
啟動的那個從服務(wù)器的線程
測試的話,你可以在主服務(wù)器里面,創(chuàng)建一個數(shù)據(jù)庫,發(fā)現(xiàn)從服務(wù)器里面也有了,就成功了。
如果你還想要一個從服務(wù)器,那么你只需要按照上面配置從服務(wù)器再配置一個就行了,新建的從服務(wù)器,會自動保存主服務(wù)器之前的數(shù)據(jù)。(測試結(jié)果) 如果你上面的主從復(fù)制搞定了,那么這個主主復(fù)制就很簡單了。我們把上面的從服務(wù)器也改成主服務(wù)器
1)、修改上面的從服務(wù)器的my.cnf文件,和主服務(wù)器的一樣(注意這個server-id不能一樣)然后重啟服務(wù)器 2)、在從服務(wù)器里面創(chuàng)建一個復(fù)制用戶創(chuàng)建命令一樣(這里修改一下用戶名可以改為 repl2) 3)、在之前的主服務(wù)器里面運行下面這個代碼
上面主要是教你怎么搭建一個MySQL集群,但是這里面還有很多其它的問題。也是我在學(xué)習(xí)過程中思考的問題,可能有的小伙伴上來看到文章長篇大論的看不下去,只想去實現(xiàn)這樣一直集群功能,所以我就把問題寫在下面了。
1)、MySQL的replication和pxc MySQL的集群方案有replication和pxc兩種,上面是基于replication實現(xiàn)的。
replication: 異步復(fù)制,速度快,無法保證數(shù)據(jù)的一致性。 pxc: 同步復(fù)制,速度慢,多個集群之間是事務(wù)提交的數(shù)據(jù)一致性強(qiáng)。
2)、MySQL的replication數(shù)據(jù)同步的原理 我們在配置的時候開啟了它的二進(jìn)制日志,每次操作數(shù)據(jù)庫的時候都會更新到這個日志里面去。主從通過同步這個日志來保證數(shù)據(jù)的一致性。
3)、可否不同步全部的數(shù)據(jù) 可以配置,同步哪些數(shù)據(jù)庫,甚至是哪些表。
4)、怎么關(guān)閉和開始同步
5)、我就我的理解畫出了,主從、主從從、主主、復(fù)制的圖。
往期推薦:
利用Docker僅花1分鐘時間安裝好MySQL服務(wù)
Linux下MySQL 5.7的離線與在線安裝(圖文)
Linux下安裝MySQL8.0(收藏!)
1.在主數(shù)據(jù)庫服務(wù)器為從服務(wù)器添加一個擁有權(quán)限訪問主庫的用戶:
GRANT REPLICATION SLAVE ON *.* TO ' test'@'%' IDENTIFIED BY 'test';
(%表示允許所有IP,可設(shè)置指定從服務(wù)器IP)
添加用戶后:
可在從服務(wù)器上用mysql -h127.0.0.1 -utest -ptest; 來測試是否有權(quán)限訪問主數(shù)據(jù)庫
2.在主據(jù)庫配置文件加上:
#master config
server-id = 1
log-bin = mysql-bin
3.在從服務(wù)器數(shù)據(jù)庫配置文件:
server-id = 2
master-host = 10.0.0.199
master-user = test
master-password = test
replicate-do-db = test
master-port = 3306
log-bin = mysql-bin
如果你的一切配置順利
你在從服務(wù)器上輸入命令:show slave status\G
成功情況:
Slave_IO_Running:yes
Slave_SQL_Running:yes
在主服務(wù)器上輸入show master status
主從同步原理圖
mysql復(fù)制的模式
具體配置
master_log_file是第四步中File的值
master_log_pos是第四步中Postion的值
Slave_IO_Running等于yes代表已經(jīng)連接到主庫
Slave_SQL_Running等于yes 可執(zhí)行主庫binlog
這四個記錄了 IO或者SQL連接或者執(zhí)行出現(xiàn)的錯誤