各種高可用方案比較(MySQL Galera Cluster vs Percona XtraDB Cluster vs
Mariadb Galera Cluster之比較)
ü
MySQL NDB Cluster + MySQL Fabirc
--需要較多的節點 : SQL node/ Data node/ Management node
--需要較多的記憶體來支撐, 例如資料量有100GB , 由於replica 兩份, 保守在x 1.25 , 故總計會需要250GB的總記憶體空間
--table block replication 是自動的, 需指定複製份數
--使用NDB engine, 對於記憶體的要求較高
--MySQL cluster支持線上添加data node,但修改記憶體參數設定後一定要先backup資料;然後重啟cluster(別忘了ndbd --initial),恢復資料;
--至於備份和恢復的方法,有很多種。
--首先是MySQL官方手冊裡面的方法ndb_restore
--第二種是使用mysqldump,
--第三種是使用"select * into outfile '/backup/backupfile.txt' from database.table"和"load data infile '/backup/backupfile.txt' into database.table"這樣的SQL語法
Galera Cluster + HAProxy
ü
MySQL Galera Cluster : 在MySQL單機版安裝Galera wsrep的同步plugin
P.S. Galera wsrep簡寫為-Write Set REPlication
ü
Percona XtraDB Cluster : 在MariaDB單機版安裝Galera wsrep的同步plugin
ü
Mariadb Galera Cluster : 在Percona Server單機版資料庫安裝Galera wsrep的同步plugin
這三種擁有以下共同點
--同步複製
--在每個節點都可以讀取/ 寫入(資料的consistency)
--至少三個節點
--需要表格有primary key
--對於auto increments的欄位的寫入順序 : node1 -
1,4,7… ; node2 - 2,5,8.. ; node3 - 3,6,9..
--MySQL DB 單機版的table locking 會不可用(disabled for lock table/
unlock tables)
--不支援distributed transaction processing (XA Transaction)
1. transaction在所有節點上要不都commit,要不都rollback/abort
2. transaction在所有節點的執行順序一致
其他說明:
ü
Percona XtraDB Cluster的一個缺點是他們自己管理source code,不接受外部開發人員的貢獻(雖然也是開源),以這種方式確保他們對產品中所包含功能的版本控制。
ü
淘寶目前使用的是Percona 5.5.18,而Google\Wikipedia則站在了MariaDB這邊。
ü
MariaDB Galera Cluster預設storage engine 雖然已經換成XtraDB
engine, 但名稱仍維持InnoDB。
ü
Percona XtraDB Cluster使用改良過的Storage engine
XtraDB。
ü
有了Galera wsrep plugin的加持, Master DB掛掉, Slave DB也可以繼續接受服務(MySQL replication的 半同步semi-sync需要等apply完所有relay log)。
ü
MySQL Galera Cluster or Percona XtraDB Cluster or
Mariadb Galera Cluster 皆可以搭配HAProxy 達成服務高可用。
Benchmarking:
以下效能測試可以看到MySQL Galera Cluster vs PXC vs MariaDB
Galera Cluster的 Benchmark :
大致上在確保資料commit的一致性, 需設定innodb_flush_log_at_trx_commit=1與sync_binlog=1 的情況下,
MariaDB Galera Cluster的效能是最好的。
Ref link :
|
其他連結
http://www.sobstel.org/blog/mysql-like-databases-comparison/
沒有留言:
張貼留言