MySQL的複製配置值的注意點

2021-06-23 09:59:55 字數 1015 閱讀 4206

在mysql配置主從庫時(使用的是innodb引擎),為防止主庫突然崩潰造成從庫資料上的不完整,可以設定innodb_flush_logs_at_trx_commit、innodb_support_xa、innodb_safe_binlog這兩個變數的值

innodb_flush_logs_at_trx_commit的設定:

1、果innodb_flush_log_at_trx_commit的值為0,log buffer每秒就會被刷寫日誌檔案到磁碟,提交事務的時候不做任何操作。(執行是由mysql的master thread執行緒來執行的。主線程中每秒會將重做日誌緩衝寫入磁碟的重做日誌檔案(redo log)中。不論事務是否已經提交。)預設的日誌檔案是ib_logfile0,ib_logfile1

2、設為預設值1的時候,每次提交事務的時候,都會將log buffer刷寫到日誌。

3、果設為2,每次提交事務都會寫日誌,但並不會執行刷的操作。每秒定時會刷到日誌檔案。要注意的是,並不能保證100%每秒一定都會刷到磁碟,這要取決於程序的排程。每次事務提交的時候將資料寫入事務日誌,而這裡的寫入僅是呼叫了檔案系統的寫入操作,而檔案系統是有 快取的,所以這個寫入並不能保證資料已經寫入到物理磁碟

innodb_support_xa的設定:

這個引數是在主庫上設定的,預設是自動開啟的,看到xa 首先想到的就是分布式事務了,這個引數確保事務日誌寫入bin-log 的順序與是事務的time-line 是一致的。這樣在系統崩潰的時候,啟用日誌恢復,可以嚴格按照時間線來恢復資料庫。 但是對效能有一定影響的,如果沒有啟用分布式事務,建議關閉這個引數,我們的系統預設是關閉了。

另外在配置時,一定要指定好二進位制日誌的名字,以保證二進位制的名字在所有的伺服器上是一致的,二進位制的名字預設是伺服器名,如果使用的是預設的,當在伺服器間轉移檔案,轉殖新的備庫、轉儲備份或者其它一些你想象不到的場景時,可能會導致很多問題,指定二進位制名字的配置 是log_bin=路徑/名字,在備庫上,同樣也要指定好中繼日誌的的路徑,如relay_log=/path/relay-bin

參考資料

高效能mysql(第三版)

mysql配置檔案設定注意點

說明 mysql動態修改的配置引數有兩種 會話session 只對當前會話產生影響,退出mysql後失效 全域性global 對以後的mysql的連線都生效的,重啟mysql後失效 reload過載不會 登入到mysql的命令列後 檢視mysql的引數配置情況 show variables 檢視帶有...

mysql遞增欄位的注意點

mysql sql 遞增函式 create table tab2 col1 integer not null auto increment,col2 char 20 not null,primary key col1 注意 auto increment 整數列可以具有 auto increment ...

mysql 建表的注意點

1 根據業務需要,如果只是使用某個表,則可以如下去建了表 create database dbname default charset utf8 collate utf8 general ci 2 建完表之後,需要為可以訪問或操作這個表的使用者分配許可權,簡單的把所以的許可權分配給這個表可以這樣做,...