自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圖文結(jié)合帶你搞懂MySQL日志之relay log(中繼日志)

數(shù)據(jù)庫 MySQL
中繼日志用于主從服務(wù)器架構(gòu)中,從服務(wù)器用來存放主服務(wù)器二進(jìn)制日志內(nèi)容的一個(gè)中間文件。從服務(wù)器通過讀取中繼日志的內(nèi)容,來同步主服務(wù)器上的操作。

什么是中繼日志(relay log)

中繼日志(relay log)?只在主從服務(wù)器架構(gòu)的從服務(wù)器上存在。從服務(wù)器(slave)?為了與主服務(wù)器(Master)保持一致,要從主服務(wù)器讀取二進(jìn)制日志的內(nèi)容,并且把讀取到的信息寫入本地的日志文件中,這個(gè)從服務(wù)器本地的日志文件就叫中繼日志。然后,從服務(wù)器讀取中繼日志,并根據(jù)中繼日志的內(nèi)容對從服務(wù)器的數(shù)據(jù)進(jìn)行更新,完成主從服務(wù)器的數(shù)據(jù)同步。

搭建好主從服務(wù)器之后,中繼日志默認(rèn)會保存在從服務(wù)器的數(shù)據(jù)目錄下。

文件名的格式是:從服務(wù)器名 - relay-bin.序號?。中繼日志還有一個(gè)索引文件:從服務(wù)器名 - relay-bin.index,用來定位當(dāng)前正在使用的中繼日志。

圖片

(主從復(fù)制原理圖)

從服務(wù)器I/O線程將主服務(wù)器的二進(jìn)制日志(binlog)讀取過來記錄到從服務(wù)器本地文件,然后從服務(wù)器SQL線程會讀取中繼日志的內(nèi)容并應(yīng)用到從服務(wù)器,從而使從服務(wù)器和主服務(wù)器的數(shù)據(jù)保持一致。

中繼日志的作用

中繼日志用于主從服務(wù)器架構(gòu)中,從服務(wù)器用來存放主服務(wù)器二進(jìn)制日志內(nèi)容的一個(gè)中間文件。從服務(wù)器通過讀取中繼日志的內(nèi)容,來同步主服務(wù)器上的操作。

中繼日志是連接mastert(主服務(wù)器)和slave(從服務(wù)器)的信息,它是復(fù)制的核心,I/O線程將來自master的binlog存儲到中繼日志中,中繼日志充當(dāng)緩沖,這樣master不必等待slave執(zhí)行完成就可以發(fā)送下一個(gè)binlog。

查看中繼日志

中繼日志文件的格式與二進(jìn)制日志文件相同,并且可以 使用 mysqlbinlog 進(jìn)行讀取

SET TIMESTAMP= 1615352328 /*!*/;
BEGIN
/*!*/;
# at 900
#211413 11:33:46 server id 1 end_log_pos 832 CRC32 0xcc16d651 Table_map:
`kaito`.`test` mapped to number 91
# at 950
#211413 11:33:46 server id 1 end_log_pos 872 CRC32 0x07e4047c Delete_rows: table id
91 flags: STMT_END_F -- server id 1 是主服務(wù)器,意思是主服務(wù)器刪了一行數(shù)據(jù)
BINLOG '
CD95YBMBAAAAMgAAAEADAAAAAFsAAAAAAAEABGRlbW8ABHRlc3QAAQMAAQEBAFHWFsw=
CD95YCABAAAAKAAAAGgDAAAAAFsAAAAAAAEAAgAB/wABAAAAfATkBw==
'/*!*/;
# at 1000

這一段的意思是,主服務(wù)器(“server id 1”)對表 kaito.test 進(jìn)行了 2 步操作:

定位到表 kaito.test 編號是 91 的記錄,日志位置是 832

刪除編號是 91 的記錄,日志位置是 872

相關(guān)參數(shù)解析

通過語句:show variables like '%relay%' 查看先骨干的relay的所有相關(guān)參數(shù)如下:

mysql> show variables like '%relay%';
+---------------------------+---------------------------------------+
| Variable_name | Value |
+---------------------------+---------------------------------------+
| max_relay_log_size | 0 |
| relay_log | kaito-relay-bin |
| relay_log_basename | /var/lib/mysql/kaito-relay-bin |
| relay_log_index | /var/lib/mysql/kaito-relay-bin.index |
| relay_log_info_file | relay-log.info |
| relay_log_info_repository | TABLE |
| relay_log_purge | ON |
| relay_log_recovery | OFF |
| relay_log_space_limit | 0 |
| sync_relay_log | 10000 |
| sync_relay_log_info | 10000 |
+---------------------------+---------------------------------------+
11 rows in set (0.00 sec)
  • max_relay_log_size:標(biāo)記relay log 允許的最大值,如果該值為0,則默認(rèn)值為max_binlog_size(1G);如果不為0,則max_relay_log_size則為最大的relay_log文件大??;
  • relay_log:定義relay_log的位置和名稱,如果值為空,則默認(rèn)位置在數(shù)據(jù)文件的目錄(datadir),文件名默認(rèn)為host_name-relay-bin.nnnnnn
  • relay_log_index:同relay_log,定義relay_log的位置和名稱;一般和relay-log在同一目錄
  • relay_log_info_file:設(shè)置relay-log.info的位置和名稱(relay-log.info記錄MASTER的binary_log的恢復(fù)位置和relay_log的位置)
  • relay_log_purge:是否自動(dòng)清空不再需要中繼日志時(shí)。默認(rèn)值為1(啟用)。
  • relay_log_recovery:?當(dāng)slave從庫宕機(jī)后,假如relay-log損壞了,導(dǎo)致一部分中繼日志沒有處理,則自動(dòng)放棄所有未執(zhí)行的relay-log,并且重新從master上獲取日志,這樣就保證了relay-log的完整性。默認(rèn)情況下該功能是關(guān)閉的,將relay_log_recovery的值設(shè)置為 1時(shí),可在slave從庫上開啟該功能,建議開啟。
  • relay_log_space_limit:防止中繼日志寫滿磁盤,這里設(shè)置中繼日志最大限額。
  • 注意!但此設(shè)置存在主庫崩潰,從庫中繼日志不全的情況,不到萬不得已,不推薦使用!
  • sync_relay_log:?這個(gè)參數(shù)和sync_binlog?是一樣的,當(dāng)設(shè)置為1時(shí),slave的I/O線程每次接收到master發(fā)送過來的binlog日志都要寫入系統(tǒng)緩沖區(qū),然后刷入relay log中繼日志里,這樣是最安全的,因?yàn)樵诒罎⒌臅r(shí)候,你最多會丟失一個(gè)事務(wù),但會造成磁盤的大量I/O當(dāng)設(shè)置為0時(shí),并不是馬上就刷入中繼日志里,而是由操作系統(tǒng)決定何時(shí)來寫入,雖然安全性降低了,但減少了大量的磁盤I/O操作。這個(gè)值默認(rèn)是0,可動(dòng)態(tài)修改,建議采用默認(rèn)值。
  • sync_relay_log_info:這個(gè)參數(shù)和sync_relay_log參數(shù)一樣,當(dāng)設(shè)置為1時(shí),slave的I/O線程每次接收到master發(fā)送過來的binlog日志都要寫入系統(tǒng)緩沖區(qū),然后刷入relay-log.info里,這樣是最安全的,因?yàn)樵诒罎⒌臅r(shí)候,你最多會丟失一個(gè)事務(wù),但會造成磁盤的大量I/O。當(dāng)設(shè)置為0時(shí),并不是馬上就刷入relay-log.info里,而是由操作系統(tǒng)決定何時(shí)來寫入,雖然安全性降低了,但減少了大量的磁盤I/O操作。這個(gè)值默認(rèn)是0,可動(dòng)態(tài)修改,建議采用默認(rèn)值。

以上只是簡單的介紹了每個(gè)參數(shù)的作用,這些參數(shù)具體的設(shè)置還是需要根據(jù)每個(gè)用戶的實(shí)際系統(tǒng)情況進(jìn)行設(shè)置的;

參考文章

《MySQL是怎樣運(yùn)行的--從根兒上理解MySQL》—小孩子4919(https://juejin.cn/book/6844733769996304392)

責(zé)任編輯:武曉燕 來源: GreatSQL社區(qū)
相關(guān)推薦

2023-05-29 08:01:15

重啟二進(jìn)制日志

2022-12-26 00:48:38

2023-02-01 08:10:02

MySQL日志查詢

2022-10-12 08:01:08

MySQL日志數(shù)據(jù)庫

2023-06-28 10:24:04

2017-06-13 08:55:29

Log日志MySQL

2017-06-13 15:10:02

大數(shù)據(jù)Log日志

2010-05-19 11:01:25

MySQL BIN-L

2019-07-28 18:30:52

MySQL日志數(shù)據(jù)庫

2024-05-28 00:10:00

JavaMySQL數(shù)據(jù)庫

2020-08-20 12:10:42

MySQL日志數(shù)據(jù)庫

2010-09-29 15:15:15

DHCP中繼

2023-11-23 13:17:39

MySQL?數(shù)據(jù)庫

2024-05-30 08:03:17

2025-01-15 13:19:09

MySQL日志事務(wù)

2020-02-21 20:10:13

搞懂事務(wù)隔離級別

2011-01-18 11:15:19

LinuxLOG

2022-08-31 08:23:27

SAE日志架構(gòu)

2009-07-07 14:32:47

JDK日志Formatter

2020-09-18 11:00:28

MySQLbinlogrelay-log
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號