mysql_主從復制

1. 主從復制概述

1.1 如何提升數(shù)據(jù)庫并發(fā)能力
image.png

此外嫌术,一般應用對數(shù)據(jù)庫而言都是“ 讀多寫少 ”,也就說對數(shù)據(jù)庫讀取數(shù)據(jù)的壓力比較大,有一個思路就
是采用數(shù)據(jù)庫集群的方案束昵,做 主從架構 、進行 讀寫分離 葛峻,這樣同樣可以提升數(shù)據(jù)庫的并發(fā)處理能力锹雏。但
并不是所有的應用都需要對數(shù)據(jù)庫進行主從架構的設置,畢竟設置架構本身是有成本的术奖。
如果我們的目的在于提升數(shù)據(jù)庫高并發(fā)訪問的效率礁遵,那么首先考慮的是如何 優(yōu)化SQL和索引 ,這種方式
簡單有效采记;其次才是采用 緩存的策略 佣耐,比如使用 Redis將熱點數(shù)據(jù)保存在內(nèi)存數(shù)據(jù)庫中,提升讀取的效
率唧龄;最后才是對數(shù)據(jù)庫采用 主從架構 兼砖,進行讀寫分離。

1.2 主從復制的作用

主從同步設計不僅可以提高數(shù)據(jù)庫的吞吐量既棺,還有以下 3 個方面的作用讽挟。

  • 第1個作用:讀寫分離。


    image.png
  • 第2個作用就是數(shù)據(jù)備份丸冕。

  • 第3個作用是具有高可用性耽梅。

2. 主從復制的原理

Slave 會從 Master 讀取 binlog 來進行數(shù)據(jù)同步。

2.1 原理剖析
  • 三個線程
    實際上主從同步的原理就是基于 binlog 進行數(shù)據(jù)同步的胖烛。在主從復制過程中眼姐,會基于 3 個線程 來操
    作诅迷,一個主庫線程,兩個從庫線程众旗。
image.png

二進制日志轉儲線程 (Binlog dump thread)是一個主庫線程竟贯。當從庫線程連接的時候, 主庫可以將二進
制日志發(fā)送給從庫逝钥,當主庫讀取事件(Event)的時候屑那,會在 Binlog 上 加鎖 ,讀取完成之后艘款,再將鎖釋
放掉持际。

從庫 I/O 線程 會連接到主庫,向主庫發(fā)送請求更新 Binlog哗咆。這時從庫的 I/O 線程就可以讀取到主庫的
二進制日志轉儲線程發(fā)送的 Binlog 更新部分蜘欲,并且拷貝到本地的中繼日志 (Relay log)。

從庫 SQL 線程 會讀取從庫中的中繼日志晌柬,并且執(zhí)行日志中的事件姥份,將從庫中的數(shù)據(jù)與主庫保持同步。

image.png

復制三步驟:
步驟1: Master 將寫操作記錄到二進制日志( binlog )年碘。
步驟2: Slave 將 Master 的binary log events拷貝到它的中繼日志( relay log )澈歉;
步驟3: Slave 重做中繼日志中的事件,將改變應用到自己的數(shù)據(jù)庫中屿衅。 MySQL復制是異步的且串行化
的埃难,而且重啟后從 接入點 開始復制。

復制的問題
復制的最大問題: 延時

復制的基本原則
  • 每個 Slave 只有一個 Master
  • 每個 Slave 只能有一個唯一的服務器ID
  • 每個 Master 可以有多個 Slave

3. 一主一從架構搭建

一臺 主機 用于處理所有 寫請求 涤久,一臺 從機 負責所有 讀請求 涡尘,架構圖如下:


image.png
3.1 準備工作

1、準備 2臺 CentOS 虛擬機
2响迂、每臺虛擬機上需要安裝好MySQL (可以是MySQL8.0 )

3.2 主機配置文件

建議mysql版本一致且后臺以服務運行考抄,主從所有配置項都配置在 [mysqld] 節(jié)點下,且都是小寫字母蔗彤。
mysql配置文件地址:/etc/my.cnf川梅,都是在[mysqld]模塊下
具體參數(shù)配置如下:

#【必選】主服務器唯一ID
server-id=1

#【必選】啟用二進制日志,指明路徑幕与。比如:自己本地的路徑/log/mysqlbin
log-bin=atguigu-bin

#【可選】0(默認)表示讀寫(主機)挑势,1表示只讀(從機)
read-only=0

#【可選】設置日志文件保留的時長,單位是秒
binlog_expire_logs_seconds=6000

#【可選】控制單個二進制日志大小啦鸣。此參數(shù)的最大和默認值是1GB
max_binlog_size=200M

#【可選】設置不要復制的數(shù)據(jù)庫
#binlog-ignore-db=test

#【可選】設置需要復制的數(shù)據(jù)庫潮饱,默認全部記錄。比如binlog-do-db=atguigu_master_slave
#binlog-do-db=atguigu_master_slave

#【可選】設置binlog格式
binlog_format=STATEMENT

3.3 從機配置文件

要求主從所有配置項都配置在 my.cnf 的 [mysqld] 欄位下诫给,且都是小寫字母香拉。

#【必選】從服務器唯一ID
server-id=2

#【可選】啟用中繼日志
relay-log=mysql-delay

重啟后臺mysql服務啦扬,使配置生效。

3.4 主機:建立賬戶并授權

在主機MySQL里執(zhí)行授權主從復制的命令

CREATE USER 'slave1'@'%' IDENTIFIED BY 'weizehong1987';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
#此語句必須執(zhí)行凫碌。否則見下面扑毡。
ALTER USER 'slave1'@'%' IDENTIFIED WITH mysql_native_password By 'weizehong1987';
flush privileges;

查詢Master的狀態(tài),并記錄下File和Position的值盛险。

image.png

注意:執(zhí)行完此步驟后不要再操作主服務器MySQL瞄摊,防止主服務器狀態(tài)值變化。

3.5 從機:配置需要復制的主機

步驟1:從機上復制主機的命令
CHANGE MASTER TO
MASTER_HOST='主機的IP地址',
MASTER_USER='主機用戶名',
MASTER_PASSWORD='主機用戶名的密碼',
MASTER_LOG_FILE='mysql-bin.具體數(shù)字',
MASTER_LOG_POS=具體值;
舉例:

CHANGE MASTER TO MASTER_HOST='192.168.140.130',MASTER_USER='slave1',MASTER_PASSWORD='weizehong1987',MASTER_LOG_FILE='atguigu-bin.000003',MASTER_LOG_POS=1135;
image.png

步驟2:

#啟動slave同步
START SLAVE;

接著苦掘,查看同步狀態(tài):

SHOW SLAVE STATUS\G;
image.png
3.6 測試

主機新建庫换帜、新建表、insert記錄鹤啡,從機復制:

CREATE DATABASE atguigu_master_slave;
CREATE TABLE mytbl(id INT,NAME VARCHAR(16));
INSERT INTO mytbl VALUES(1, 'zhang3');
INSERT INTO mytbl VALUES(2,@@hostname);
3.7 停止主從同步
  • 停止主從同步命令:
stop slave;
  • 如何重新配置主從
    如果停止從服務器復制功能惯驼,再使用需要重新配置主從。否則會報錯如下:


    image.png

重新配置主從递瑰,需要在從機上執(zhí)行:

stop slave;
reset master; #刪除Master中所有的binglog文件祟牲,并將日志索引文件清空,重新開始所有新的日志文件(慎用)
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抖部,一起剝皮案震驚了整個濱河市说贝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌您朽,老刑警劉巖狂丝,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件换淆,死亡現(xiàn)場離奇詭異哗总,居然都是意外死亡,警方通過查閱死者的電腦和手機倍试,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門讯屈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人县习,你說我怎么就攤上這事涮母。” “怎么了躁愿?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵叛本,是天一觀的道長。 經(jīng)常有香客問我彤钟,道長来候,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任逸雹,我火速辦了婚禮营搅,結果婚禮上云挟,老公的妹妹穿的比我還像新娘。我一直安慰自己转质,他們只是感情好园欣,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著休蟹,像睡著了一般沸枯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赂弓,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天辉饱,我揣著相機與錄音,去河邊找鬼拣展。 笑死彭沼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的备埃。 我是一名探鬼主播姓惑,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼按脚!你這毒婦竟也來了于毙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辅搬,失蹤者是張志新(化名)和其女友劉穎唯沮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堪遂,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡介蛉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了溶褪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片币旧。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猿妈,靈堂內(nèi)的尸體忽然破棺而出吹菱,到底是詐尸還是另有隱情,我是刑警寧澤彭则,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布鳍刷,位于F島的核電站,受9級特大地震影響俯抖,放射性物質發(fā)生泄漏输瓜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望前痘。 院中可真熱鬧凛捏,春花似錦、人聲如沸芹缔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽最欠。三九已至示罗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芝硬,已是汗流浹背蚜点。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拌阴,地道東北人绍绘。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像迟赃,于是被迫代替她去往敵國和親陪拘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

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