Mysql 主從同步相關記錄

2021-10-02 07:03:42 字數 1135 閱讀 8427

檢視主從同步延時:

seconds_behind_master: 0
sync_binlog說明

mysql提供乙個sync_binlog引數來控制資料庫的binlog刷到磁碟上去。

預設,sync_binlog=0,表示mysql不控制binlog的重新整理,由檔案系統自己控制它的快取的重新整理。這時候的效能是最好的,但是風險也是最大的。因為一旦系統crash,在binlog_cache中的所有binlog資訊都會被丟失。

如果sync_binlog>0,表示每sync_binlog次事務提交,mysql呼叫檔案系統的重新整理操作將快取刷下去。最安全的就是sync_binlog=1了,表示每次事務提交,mysql都會把binlog刷下去,是最安全但是效能損耗最大的設定。這樣的話,在資料庫所在的主機作業系統損壞或者突然掉電的情況下,系統才有可能丟失1個事務的資料。但是binlog雖然是順序io,但是設定sync_binlog=1,多個事務同時提交,同樣很大的影響mysql和io效能。雖然可以通過group commit的補丁緩解,但是重新整理的頻率過高對io的影響也非常大。對於高併發事務的系統來說,「sync_binlog」設定為0和設定為1的系統寫入效能差距可能高達5倍甚至更多。

所以很多mysql dba設定的sync_binlog並不是最安全的1,而是100或者是0。這樣犧牲一定的一致性,可以獲得更高的併發和效能。

檢視

show variables like '%sync_binlog%'
修改

set global sync_binlog=0;
再檢視innodb_flush_log_at_trx_commit引數,設定為1,也就是說每次事務提交,都會將innodb日誌快取寫入磁碟,對磁碟效率影響很大,將它設定為2,每次事務提交時mysql都會把log buffer的資料寫入log file,但是flush(刷到磁碟)操作並不會同時進行。該模式下,mysql會每秒執行一次 flush(刷到磁碟)操作

show variables like '%innodb_flush_log%'
寫入

set global innodb_flush_log_at_trx_commit=2;

mysql主從同步單個表實驗記錄

問題的提出 在crm管理系統與運營基礎資料平台之間需要有資料表進行交換,說是交換,其實是單向的,就是crm裡面的一些資料需要實時同步到運營基礎資料平台中。解決方案 a 採用時間戳的辦法進行 開發 問題 需要把同步的表新增時間戳概念,同時對於程式要做修改,提供資料採詢介面,同時對於基礎資料平台需要有乙...

mysql主從同步原理

主從同步 實際上,你讀的主庫和從庫都可以,但是寫的肯定是進入到主庫里,然後從庫在讀binlog,從庫同步 binlog檔案是以二進位制形式儲存的 主庫執行 sql 寫binglog 同步到從庫執行 什麼叫同步,就是insert 或者update或者delete 都會操作主庫,每執行一條語句,都會寫入...

mysql 主從同步配置

mysql資料主從同步配置 主資料庫上操作 1.用vi etc my.cnf開啟檔案,對檔案進行修改,在 mysqld 下面進行新增修改 server id 1 這是資料庫id,此id是唯一的,主庫預設為1,其他從庫以此id進行遞增,id值不能重複,否則會同步出錯 log bin mysql bin...