顯示具有 Galera Cluster 標籤的文章。 顯示所有文章
顯示具有 Galera Cluster 標籤的文章。 顯示所有文章

星期三, 9月 09, 2015

MySQL Galera Cluster vs Percona XtraDB Cluster vs Mariadb Galera Cluster之比較

各種高可用方案比較(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)
--replication 的原理遵循以下兩個原則
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/

LinkWithin-相關文件

Related Posts Plugin for WordPress, Blogger...