濮阳杆衣贸易有限公司

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

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

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

1.mysql復(fù)制概念

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

2.復(fù)制的用途

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

優(yōu)勢(shì):

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

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

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

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

(1)master啟用二進(jìn)制日志。啟用二進(jìn)制日志的操作在日志管理中有詳細(xì)的介紹。
(2)slave上面的I/O進(jìn)程連接上master,并請(qǐng)求從指定日志文件的指定位置(或者從最開(kāi)始的日志)之后的日志內(nèi)容。
(3)master接受到來(lái)自slave的I/O進(jìn)程請(qǐng)求后,通過(guò)負(fù)責(zé)復(fù)制的I/O進(jìn)程根據(jù)請(qǐng)求信息讀取指定日志指定位置之后的日志信息,返回給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)程檢測(cè)到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開(kāi)始,可以用以下3種模式來(lái)實(shí)現(xiàn)。

(1)基于sql語(yǔ)句的復(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ù)制模式的方法非常簡(jiǎn)單,只要在以前設(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ù)器上開(kāi)啟二進(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)閉的

開(kāi)啟日志3步驟:

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

log_bin[filename]

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

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

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

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

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

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

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

在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ù)備份出來(lái),保存在/data/binary_dump.txt文件中,然后導(dǎo)入到slave從機(jī)中去,具體執(zhí)行語(yǔ)句如下

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

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

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

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ù)庫(kù),可以設(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ù)庫(kù)的狀態(tài)(分行顯示)

Show master logs

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

Change master to

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

Show processlistv

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

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

您可能感興趣的文章:
  • 分析MySQL復(fù)制以及調(diào)優(yōu)原理和方法
  • Linux下MySQL數(shù)據(jù)庫(kù)的主從同步復(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ù)制過(guò)程
  • 利用pt-heartbeat監(jiān)控MySQL的復(fù)制延遲詳解
  • 詳解MySQL主從復(fù)制讀寫(xiě)分離搭建
  • 詳解如何利用docker快速構(gòu)建MySQL主從復(fù)制環(huán)境
  • 簡(jiǎ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)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql中復(fù)制詳細(xì)解析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Mysql中復(fù)制詳細(xì)解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    休宁县| 云林县| 出国| 平乐县| 长沙县| 四川省| 高安市| 运城市| 深州市| 邹平县| 岱山县| 东丽区| 遂平县| 河北省| 蓬安县| 成武县| 平远县| 龙泉市| 绥芬河市| 湟中县| 台东县| 武清区| 文水县| 新干县| 临城县| 阿瓦提县| 普洱| 都匀市| 武功县| 固始县| 铁岭县| 宁强县| 重庆市| 海南省| 克什克腾旗| 乌海市| 始兴县| 屯门区| 绥中县| 金堂县| 全州县|