mysql_主從復制的實現(xiàn)

<h2>背景:</h2>
在如今的互聯(lián)網(wǎng)時代详拙,高并發(fā)、大數(shù)據(jù)都已經(jīng)成為其中最熱的之一。mysql不可能像redis一樣單臺機器每秒最多能處理10W次讀寫褒傅,也達不到elasticsearch一樣存儲上億幾十億數(shù)據(jù)做過濾或者簡單的聚合能在50-100ms以內(nèi)成功響應(yīng)捧存。但是據(jù)我所知在中國一些互聯(lián)網(wǎng)排名前十的公司的產(chǎn)品粪躬、訂單這種關(guān)鍵數(shù)據(jù)還是存儲在mysql中,更不要說mysql在一些更小的公司的應(yīng)用昔穴,mysql重要性不言而喻短蜕。從這一講會開始我的mysql文章之路。
現(xiàn)在經(jīng)常有個詞能聽到"讀寫分離"傻咖,是的讀寫分離可以降低單點機器的并發(fā)訪問壓力朋魔。從而實現(xiàn)主機器專門用于寫入,另外的一個從節(jié)點或者多個從節(jié)點來實現(xiàn)讀卿操。
<h2>復制實現(xiàn)原理</h2>
下面貼出來其實現(xiàn)流程圖:

Paste_Image.png

分為同步復制和異步復制警检,實際復制架構(gòu)中大部分為異步復制。 復制的基本過程如下:

(1)害淤、Slave上面的IO進程連接上Master扇雕,并請求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容;

(2)窥摄、Master接收到來自Slave的IO進程的請求后镶奉,通過負責復制的IO進程根據(jù)請求信息讀取制定日志指定位置之后的日志信息,返回給Slave 的IO進程。返回信息中除了日志所包含的信息之外哨苛,還包括本次返回的信息已經(jīng)到Master端的bin-log文件的名稱以及bin-log的位置鸽凶;

(3)、Slave的IO進程接收到信息后建峭,將接收到的日志內(nèi)容依次添加到Slave端的relay-log文件的最末端玻侥,并將讀取到的Master端的 bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時候能夠清楚的告訴Master“我需要從某個bin-log的哪個位置開始往后的日志內(nèi)容亿蒸,請發(fā)給我”凑兰;

(4)、Slave的Sql進程檢測到relay-log中新增加了內(nèi)容后边锁,會馬上解析relay-log的內(nèi)容成為在Master端真實執(zhí)行時候的那些可執(zhí)行的內(nèi)容姑食,并在自身執(zhí)行。

其實稍微了解mysql底層一點的都知道茅坛,mysql的更新記錄都可以配置保存在binlog文件中音半,這個文件用處很大,有一個比較大的應(yīng)用就是有些公司開發(fā)監(jiān)聽binlog變化的插件灰蛙,再結(jié)合消息中間件來實現(xiàn)數(shù)據(jù)變更實時通知訂閱方祟剔。當然這次我們要講的還是slave機器怎么樣實現(xiàn)對于master機器的主從。
<h4>主從復制的配置</h4>
準備前提:
<ul>
<li>安裝兩個虛擬機 master:192.168.30.128 slave:192.168.30.131</li>
<li>分別在兩臺機器上面安裝mysql摩梧,具體的流程可以參照我之前寫的http://www.reibang.com/p/674f56b2fe56</li>
</ul>
當你上面兩步都做完了以后我想你已經(jīng)都把mysql 服務(wù)給起來了吧物延,接下來我們需要配置mysql的binlog信息。
<b>1仅父、找到my.cnf文件叛薯。按我之前介紹的文章安裝的話是在/etc/my.cnf下面,具體是在原來的文件里面新加三個參數(shù):</b>
<pre>
server-id=128 #設(shè)置服務(wù)器唯一的id笙纤,默認是1耗溜,我們設(shè)置ip最后一段,slave設(shè)置131
log-bin=mysql-bin # 啟用二進制日志
binlog-ignore-db = mysql,information_schema #忽略寫入binlog的庫省容,因為這些都不是我們關(guān)心的自己創(chuàng)建的業(yè)務(wù)庫
</pre>
具體的修改如下:

123.png

完成以后重啟service mysqld start master上面的mysql服務(wù)
<b>2抖拴、master機器binlog配置好了以后還需要給slave機器授權(quán)IO讀取它啊,登錄mysql -u root -proot以后執(zhí)行命令如下:</b>
<pre>
GRANT REPLICATION SLAVE ON . to 'sync'@'192.168.30.131' identified by 'root'; //新建一個sync用戶密碼為root給slave機器使用腥椒。后面salve機器配置會使用到
</pre>
具體的修改如下:

給slave機器復制binlog權(quán)限.png

同時也可以通過show master status 命令查看binlog信息:
<pre>
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000001 | 259 | | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
</pre>
看情況binlog文件名稱+position數(shù)據(jù)阿宅,因為這給后面在salve機器上配置連接master機器有用到。
<b>3笼蛛、配置slvae機器洒放,直接上命令吧:</b>
<pre>
change master to
master_host='192.168.30.128', //master的ip
master_user='sync', //master授予的用戶名稱
master_password='root', //密碼
master_log_file='mysql-bin.000001', //master的binlog名稱
master_log_pos=259;//位置
</pre>
別忘記了重啟slave機器,再用mysql> show slave status \G查看執(zhí)行結(jié)果:

Paste_Image.png

<b>4滨砍、測試最后的復制結(jié)果</b>
<pre>
1往湿、master機器:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| master_slave |
| mysql |
| storm_test |
| test |
| test12 |
+--------------------+
6 rows in set (0.00 sec)
2妖异、slave機器:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| master_slave |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
3、在master機器上新建test_copy數(shù)據(jù)庫
mysql> create database test_copy;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| master_slave |
| mysql |
| storm_test |
| test |
| test12 |
| test_copy | //新建數(shù)據(jù)庫
+--------------------+
7 rows in set (0.01 sec)
4领追、查看salve機器結(jié)果:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| master_slave |
| mysql |
| test |
| test_copy | //復制成功
+--------------------+
5 rows in set (0.00 sec)
</pre>
是的這樣的話主從復制已經(jīng)實現(xiàn)了他膳,簡單。下一節(jié)文章主要是講使用mysql-proxy代理來實現(xiàn)讀寫分離蔓腐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矩乐,一起剝皮案震驚了整個濱河市龄句,隨后出現(xiàn)的幾起案子回论,更是在濱河造成了極大的恐慌,老刑警劉巖分歇,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傀蓉,死亡現(xiàn)場離奇詭異,居然都是意外死亡职抡,警方通過查閱死者的電腦和手機葬燎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缚甩,“玉大人谱净,你說我怎么就攤上這事∩猛” “怎么了壕探?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郊丛。 經(jīng)常有香客問我李请,道長,這世上最難降的妖魔是什么厉熟? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任导盅,我火速辦了婚禮,結(jié)果婚禮上揍瑟,老公的妹妹穿的比我還像新娘白翻。我一直安慰自己,他們只是感情好绢片,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布滤馍。 她就那樣靜靜地躺著,像睡著了一般杉畜。 火紅的嫁衣襯著肌膚如雪纪蜒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天此叠,我揣著相機與錄音纯续,去河邊找鬼随珠。 笑死,一個胖子當著我的面吹牛猬错,可吹牛的內(nèi)容都是我干的窗看。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼倦炒,長吁一口氣:“原來是場噩夢啊……” “哼显沈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逢唤,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拉讯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鳖藕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魔慷,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年著恩,在試婚紗的時候發(fā)現(xiàn)自己被綠了院尔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡喉誊,死狀恐怖邀摆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伍茄,我是刑警寧澤栋盹,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站幻林,受9級特大地震影響贞盯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沪饺,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一躏敢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧整葡,春花似錦件余、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俱萍,卻和暖如春端壳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枪蘑。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工损谦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岖免,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓照捡,卻偏偏與公主長得像颅湘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子栗精,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

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

  • 一闯参、什么是Mysql主從復制 MySQL主從復制是其最重要的功能之一。主從復制是指一臺服務(wù)器充當主數(shù)據(jù)庫服務(wù)器悲立,另...
    人在碼途閱讀 2,758評論 0 23
  • 1鹿寨、復制概述: MySQL內(nèi)建的復制功能是構(gòu)建大型,高性能應(yīng)用程序的基礎(chǔ)级历。將mysql的數(shù)據(jù)分布到多個系統(tǒng)上去释移,這...
    魔法師_閱讀 5,611評論 0 5
  • 昨日叭披,闊別家鄉(xiāng)一年之久的老弟帶著他女朋友從成都風塵仆仆地回到家鄉(xiāng)寥殖。在接他們回來的路上,我們相談甚歡涩蜘,憶離別的思念...
    寧博Villa閱讀 610評論 2 5
  • 問題 第一個項目中UI設(shè)計師給的psd圖字體單位是像素(px)嚼贡,而且通常是整數(shù);做第二個項目時同诫,發(fā)現(xiàn)字體的單位是點...
    回調(diào)的幸福時光閱讀 5,671評論 0 0
  • 牙一痛粤策,我們就以為是上火,畢竟在外面吃多了熱氣東西的情況經(jīng)常有误窖。在一個饑餓的下著大雨的下班晚上叮盘,打包了一份燒鴨鴨腳...
    潔99閱讀 234評論 0 0