亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解MySQL數(shù)據(jù)庫設(shè)置主從同步的方法

 更新時(shí)間:2016年11月20日 11:59:40   作者:偶木  
最近一直在研究mysql的主從同步問題,現(xiàn)在網(wǎng)上也有很多資料,現(xiàn)在感覺寫的都很好(當(dāng)初感覺寫的很差,是因?yàn)樽约旱念I(lǐng)悟較差),于是想跟大家分享一下自己配置的整個(gè)過程和經(jīng)驗(yàn)。有需要的朋友歐美可以參考借鑒,感興趣的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。

簡(jiǎn)介

MySQL主從同步是目前使用比較廣泛的數(shù)據(jù)庫架構(gòu),技術(shù)比較成熟,配置也不復(fù)雜,特別是對(duì)于負(fù)載比較大的網(wǎng)站,主從同步能夠有效緩解數(shù)據(jù)庫讀寫的壓力。

MySQL主從同步的機(jī)制:

MySQL同步的流程大致如下:

     1、主服務(wù)器(master)將變更事件(更新、刪除、表結(jié)構(gòu)改變等等)寫入二進(jìn)制日志(master log)。

     2、從服務(wù)器(slave)的IO線程從主服務(wù)器(binlog dump線程)獲取二進(jìn)制日志,并在本地保存一份自己的二進(jìn)制日志(relay log)

     3、從服務(wù)器的SQL線程讀取本地日志(relay log),并重演變更事件。

MySQL主從同步的作用:

     1、可以作為一種備份機(jī)制,相當(dāng)于熱備份(在從備份,避免備份期間影響主服務(wù)器服務(wù))

     2、可以用來做讀寫分離,均衡數(shù)據(jù)庫負(fù)載(主寫從讀)

     3、當(dāng)主服務(wù)器出現(xiàn)問題時(shí),可以切換到從服務(wù)器。

MySQL主從同步的步驟:

一、準(zhǔn)備操作:

1、主從數(shù)據(jù)庫版本一致,建議版本5.5以上

2、主從數(shù)據(jù)庫數(shù)據(jù)一致

二、主數(shù)據(jù)庫master修改:

1、修改MySQL配置:

# /etc/my.cnf 
log-bin = mysql-bin 

# 主數(shù)據(jù)庫端ID號(hào) 
server-id = 1 

log-bin=/home/mysql/logs/binlog/bin-log
max_binlog_size = 500M
binlog_cache_size = 128K
binlog-do-db = adb
binlog-ignore-db = mysql
log-slave-updates
expire_logs_day=2
binlog_format="MIXED"

上面配置中各個(gè)參數(shù)的含義和相關(guān)注意項(xiàng):

#服務(wù)器標(biāo)志號(hào),注意在配置文件中不能出現(xiàn)多個(gè)這樣的標(biāo)識(shí),如果出現(xiàn)多個(gè)的話mysql以第一個(gè)為準(zhǔn),一組主從中此標(biāo)識(shí)號(hào)不能重復(fù)。
server-id = 1

log-bin=/home/mysql/logs/binlog/bin-log #開啟bin-log,并指定文件目錄和文件名前綴。

#每個(gè)bin-log最大大小,當(dāng)此大小等于500M時(shí)會(huì)自動(dòng)生成一個(gè)新的日志文件。一條記錄不會(huì)寫在2個(gè)日志文件中,所以有時(shí)日志文件會(huì)超過此大小。
max_binlog_size = 500M 

binlog_cache_size = 128K #日志緩存大小

binlog-do-db = adb #需要同步的數(shù)據(jù)庫名字,如果是多個(gè),就以此格式在寫一行即可。

binlog-ignore-db = mysql #不需要同步的數(shù)據(jù)庫名字,如果是多個(gè),就以此格式在寫一行即可。

#當(dāng)Slave從Master數(shù)據(jù)庫讀取日志時(shí)更新新寫入日志中,如果只啟動(dòng)log-bin 而沒有啟動(dòng)log-slave-updates則Slave只記錄針對(duì)自己數(shù)據(jù)庫操作的更新。
log-slave-updates 

expire_logs_day=2 #設(shè)置bin-log日志文件保存的天數(shù),此參數(shù)mysql5.0以下版本不支持。

binlog_format="MIXED" #設(shè)置bin-log日志文件格式為:MIXED,可以防止主鍵重復(fù)。

2、重啟mysql,創(chuàng)建用于同步的賬戶:

# 創(chuàng)建slave帳號(hào)slave,密碼111111 
mysql>grant replication slave on *.* to 'slave'@'%' identified by '111111'; 

# 更新數(shù)據(jù)庫權(quán)限 
mysql>flush privileges; 

3、查詢master的狀態(tài)

mysql> show master status; 
+------------------+----------+--------------+------------------+ 
| File    | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+------------------+----------+--------------+------------------+ 
| mysql-bin.000009 |  196 |    |     | 
+------------------+----------+--------------+------------------+ 
1 row in set 

注:執(zhí)行完這個(gè)步驟后不要再操作主數(shù)據(jù)庫了,防止主數(shù)據(jù)庫狀態(tài)值變化

三、從數(shù)據(jù)庫slave修改:

1、修改MySQL配置:

# 從數(shù)據(jù)庫端ID號(hào) 
server-id =2 

2、執(zhí)行同步命令

# 執(zhí)行同步命令,設(shè)置主數(shù)據(jù)庫ip,同步帳號(hào)密碼,同步位置 
mysql>change master to master_host='192.168.1.2',master_user='slave',master_password='111111',master_log_file='mysql-bin.000009',master_log_pos=196; 

# 開啟同步功能 
mysql>start slave; 

3、檢查從數(shù)據(jù)庫狀態(tài):

mysql> show slave status\G; 
*************************** 1. row *************************** 
    Slave_IO_State: Waiting for master to send event 
     Master_Host: 192.168.1.2 
     Master_User: slave_account 
     Master_Port: 3306 
    Connect_Retry: 60 
    Master_Log_File: mysql-bin.000009 
   Read_Master_Log_Pos: 196 
    Relay_Log_File: vicky-relay-bin.000002 
    Relay_Log_Pos: 253 
  Relay_Master_Log_File: mysql-bin.000009 
    Slave_IO_Running: Yes 
   Slave_SQL_Running: Yes 
    Replicate_Do_DB: 
   Replicate_Ignore_DB: 
   ... 
   ...

注:Slave_IO_Running及Slave_SQL_Running進(jìn)程必須正常運(yùn)行,即YES狀態(tài),否則說明同步失敗??捎眠@兩項(xiàng)判斷從服務(wù)器是否掛掉

到這里,主從數(shù)據(jù)庫設(shè)置工作已經(jīng)完成,自己可以新建數(shù)據(jù)庫和表,插入和修改數(shù)據(jù),測(cè)試一下是否成功

四、其他可能用到的相關(guān)參數(shù):

1、master端:

# 不同步哪些數(shù)據(jù)庫 
binlog-ignore-db = mysql 
binlog-ignore-db = test 
binlog-ignore-db = information_schema 

# 只同步哪些數(shù)據(jù)庫,除此之外,其他不同步 
binlog-do-db = game 

# 日志保留時(shí)間 
expire_logs_days = 10 

# 控制binlog的寫入頻率。每執(zhí)行多少次事務(wù)寫入一次 
# 這個(gè)參數(shù)性能消耗很大,但可減小MySQL崩潰造成的損失 
sync_binlog = 5 

# 日志格式,建議mixed 
# statement 保存SQL語句 
# row 保存影響記錄數(shù)據(jù) 
# mixed 前面兩種的結(jié)合 
binlog_format = mixed 

2、slave端:

# 停止主從同步 
mysql> stop slave; 

# 連接斷開時(shí),重新連接超時(shí)時(shí)間 
mysql> change master to master_connect_retry=50; 

# 開啟主從同步 
mysql> start slave; 

以上連接超時(shí)設(shè)置,類似方式可用于設(shè)置主數(shù)據(jù)庫ip,同步帳號(hào)密碼,同步位置

判斷主從服務(wù)器是否正常運(yùn)行代碼:

 //在從服務(wù)器中執(zhí)行以下語句
 $sql = "show slave status";
 $result = mysql_query($sql, $slave_link);
 $row = mysql_fetch_assoc($result);

 $Slave_IO_Running = $row['Slave_IO_Running'];
 $Slave_SQL_Running = $row['Slave_SQL_Running'];

 //下面兩項(xiàng)為判斷標(biāo)準(zhǔn)
 if ('Yes' == $Slave_IO_Running && 'Yes' == $Slave_SQL_Running) {

 } else {
  $content .= "從數(shù)據(jù)庫( $host )掛掉了?。?! <br/>";
 }

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • MySQL?配置主從復(fù)制實(shí)踐分享

    MySQL?配置主從復(fù)制實(shí)踐分享

    這篇文章主要介紹了MySQL?配置主從復(fù)制實(shí)踐分享,通過檢測(cè)通信展開詳情,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 解決mysql 1040錯(cuò)誤Too many connections的方法

    解決mysql 1040錯(cuò)誤Too many connections的方法

    因?yàn)槟愕膍ysql安裝目錄下的my.ini中設(shè)定的并發(fā)連接數(shù)太少或者系統(tǒng)繁忙導(dǎo)致連接數(shù)被占滿
    2012-09-09
  • Mysql慢查詢優(yōu)化方法及優(yōu)化原則

    Mysql慢查詢優(yōu)化方法及優(yōu)化原則

    這篇文章主要介紹了Mysql慢查詢優(yōu)化方法及優(yōu)化原則,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • MySQL之mysqldump的使用詳解

    MySQL之mysqldump的使用詳解

    這篇文章主要介紹了MySQL之mysqldump的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Mysql 遠(yuǎn)程連接配置實(shí)現(xiàn)的兩種方法

    Mysql 遠(yuǎn)程連接配置實(shí)現(xiàn)的兩種方法

    這篇文章主要介紹了Mysql 遠(yuǎn)程連接配置實(shí)現(xiàn)的兩種方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Scott?數(shù)據(jù)?映射?MySQL代碼實(shí)現(xiàn)分享

    Scott?數(shù)據(jù)?映射?MySQL代碼實(shí)現(xiàn)分享

    這篇文章主要介紹了Scott?數(shù)據(jù)?映射?MySQL,文章圍繞Scott?數(shù)據(jù)?映射?MySQL的相關(guān)代碼分享給大家,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-02-02
  • phpstudy無法啟動(dòng)MySQL服務(wù)的完美解決辦法

    phpstudy無法啟動(dòng)MySQL服務(wù)的完美解決辦法

    學(xué)習(xí)php當(dāng)然是要先安裝好運(yùn)行環(huán)境了,phpstyudy是一個(gè)運(yùn)行php的集成環(huán)境,一鍵安裝對(duì)新手很友好,下面這篇文章主要給大家介紹了關(guān)于phpstudy無法啟動(dòng)MySQL服務(wù)的完美解決辦法,需要的朋友可以參考下
    2022-06-06
  • MySQL創(chuàng)建定時(shí)任務(wù)實(shí)例(每天凌晨1點(diǎn)、每小時(shí)、每分鐘、某一時(shí)間點(diǎn))

    MySQL創(chuàng)建定時(shí)任務(wù)實(shí)例(每天凌晨1點(diǎn)、每小時(shí)、每分鐘、某一時(shí)間點(diǎn))

    在mysql中有時(shí)候要定時(shí)更新或者刪除一部分?jǐn)?shù)據(jù)需要用到mysql的定時(shí)任務(wù),下面這篇文章主要給大家介紹了關(guān)于MySQL創(chuàng)建定時(shí)任務(wù)的相關(guān)資料,包括每天凌晨1點(diǎn)、每小時(shí)、每分鐘、某一時(shí)間點(diǎn)等,需要的朋友可以參考下
    2023-03-03
  • Ubuntu?18.04.4安裝mysql的過程詳解?親測(cè)可用

    Ubuntu?18.04.4安裝mysql的過程詳解?親測(cè)可用

    這篇文章主要介紹了Ubuntu?18.04.4安裝mysql-親測(cè)可用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Mysql中的單表最大記錄是多少

    Mysql中的單表最大記錄是多少

    這篇文章主要介紹了Mysql中的單表最大記錄是多少問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論