MySQL 優(yōu)化二

主從服務(wù)器

什么是主從服務(wù)器

主從服務(wù)器就是多臺(tái)服務(wù)器協(xié)同工作 , 有一臺(tái)是主服務(wù)器 , 其他為從服務(wù)器 , 就是我們的主從服務(wù)器

image.png

這個(gè)是我們生活中常見的主從服務(wù)器(一主多從)

  • 主從配置的架構(gòu) , 可以讓我們的訪問量提升
  • 主從配置的機(jī)構(gòu) , 可以實(shí)現(xiàn)讀寫分離 , 主服務(wù)器寫數(shù)據(jù) , 沖服務(wù)器讀數(shù)據(jù)
  • 主從配置的架構(gòu) , 必須實(shí)現(xiàn) server-id , 這個(gè) id 值是在這個(gè)架構(gòu)群里面每一臺(tái) , 都不重復(fù) 總結(jié) : * 主從服務(wù)器架構(gòu) , 可以有效的提升數(shù)據(jù)的安全性 , 數(shù)據(jù)實(shí)現(xiàn)了多臺(tái)服務(wù)器共享 , 每條服務(wù)器保證數(shù)據(jù)的完全一致

主從服務(wù)器的實(shí)現(xiàn)原理

image.png

說明 : 主服務(wù)器必須配置一個(gè) server-id 這個(gè)值是架構(gòu)群里面唯一的 , 然后在開啟一個(gè) bin 日志(二進(jìn)制日志) . 主服務(wù)器必須開啟一賬戶讓從服務(wù)器可以連接 , 這個(gè)賬戶必須有權(quán)限去讀取二進(jìn)制文件內(nèi)容 , 從服務(wù)器必須配置鏈接主服務(wù)器的信息 , 并且能夠成功的連接上主服務(wù)器 , 然后 IO 進(jìn)程讀取主服務(wù)器的二進(jìn)制日志文件 , 保存在自己的電腦上的中繼日志文件里面 , 然后 SQL 進(jìn)程讀取中繼日志文件 , 在一起執(zhí)行這個(gè) SQL 語句

主服務(wù)器 配置 : server-id 日志 : bin 日志 (記錄 SQL語句 , 修改數(shù)據(jù)結(jié)構(gòu) , 修改表信息等修改的語句) 配置賬戶 : 這個(gè)賬戶是從服務(wù)器鏈接的時(shí)候使用 (必須要有權(quán)限)

從服務(wù)器 配置 : server-id 配置 : 鏈接主服務(wù)器信息 中繼日志 : 是自行開啟的 , 可以不用配置

注意 : 從服務(wù)器能夠順利的連接主服務(wù)器 網(wǎng)絡(luò)要通 防火墻關(guān)閉或者對(duì)應(yīng)的端口要打開

MySQL服務(wù)器添加(授權(quán))賬號(hào)

grant  權(quán)限  on  庫名.表明  to  用戶名@IP地址  identified  by  用戶密碼

這句話意思 : 設(shè)置權(quán)限 , 并給創(chuàng)建這個(gè)用戶 , 同時(shí)設(shè)置密碼 權(quán)限 : all : 所有權(quán)限 ; select : 查詢權(quán)限 庫名 : * : 所有權(quán)限 ; test : 指定 test 庫 表名 : * ; 所有表 ; test : 指定 test 表

用戶名 : 隨便寫必須加引號(hào) IP 地址 : % : 表示所有 IP 地址 , 必須加引號(hào) windows 上面包含 127.0.0.1 , Linux 上面不包含127.0.0.

  • 創(chuàng)建一個(gè)用戶 : 并給權(quán)限 , 并給密碼
grant all on *.* to 'xiaoming'@'%' identified by '123456';
image.png

查看創(chuàng)建好的用戶

select host, user from mysql.user;
image.png
  • 使用新創(chuàng)建的賬戶登錄一下
image.png

登錄不成功 ! 因?yàn)槭褂玫氖?127.0.0.1 的 IP 再次登錄

image.png

驗(yàn)證登錄成功 , 權(quán)限也是相對(duì)應(yīng)的 刪除用戶

drop user 'xiaoming'@'%';
image.png

再次創(chuàng)建一個(gè)用戶

image.png

bin-log 日志的講解

配置 server-id

  • 打開配置文件
image.png

說明 : 配置文件所在位置可能有有所不同 , 請(qǐng)根據(jù)自己情況來

image.png

保存退出 :

  • 停止 mysql 服務(wù)器
image.png
  • 開啟 mysql 服務(wù)器
image.png
  • 查看 bin 日志所在路徑 :
  • bin 日志就是保存在我們數(shù)據(jù)目錄里面的
  • log-bin.000001 這個(gè)就是二進(jìn)制日志文件
  • log-bin.index 這個(gè)就是人禁止日志索引文件
  • log-bin : 這個(gè)就是我們?cè)?my.cnf 里面配置的名字 使用工具查看 log-bin 里面的信息
image.png

使用它查看

image.png
  • 在mysql 客戶端查看 bin 日志內(nèi)容
image.png
  • 工具 , 與 mysql 命令對(duì)比 mysql 查看更方便 , 查看更清晰
  • 對(duì) mysql 查看命令 , 進(jìn)一步說明
image.png

查看指定的日志文件名

和 bin-log 日志相關(guān)的一些函數(shù)

刷新日志文件 , 生成一個(gè)新的日志文件

flush logs;
image.png

查看日志文件 :

image.png

這個(gè)時(shí)候 , 日志文件就有兩份了 , 0000001 這個(gè)文件就可以保存?zhèn)浞?, 方便以后需要的時(shí)候使用

重啟服務(wù)器 , 也會(huì)生成新的 日志文件

image.png

查看日志文件

image.png

確定不需要的日志文件 , 刪除 , 重新生成一個(gè)新的

image.png

查看日志文件 :

查看正在使用的是按一個(gè)日志文件 :

image.png

可以使用 log-bin 日志完成數(shù)據(jù)恢復(fù)

log-bin 里面保存的二進(jìn)制內(nèi)容 , 就是 SQL語句 . 我們的數(shù)據(jù)遺失了 , 就可以通過再一次執(zhí)行這些 SQL 語句 , 完成數(shù)據(jù)的恢復(fù)

創(chuàng)建一個(gè)表

image.png

插入數(shù)據(jù) :

image.png

查看數(shù)據(jù) :

image.png

查看 bin 日志 查看記錄

image.png

bin 日志里面完美記錄了我們的操作信息

實(shí)現(xiàn)一個(gè)操作

image.png
  • 刪除表
  • 查看 bin 日志
image.png
  • 找到恢復(fù)工具
image.png

Mysqlbinlog 就是恢復(fù)工具

  • 查看幫助信息 :
image.png

確認(rèn)使用參數(shù) :

    • start-position : 開始位置
    • stop-position : 結(jié)束位置
    • no-defaults : 不能使用默認(rèn)配置 使用操作 :
image.png

開始恢復(fù)數(shù)據(jù)

  • 確認(rèn)數(shù)據(jù)庫信息
image.png
  • 開始恢復(fù)
/usr/local/mysql/bin/mysqlbinlog --no-defaults --start-position=107 --stop-position=1148 /usr/local/mysql/data/log-bin.000001 | /usr/local/mysql/bin/mysql -u root -p

mysqlbinlog 只能讀出數(shù)據(jù) , 需要把讀出來的數(shù)據(jù)通過管道給 mysql 工具來進(jìn)行恢復(fù) 指定的用戶必須要有權(quán)限 , 才可以實(shí)現(xiàn)恢復(fù) !!!

image.png

查看數(shù)據(jù)庫

image.png

查看數(shù)據(jù)

image.png

操作成功

主從復(fù)制的配置

配置主服務(wù)器

授權(quán)權(quán)限 : replication slave 這個(gè)是給從服務(wù)器鏈接主服務(wù)器使用的權(quán)限 , 這個(gè)只能是從服務(wù)器連接主服務(wù)器的時(shí)候使用

在主服務(wù)器上面完成用戶創(chuàng)建操作 , 并且給權(quán)限是 : replication slave

image.png

這個(gè)賬戶才有從拂去連接主服務(wù)器的權(quán)限 說明 : 這里我們使用的 IP 地址是 % (所有的) , 但在公司要寫具體的 IP 地址 (公司的 IP地址不變)

確定主服務(wù)器

server-id 與 bin 是否設(shè)置成功

image.png

確定設(shè)置成功

確定防火墻

是可以讓從服務(wù)器連接的

image.png

目前是啟動(dòng)狀態(tài) , 關(guān)閉

image.png

配置從服務(wù)器

確定使用 windows 做從服務(wù)器
image.png
找到配置文件
image.png
打開配置文件
image.png

修改內(nèi)容如上 , 確認(rèn)保存關(guān)閉 , 這里是新加 沒有刪除任何內(nèi)容

重啟 mysql 服務(wù)器
image.png

登錄 windows 的 mysql 客戶端

image.png

確定數(shù)據(jù)庫中的信息

image.png
就可以去配置我們從服務(wù)器連接主服務(wù)器 : 配置信息
  • change master to master_host=’主機(jī)IP’,
  • master_user=’主機(jī)配置給從機(jī)的賬戶’,
  • master_password=’主機(jī)配置給從機(jī)的賬戶密碼’,
  • master_port=’主機(jī)的端口號(hào)’,
  • master_log_file=’主機(jī)bin日志文件,正在使用的文件名’,
  • master_log_pos=’主機(jī)bin日志文件的內(nèi)容,從那個(gè)節(jié)點(diǎn)開始復(fù)制’
  • master_log_file :這個(gè)配置的文件办斑,必需是主服務(wù)器正在使用养葵。 確定主服務(wù)器正在使用 : 在主服務(wù)器上面操作 :
image.png

master_log_pos :就是配置主服務(wù)器上面bin日志文件的最后的位置庭惜。 配置了值個(gè)位置 , 從服務(wù)器就會(huì)從主服務(wù)器上面的這個(gè)位置開始讀取內(nèi)容 , 所以我們?cè)谂渲弥鲝牡臅r(shí)候 , 一定要從服務(wù)器的數(shù)據(jù)已經(jīng)和主服務(wù)器保存同步 沒有同步數(shù)據(jù) , 去配置主從很危險(xiǎn) , 因?yàn)閺姆?wù)器是執(zhí)行主服務(wù)器拿過來的 SQL 語句 , 這個(gè) SQL語句如果是插入數(shù)據(jù) , 然后 從服務(wù)器沒有沒用同步數(shù)據(jù) , 就沒有這個(gè)表 就不會(huì)插入成功 所以 , 在同步之前 , 一定要做 數(shù)據(jù)同步 , 這個(gè)而是人工操作

開始配置 :

從服務(wù)器上面操作 :

image.png

查看從機(jī)狀態(tài)

image.png

啟動(dòng)主從配置

image.png

查看啟動(dòng)后的狀態(tài)

image.png

查看中繼日志文件

image.png

這個(gè)生成的原理和主機(jī)是一樣的 , 從其服務(wù)器 , 這個(gè)文件也再次生成

操作主服務(wù)器 : 插入數(shù)據(jù)

image.png

查看從服務(wù)器

image.png

功能實(shí)現(xiàn)

通知從服務(wù)

image.png

查看狀態(tài)

image.png

在主服務(wù)器上更新數(shù)據(jù)

image.png

查看從服務(wù)器上面的數(shù)據(jù)

image.png

停止主從之后 , 就不會(huì)在獲得主服務(wù)器的 bin 日志文件內(nèi)容

在主服務(wù)器上面插入數(shù)據(jù)

image.png

在開啟從服務(wù)配置:

image.png

查看狀態(tài)

image.png

查看數(shù)據(jù)

image.png

說明 : 第一次的更新 , 從服務(wù)器也執(zhí)行了 , 因?yàn)楸砝锩鏇]有這個(gè)數(shù)據(jù) ,所以就執(zhí)行失敗了 , 這里再一次說明了 , 表的同步一致性是多么重要 第二條插入 , 就完美執(zhí)行了

從服務(wù)器管理

查看狀態(tài)

show slave status\G

開始從服務(wù)器

start save

停止從服務(wù)器

stop slave

清空從服務(wù)器

reset slave all
image.png
重點(diǎn)說明 :

清空之前 , 清先停止服務(wù)器

讀寫分離設(shè)置

$db1 = ‘主服務(wù)器’; $db2 = ‘從服務(wù)器’; $db3 = ‘從服務(wù)器’;

實(shí)現(xiàn)讀寫分離的特別的簡單的膳灶,就是你要連接上所以的服務(wù)器攻柠。 寫數(shù)據(jù)的時(shí)候踊谋,就要指定我們的$db1蝉仇。指定到主服務(wù)器。

查詢數(shù)據(jù)的時(shí)候殖蚕,指定到從服務(wù)器就可以了轿衔。

$db1 = mysqli_connect(‘123.123.123.123’, ‘baqi’, ‘fsaf@*&kjfdk123’, ‘liu’);

$db2 = mysqli_connect(‘123.123.123.124’, ‘baqi’, ‘fsaf@*&kjfdk123’, ‘liu’);

$db3 = mysqli_connect(‘123.123.123.125’, ‘baqi’, ‘fsaf@*&kjfdk123’, ‘liu’);

$sql = “insert into table_name values (值1,值2)”; mysqli_query($db1, $sql);

從服務(wù)器有多臺(tái)的時(shí)候睦疫,就應(yīng)該實(shí)現(xiàn)一個(gè)算法害驹,然后只返回一個(gè)鏈接就可以了。 $sql = “select * from table_name where id in (1,2)”; mysqli_query($db2, $sql);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛤育,一起剝皮案震驚了整個(gè)濱河市宛官,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓦糕,老刑警劉巖底洗,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咕娄,居然都是意外死亡亥揖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門谭胚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徐块,“玉大人,你說我怎么就攤上這事灾而『兀” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵旁趟,是天一觀的道長昼激。 經(jīng)常有香客問我,道長锡搜,這世上最難降的妖魔是什么橙困? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮耕餐,結(jié)果婚禮上凡傅,老公的妹妹穿的比我還像新娘。我一直安慰自己肠缔,他們只是感情好夏跷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布哼转。 她就那樣靜靜地躺著,像睡著了一般槽华。 火紅的嫁衣襯著肌膚如雪壹蔓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天猫态,我揣著相機(jī)與錄音佣蓉,去河邊找鬼。 笑死亲雪,一個(gè)胖子當(dāng)著我的面吹牛勇凭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播义辕,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼套像,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了终息?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤贞让,失蹤者是張志新(化名)和其女友劉穎周崭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喳张,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡续镇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了销部。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摸航。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖舅桩,靈堂內(nèi)的尸體忽然破棺而出酱虎,到底是詐尸還是另有隱情,我是刑警寧澤擂涛,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布读串,位于F島的核電站,受9級(jí)特大地震影響撒妈,放射性物質(zhì)發(fā)生泄漏恢暖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一狰右、第九天 我趴在偏房一處隱蔽的房頂上張望杰捂。 院中可真熱鬧,春花似錦棋蚌、人聲如沸嫁佳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脱拼。三九已至瞒瘸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間熄浓,已是汗流浹背情臭。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赌蔑,地道東北人俯在。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像娃惯,于是被迫代替她去往敵國和親跷乐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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