MySQL Replication可行性分析 AUTO_INCREMENT Version<5.5.30,AUTO_INCREMENT column->AUTO_INCREMENT column ALL Yes www.2cto.com Update AUTO_INCREMENT column by invoking a trigger or function !InnoDB No 復合主鍵中AUTO_INCREMENT列不是首列,此時的INSERT不安全 ALL No Character Set Use UTF8 in master and slave InnoDB Yes Temporary table 混合模式,更新和插入操作正常,但臨時表打開計數按官方指導無法消除,只能通過stop slave;flush slave消除 InnoDB Yes Create if ..exists Mixed Mode 正常 InnoDB Yes Create table ..select Mixed Mode 正常 InnoDB Yes Create/Alter/Drop server 需要從庫單獨維護 InnoDB No Current_user() 可以同步,通常不會用到 InnoDB Yes Drop .. If exists Mixed Mode 正常 InnoDB Yes Memory table Mixed Mode,插入、讀取、聯合更新;主從的內存表大小限制須一致 InnoDB Yes www.2cto.com Rand(),UUID(),Last_insert_id() Only Mixed Mode InnoDB Yes Limit Mixed Mode InnoDB Yes Different table definition 表定義和引擎可以不同,但列的順序需要相同 InnoDB Yes Directory permission 必須在從庫上為路徑賦權 InnoDB Yes Invorked Features 5.5之前會有跨DB更新的問題,目前版本可以正常同步 InnoDB Yes Floating Point Value 使用Decimal可以解決 ALL No Flush 測試范圍:Flush Hosts\Slave\Logs;此類維護從庫需要單獨進行 InnoDB No www.2cto.com System Function Mixed Mode-Row Base正常 ALL Yes Load Data infile 5.5.0後可以正常復制,5.5.6後使用Mixed-Row Base ALL Yes Slow query log 不復制 ALL No Repair table 此類維護前停止復制,維護完成手動保障主從結構一致,再恢復復制 ALL No Master and slave shutdown 安全操作,但master異常停止時,會有數據丟失。可以設置syn_binlog=1減少損失。 ALL No Max_allowed_packet 當最大列(TEXT)過大導致master失敗時,復制會終止。 ALL Yes System database MySQL DB正常同步,Mixed模式使用RowBase方式,反之,使用直接Update的方式 ALL Yes Query optimizer 根據語法而定,可能出現不一致的情況 ALL Yes Reserved word 主要發生在新版本增加保留字的情況,出現後需要修改字段名 ALL Yes Set password and row-base rep 已知Bug,不復制。主(5.1)->從(5.5); ALL No Slave errors 根據情況選擇是否跳過錯誤。處理方式參考復制故障處理。 Null Null Sql mode 主從統一SQL MODE可以規避 ALL No Retried and timeouts 事務鎖定或超時時,重試次數。文檔描述默認值是10,實際默認值是0; ALL Yes Timestamp 版本問題,5.5沒有此問題 ALL Yes Time zones 系統級別需要保持時間同步 ALL Yes Transactions Mixed模式下可以正常復制 InnoDB Yes Triggers 不使用該特性。 ALL Yes/No Views 會復制,防止包含指定忽略復制的表。 ALL Yes Truncate table Mixed模式下可以正常復制 InnoDB Yes Variables 單獨維護。通過my.cnf統一管理相關參數。 ALL No 結論 根據我們數據庫開發以及後續維護所需要的特性,目前的復制是可以正常使用的。