欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年10月31日 10:46:41   作者:瀟瀟、寒  
這篇文章主要介紹了Mysql中復(fù)制詳細解析,從基本概念、用途、實現(xiàn)方法以及集中模式進行了介紹,然后分享了具體實現(xiàn)代碼,具有一定參考價值,需要的朋友可以了解下。

1.mysql復(fù)制概念

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

2.復(fù)制的用途

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

優(yōu)勢:

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

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

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

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

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

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

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

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

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

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

當(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ù)器上開啟二進制日志:

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

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

開啟日志3步驟:

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

log_bin[filename]

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

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

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

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

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

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

Server-id=1
Binlog-do-db=xscj
Binlog-ignore-db=mysql
Server-id=1:每一個數(shù)據(jù)庫服務(wù)器都要指定一個唯一的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主機的數(shù)據(jù)備份出來,保存在/data/binary_dump.txt文件中,然后導(dǎo)入到slave從機中去,具體執(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è)置多個
Master-port=<port> ##配置端口號

重啟slave,在slave主機的mysql重新執(zhí)行如下命令,關(guān)閉slave服務(wù)
Mysql>stop slave;
設(shè)置slave實現(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ù)信息。

常用命令如下

選項

功能

Slave start

啟動復(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

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

Show processlistv

顯示有哪些線程正在運行

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

相關(guān)文章

  • CentOS7 通過YUM安裝MySQL5.7的步驟詳解

    CentOS7 通過YUM安裝MySQL5.7的步驟詳解

    這篇文章主要介紹了CentOS7 通過YUM安裝MySQL5.7的步驟詳解,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • 檢查MySQL中的列是否為空或Null的常用方法

    檢查MySQL中的列是否為空或Null的常用方法

    在MySQL數(shù)據(jù)庫中,我們經(jīng)常需要檢查某個列是否為空或Null,空值表示該列沒有被賦值,而Null表示該列的值是未知的或不存在的,在本文中,我們將討論如何在MySQL中檢查列是否為空或Null,并探討不同的方法和案例,需要的朋友可以參考下
    2023-11-11
  • RHEL6.2編譯安裝MySQL 5.6.16過程分享

    RHEL6.2編譯安裝MySQL 5.6.16過程分享

    這篇文章主要介紹了RHEL6.2編譯安裝MySQL 5.6.16過程分享,還包括了mysql_secure_installation腳本運行指導(dǎo),需要的朋友可以參考下
    2014-07-07
  • MYSQL 淺談MyISAM 存儲引擎

    MYSQL 淺談MyISAM 存儲引擎

    mysql中用的最多存儲引擎就是innodb和myisam。做為Mysql的默認存儲引擎,myisam值得我們學(xué)習(xí)一下,以下是我對《高性能MYSQL》書中提到的myisam的理解,請大家多多指教
    2012-04-04
  • MySQL?優(yōu)化?index?merge引起的死鎖分析

    MySQL?優(yōu)化?index?merge引起的死鎖分析

    這篇文章主要介紹了MySQL?優(yōu)化?index?merge引起的死鎖分析,MySQL通過優(yōu)化索引合并是遇到的死鎖問題,下面具體分析需要的小伙伴可以參考一下
    2022-04-04
  • 解決MySQL遇到錯誤:1217 - Cannot delete or update a parent row: a foreign key constraint fails

    解決MySQL遇到錯誤:1217 - Cannot delete or 

    這篇文章主要介紹了解決MySQL遇到錯誤:1217 - Cannot delete or update a parent row: a foreign key constraint fails問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • MySQL查詢優(yōu)化必備知識點總結(jié)

    MySQL查詢優(yōu)化必備知識點總結(jié)

    這篇文章主要給大家介紹了關(guān)于MySQL查詢優(yōu)化必備知識點的相關(guān)資料,文中介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL8.0開啟遠程連接權(quán)限的方法步驟

    MySQL8.0開啟遠程連接權(quán)限的方法步驟

    MySQL8.0設(shè)置遠程訪問權(quán)限,找了一圈都沒找到一個適用的,索性自己寫一個,這篇文章主要給大家介紹了關(guān)于MySQL8.0開啟遠程連接權(quán)限的方法步驟,需要的朋友可以參考下
    2022-06-06
  • MySQL-8.0.26配置圖文教程

    MySQL-8.0.26配置圖文教程

    最近公司項目更換數(shù)據(jù)庫版本,在此記錄分享一下自己安裝配置MySQL8.0版本的過程吧,本文通過圖文并茂的形式給大家介紹的非常詳細,對MySQL-8.0.26配置教程感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • MySQL主從復(fù)制的原理圖解及Java語言示例使用

    MySQL主從復(fù)制的原理圖解及Java語言示例使用

    這篇文章主要介紹了MySQL的主從復(fù)制原理詳細分析,讀寫分離是基于主從復(fù)制來實現(xiàn)的。文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08

最新評論