麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL主從原理及配置詳解

2024-07-25 19:08:12
字體:
來源:轉載
供稿:網友

MySQL主從配置及原理,供大家參考,具體內容如下

一、環境選擇:

1.Centos 6.5

2.MySQL 5.7

二、什么是MySQL主從復制

MySQL主從復制是其最重要的功能之一。主從復制是指一臺服務器充當主數據庫服務器,另一臺或多臺服務器充當從數據庫服務器,主服務器中的數據自動復制到從服務器之中。對于多級復制,數據庫服務器即可充當主機,也可充當從機。MySQL主從復制的基礎是主服務器對數據庫修改記錄二進制日志,從服務器通過主服務器的二進制日志自動執行更新。

三、MySQL主從復制的類型

1.基于語句的復制

主服務器上面執行的語句在從服務器上面再執行一遍,在MySQL-3.23版本以后支持。

缺點:時間上可能不完全同步造成偏差,執行語句的用戶也可能是不同一個用戶。

2.基于行的復制

把主服務器上面改編后的內容直接復制過去,而不關心到底改變該內容是由哪條語句引發的,在MySQL-5.0版本以后引入。

缺點:比如一個工資表中有一萬個用戶,我們把每個用戶的工資+1000,那么基于行的復制則要復制一萬行的內容,由此造成的開銷比較大,而基于語句的復制僅僅一條語句就可以了。

3.混合類型的復制

MySQL默認使用基于語句的復制,當基于語句的復制會引發問題的時候就會使用基于行的復制,MySQL會自動進行選擇。

在MySQL主從復制架構中,讀操作可以在所有的服務器上面進行,而寫操作只能在主服務器上面進行。主從復制架構雖然給讀操作提供了擴展,可如果寫操作也比較多的話(多臺從服務器還要從主服務器上面同步數據),單主模型的復制中主服務器勢必會成為性能瓶頸。

四、原理

1.主從(master-slave)

主服務器上面的任何修改都會保存在二進制日志Binary log里面,從服務器上面啟動一個I/O thread(實際上就是一個主服務器的客戶端進程),連接到主服務器上面請求讀取二進制日志,然后把讀取到的二進制日志寫到本地的一個Realy log里面。從服務器上面開啟一個SQL thread定時檢查Realy log,如果發現有更改立即把更改的內容在本機上面執行一遍。

mysql主從,mysql主從原理,mysql主從配置

2.主從從(master-slave-slave)

一主多從的話,這時主庫既要負責寫又要負責為幾個從庫提供二進制日志。此時可以稍做調整,將二進制日志只給某一從,這一從再開啟二進制日志并將自己的二進制日志再發給其它從。或者是干脆這個從不記錄只負責將二進制日志轉發給其它從,這樣架構起來性能可能要好得多,而且數據之間的延時應該也稍微要好一些。

mysql主從,mysql主從原理,mysql主從配置

【注意】

1.在老版本的MySQL中,主從復制的slave段并不是由兩個進程完成的,而是由一個進程完成的,之后就出現了很多風險和性能的相關問題。具體有以下問題:

  1.一個進程會使復制bin-log日志和解析日志并在自身執行的過程成為一個串行的過程,性能受到了一定的限制,異步復制的延遲也會比較長。

2. Slave端從Master端獲取bin-log過來之后,需要接著解析日志內容,然后在自身執行。在這個過程中,Master端可能又產生了大量變化并新增了大量的日志。如果在這個階段Master端的存儲出現了無法修復的錯誤,那么在這個階段所產生的所有變更都將永遠無法找回。如果在Slave端的壓力比較大的時候,這個過程的時間可能會比較長。

五、MySQL主從復制的過程

1.兩種情況:同步復制和異步復制,生產環境中大多數采用異步復制。

2. 復制的基本過程:

  1.slave上面的I/O進程連接上master,并請求從指定文件的指定位置(或者從最開始的日志)之后的日志內容。

  2.Master接收到來自Slave的IO進程的請求后,負責復制的IO進程會根據請求信息讀取日志指定位置之后的日志信息,返回給Slave的IO進程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經到Master端的bin-log文件的名稱以及bin-log的位置。

3.Slave的IO進程接收到信息后,將接收到的日志內容依次添加到Slave端的relay-log文件的最末端,并將讀取到的Master端的 bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時候能夠清楚的告訴Master“我需要從某個bin-log的哪個位置開始往后的日志內容,請發給我”。

4.Slave的Sql進程檢測到relay-log中新增加了內容后,會馬上解析relay-log的內容成為在Master端真實執行時候的那些可執行的內容,并在自身執行。

六、配置:

1.首先明確兩種情況:

  1.兩臺相互獨立的服務器或虛擬機。

  2.兩臺通過模板創建的虛擬機。

2.下面對兩臺服務器進行命名,分別為:MySQL主服務器,MySQL從服務器。

3.主從服務器分別進行如下操作:

  1.MySQL版本一致

  2.初始化表

4.修改MySQL主服務器和MySQL從服務器:

vim /etc/my.cnf [mysqld] log-bin=取任意名稱 //啟用二進制日志server-id=任意取數字 //服務器唯一ID,默認值是1,一般設置為IP地址的最后一段數字

5.若是第一種情況,直接重啟兩臺服務器;若是第二種情況,還需將兩臺服務器的auto.cnf文件重命名為auto.cnf.bak,然后重啟MySQL服務。

6.在MySQL主服務器上建立賬戶并授權slave

grant replication slave on *.* to '用戶名'@'%' identified by '任意密碼';

7.查詢MySQL主服務器的狀態

show master status;

8.配置MySQL從服務器

change master to master_host='MySQL主服務器IP地址', master_user='之前在MySQL主服務器上面創建的用戶名', master_password='之前創建的密碼', master_log_file='MySQL主服務器狀態中的二進制文件名', master_log_pos='MySQL主服務器狀態中的position值';

9.啟用slave

start slave;

10.查看MySQL從服務器的狀態

show slave status/G

查看

Slave_IO_Running: Yes //此狀態必須YES

Slave_SQL_Running: Yes //此狀態必須YES

全變YES說明主從配置成功,當MySQL主服務器有更新變化時,從服務器會根據具體配置做相應的同步。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本在线播放一区二区 | 成人 精品 | 免费看欧美一级特黄a大片 久久免费视频一区二区三区 | 深夜影院a | 久久久入口 | 亚洲国产精品久久久久 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 羞羞的视频在线免费观看 | 欧美一区二区片 | 污视频在线免费播放 | 久久久婷婷一区二区三区不卡 | 久久久婷婷 | 在线a视频| 亚洲男人的天堂在线视频 | 欧洲成人一区二区 | 免费在线观看毛片视频 | 欧美激情精品久久久久 | 神秘电影91| 日韩 欧美 中文 | 爽爽淫人网| 黄污网址 | 国产精品午夜在线观看 | h视频免费观看 | 欧美日韩在线视频一区 | 91精品国产一区二区三区动漫 | 特级黄aaaaaaaaa毛片 | 成年人黄视频 | 国产精品视频导航 | 香蕉视频99 | 亚洲国产网址 | 欧美日韩在线看片 | 免费a级黄色片 | 97青青 | 日本黄色免费播放 | av影片在线观看 | 久久亚洲成人 | 97zyz成人免费视频 | av不卡免费在线 | 一级做a爱片久久毛片a高清 | 天天撸日日夜夜 | 亚洲成人在线免费 |