relay_log_recovery
改參數默認是打開的,在數據庫啟動后立即啟動自動relay log恢復,在恢復過程中,創建一個新的relay log文件,將sql線程的位置初始化到新的relay log,並將i/o線程初始化到sql線程位置。
mysql在運行過程中,從庫上可能會出現意外宕機的情況,那么在從庫啟動后,必須能夠恢復到停止之前的狀態。i/o線程必須恢復到接受事務的位置,sql線程必須恢復到一致執行事務的位置。該信息傳統上是存儲在文件中,那么有可能存在不一致或者存在的風險,從mysql5.7開始,可以使用表來存儲這些信息,並且把這些表設置為innodb引擎,通過使用事務性存儲引擎,總能夠恢復這個信息。可以配置參數master_info_repository=table和relay_log_info_repository=table使從庫信息存儲到表中。從庫如何從宕機狀態恢復到正確狀態,取決與從庫是單線程還是多線程、relay_log_recover參數的值,以及master_auto_position的使用方式。
1,單線程模式的復制(mysql5.7)
當基於gtid模式復制的時候,並且設置了master_auto_posion參數和relay_log_recover=0,使用該設置,其中relay_log_info_repository和其他變量的設置都不會影響恢復。
當基於傳統模式復制的情況下,需要設置relay_log_recovery=1和relay_log_info_repository=table。
2,多線程模式的復制(5.7)
當基於gtid模式復制的時候,並且設置了master_auto_position和relay_log_recover=0,使用該配置,其relay_log_info_repository和其他變量的設置都會影響恢復。
當基於傳統模式復制的時候,請設置relay_log_recover=1,sync_relay_log=1和relay_log_info_repository=table。