主頁 > 知識(shí)庫 > Mysql中復(fù)制詳細(xì)解析

Mysql中復(fù)制詳細(xì)解析

熱門標(biāo)簽:電銷機(jī)器人價(jià)格多少錢一臺(tái) 怎么申請400電話申請 400電話申請什么好 百度地圖標(biāo)注地方備注 龍圖酒吧地圖標(biāo)注 地圖標(biāo)注圖標(biāo)素材入駐 好搜地圖標(biāo)注 怎么辦理400電話呢 電話機(jī)器人免費(fèi)嗎

1.mysql復(fù)制概念

  指將主數(shù)據(jù)庫的DDL和DML操作通過二進(jìn)制日志傳到復(fù)制服務(wù)器上,然后在復(fù)制服務(wù)器上將這些日志文件重新執(zhí)行,從而使復(fù)制服務(wù)器和主服務(wù)器的數(shù)據(jù)保持同步。復(fù)制過程中一個(gè)服務(wù)器充當(dāng)主服務(wù)器(master),而一個(gè)或多個(gè)其它服務(wù)器充當(dāng)從服務(wù)器(slaves)。主服務(wù)器將更新重新寫入二進(jìn)制日志文件,并維護(hù)文件的一個(gè)索引以跟蹤日志循環(huán)。這些日志可以記錄發(fā)送到從服務(wù)器的更新。當(dāng)一個(gè)從服務(wù)器連接主服務(wù)器時(shí),它通知主服務(wù)器、從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接受從那時(shí)起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知新的更新。

2.復(fù)制的用途

  通過主從復(fù)制(master-slave)的方式來同步數(shù)據(jù),再通過讀寫分離(mysql-proxy)來提升數(shù)據(jù)庫的并發(fā)負(fù)載能力,或者用來作為主備機(jī)的設(shè)計(jì),保證在主機(jī)停止響應(yīng)之后在很短的時(shí)間內(nèi)就可以將應(yīng)用切換到備機(jī)上繼續(xù)運(yùn)行。

優(yōu)勢:

(1)數(shù)據(jù)庫集群系統(tǒng)具有多個(gè)數(shù)據(jù)庫節(jié)點(diǎn),在單個(gè)節(jié)點(diǎn)出現(xiàn)故障的情況下,其他正常節(jié)點(diǎn)可以繼續(xù)提供服務(wù)。
(2)如果主服務(wù)器上出現(xiàn)了問題可以切換到從服務(wù)器上
(3)通過復(fù)制可以在從服務(wù)器上執(zhí)行查詢操作,降低了主服務(wù)器的訪問壓力,實(shí)現(xiàn)數(shù)據(jù)分布和負(fù)載均衡
(4)可以在從服務(wù)器上進(jìn)行備份,以避免備份期間影響主服務(wù)器的服務(wù)。

3.復(fù)制的實(shí)現(xiàn)(3種方法)

(1)DRBD是一種用軟件實(shí)現(xiàn)的、無共享的、服務(wù)器之間鏡像塊設(shè)備內(nèi)容的存儲(chǔ)復(fù)制解決方案。
(2)Mysql cluster(又稱mysql簇)。Mysql replicaion(復(fù)制)本身是一個(gè)比較簡單的結(jié)構(gòu),即一臺(tái)從服務(wù)器(slave)從一臺(tái)主服務(wù)器(master)讀取二進(jìn)制日志然后再解析并應(yīng)用到自身。
(3)一個(gè)簡單復(fù)制環(huán)境只需要兩臺(tái)運(yùn)行mysql的主機(jī)即可,甚至可以在一臺(tái)物理服務(wù)器主機(jī)上啟動(dòng)兩個(gè)mysqld實(shí)例。一個(gè)作為master而另一個(gè)作為slave來完成復(fù)制環(huán)境的搭配。但是在實(shí)際應(yīng)用環(huán)境中,可以根據(jù)實(shí)際的業(yè)務(wù)需求利用mysql復(fù)制的功能自己搭建出其他多種更利于擴(kuò)展的復(fù)制架構(gòu),如最常用的主從架構(gòu)。
  主從架構(gòu)指的是使用一臺(tái)mysql服務(wù)器作為master,一臺(tái)或多臺(tái)mysql服務(wù)器作為slave,將master的數(shù)據(jù)復(fù)制到slave上。在實(shí)際應(yīng)用場合,主從架構(gòu)模式是mysql復(fù)制最常用的。一般在這種架構(gòu)下,系統(tǒng)的寫操作都是在master中進(jìn)行,而讀操作則分散到各個(gè)slave中進(jìn)行,因此這種架構(gòu)特別適合現(xiàn)在互聯(lián)網(wǎng)高讀寫的問題。

Mysql數(shù)據(jù)庫復(fù)制操作大概分為以下幾個(gè)步驟:

(1)master啟用二進(jìn)制日志。啟用二進(jìn)制日志的操作在日志管理中有詳細(xì)的介紹。
(2)slave上面的I/O進(jìn)程連接上master,并請求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容。
(3)master接受到來自slave的I/O進(jìn)程請求后,通過負(fù)責(zé)復(fù)制的I/O進(jìn)程根據(jù)請求信息讀取指定日志指定位置之后的日志信息,返回給slave的I/O。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經(jīng)到master端的bin-log文件的名稱以及bin-log的位置。
(4)Slave的I/O進(jìn)程接收到信息后,將接收到的日志內(nèi)容依次添加到slave端的relay-log文件的最末端,并將讀取到的master端的bin-log的文件名和位置記錄到master-info文件中。
(5)Slave的sql進(jìn)程檢測到relay-log中新增的內(nèi)容后,會(huì)馬上解析relay-log的內(nèi)容,并在自身執(zhí)行。

4.mysql復(fù)制的集中模式

  mysql5.1之后的版本中,在復(fù)制方面的改進(jìn)就是引進(jìn)了新的復(fù)制技術(shù)——基于行的復(fù)制。這種技術(shù)就是關(guān)注表中發(fā)生變化的記錄,而非以前的照抄binlog模式。從mysql5.1.12開始,可以用以下3種模式來實(shí)現(xiàn)。

(1)基于sql語句的復(fù)制(statement-base replication,sbr)
(2)基于行的復(fù)制(rbr)
(3)混合模式復(fù)制(mbr)

相應(yīng)的,binlog的格式也有3種:statement、row、mixed。Mbr模式中,sbr模式是默認(rèn)的。在運(yùn)行時(shí)可以動(dòng)態(tài)地改變binlog的格式。設(shè)定主從復(fù)制模式的方法非常簡單,只要在以前設(shè)定復(fù)制配置的基礎(chǔ)上,再添加一個(gè)參數(shù),如下:

binlog_format=”statement”
#binlog_format=”row”
#binlog_format=”mixed”

當(dāng)然了,也可以在運(yùn)行時(shí)動(dòng)態(tài)修改binlog的格式

Mysql> set session binlog_format=”statement”

5.控制主服務(wù)器操作

Master:192.168.11.139
Slave:192.168.11.130

(1)主服務(wù)器:

mysql> show variables like '%datadir%';
+---------------+--------------------------+
| Variable_name | Value          |
+---------------+--------------------------+
| datadir    | /application/mysql/data/ |
+---------------+--------------------------+

在主服務(wù)器上開啟二進(jìn)制日志:

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin    | OFF  |
+---------------+-------+
row in set (0.00 sec)

OFF表示二進(jìn)制日志是關(guān)閉的

開啟日志3步驟:

①開啟mysql安裝目錄/my.cnf
②找到[mysqld]這個(gè)標(biāo)簽,在此標(biāo)簽下面一行,添加語句如下:

log_bin[filename]

在該語句中,log-bin說明要開啟二進(jìn)制文件;filename是二進(jìn)制日志的名字。如果沒有指定,默認(rèn)為主機(jī)名后面跟-bin作為文件名,默認(rèn)存放在datadir目錄中。在這里指定binary_log如果只對指定數(shù)據(jù)庫生成二進(jìn)制文件,則需要添加如下語句

Binlog-do-db=db_name(數(shù)據(jù)庫名稱)

如果不對指定數(shù)據(jù)庫生成二進(jìn)制文件日志,則需要添加如下語句

Binlog-ignore-db-db_name(數(shù)據(jù)庫名稱)

③重啟mysql服務(wù)??梢栽趍ysql安裝目錄/data文件夾下看到“binary_log.數(shù)字編號(hào)”文件,如binary_log.00001.以后每重啟一次mysql服務(wù),都會(huì)重新生成二進(jìn)制文件,文件名中的數(shù)字編號(hào)一次增加。

開機(jī)成功后,修改mysql的配置文件my.cnf,設(shè)置server-id,代碼如下

Server-id=1
Binlog-do-db=xscj
Binlog-ignore-db=mysql
Server-id=1:每一個(gè)數(shù)據(jù)庫服務(wù)器都要指定一個(gè)唯一的server-id,通常主服務(wù)器為1,master和slave的server-id不能相同。
Binlog-do-db:表示需要復(fù)制的數(shù)據(jù)庫,這里以xscj為例
Binlog-ignore-db:表示不需要復(fù)制的數(shù)據(jù)庫

在master上創(chuàng)建復(fù)制所需要的用戶

mysql> grant replication slave on *.* to rep_user@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec

mysql> show master status\G
*************************** 1. row ***************************
      File: binary_log.000001
    Position: 303
  Binlog_Do_DB: 
Binlog_Ignore_DB: 
row in set (0.00 sec)

將master主機(jī)的數(shù)據(jù)備份出來,保存在/data/binary_dump.txt文件中,然后導(dǎo)入到slave從機(jī)中去,具體執(zhí)行語句如下

[root@localhost bin]# mysqldump -h localhost>/data/binary_dump.txt

(2)控制從服務(wù)器操作

修改從服務(wù)器的數(shù)據(jù)庫配置文件,配置如下:

Server-id=2 ##設(shè)置從服務(wù)器id
Master-host=192.168.11.129
Master-user=rep_user
Master-password=  ##設(shè)置連接主服務(wù)器的密碼
Replicate-do-db ##設(shè)置你要同步的數(shù)據(jù)庫,可以設(shè)置多個(gè)
Master-port=port> ##配置端口號(hào)

重啟slave,在slave主機(jī)的mysql重新執(zhí)行如下命令,關(guān)閉slave服務(wù)
Mysql>stop slave;
設(shè)置slave實(shí)現(xiàn)復(fù)制相關(guān)的信息,執(zhí)行如下命令
Mysql>change master to
>master_host='',
>master_user='',
>master_password='',
>master_log_file='binary_log.000007',
>master_log_pos=120;

輸入:show slave status\G用于提供有關(guān)從服務(wù)器線程的關(guān)鍵參數(shù)信息。

常用命令如下

選項(xiàng)

功能

Slave start

啟動(dòng)復(fù)制線程

Slave stop

停止復(fù)制線程

Reset slave

重置復(fù)制線程

Show slave status

顯示復(fù)制線程狀態(tài)

Show slave status\g

顯示復(fù)制線程狀態(tài)(分行顯示)

Show master status\G

顯示主數(shù)據(jù)庫的狀態(tài)(分行顯示)

Show master logs

顯示主數(shù)據(jù)庫日志

Change master to

動(dòng)態(tài)改變到主數(shù)據(jù)庫的配置

Show processlistv

顯示有哪些線程正在運(yùn)行

以上就是本文關(guān)于Mysql中復(fù)制詳細(xì)解析的全部內(nèi)容,希望對大家有所幫助。歡迎參閱:mysql中使用instr進(jìn)行模糊查詢方法介紹、mysql查詢語句中用戶變量的使用代碼解析、MySQL操作之JSON數(shù)據(jù)類型操作詳解等,如有不足之處,歡迎留言指出。有問題咱就改,事物不是一成不變的。

您可能感興趣的文章:
  • 分析MySQL復(fù)制以及調(diào)優(yōu)原理和方法
  • Linux下MySQL數(shù)據(jù)庫的主從同步復(fù)制配置
  • 詳解Docker方式實(shí)現(xiàn)MySql 主從復(fù)制(實(shí)踐篇)
  • MySQL高可用解決方案MMM(mysql多主復(fù)制管理器)
  • MySQL5.7.18主從復(fù)制搭建(一主一從)教程詳解
  • Mysql5.7.18的安裝與主從復(fù)制圖文詳解
  • 詳解MySQL實(shí)現(xiàn)主從復(fù)制過程
  • 利用pt-heartbeat監(jiān)控MySQL的復(fù)制延遲詳解
  • 詳解MySQL主從復(fù)制讀寫分離搭建
  • 詳解如何利用docker快速構(gòu)建MySQL主從復(fù)制環(huán)境
  • 簡單談?wù)凪ySQL的半同步復(fù)制
  • MySQL復(fù)制優(yōu)點(diǎn)、原理詳解

標(biāo)簽:撫順 浙江 溫州 廣西 內(nèi)江 固原 汕尾 防疫工作

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql中復(fù)制詳細(xì)解析》,本文關(guān)鍵詞  Mysql,中,復(fù)制,詳細(xì),解析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql中復(fù)制詳細(xì)解析》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql中復(fù)制詳細(xì)解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章