文档安排:
前言部分会简述下galera集群,正文中会针对我们线上的环境,在不断业务的情况下,进行参数调整的话,有些参数不能够进行配置,会以#***的形式写入配置文件中,文档也会进行进一步说明。
如果有任何疑问、建议、或意见,请联系本文小工~撒花~下面正式开始。
Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。
在看galera集群原理及同步的过程中,我记录了我几个疑问,请作为参考,如果有新的问题也请联系本文小工。
(Q1:对支持Innodb引擎的理解——Galera本质是通过wsrep api进行数据的同步和通信。Wsrep Api组成里有一个重要的组成部分是hooks,hooks会侵入innodb事务的commit流程,获取事务内部所有数据的更改,通过write set同步到其他的节点。简单点说,就是跟事务相关,在收到事务提交的信号时将更改内容发送到其他节点,并进行认证测试后更新。在mysql中跟事务相关的引擎常用的只有innodb和ndb/bdb。)
(Q2:为啥群众们不要求用ndb/bdb引擎——bdb支持事务(commit/rollback等),但是不支持row lock,不支持hash indexes;ndb的出现其实多用于mysql cluster,同时,ndb有个大胆的要求需要有足够大的内存来支持,应用场景多用于高性能查找中,引擎必须显式的编译进MySQLd服务器中才可以使用,最早是为了爱立信的电信应用设计的,打散数据至各个节点内存中,而对于正常的事务型db会有很多并发写操作,还是更推荐用Innodb。)
(Q3:同步方式——在现有的多主解决方案中,多主非集中存储底层的环境下,最重要的就是同步和互斥,换种说法就是解决数据冲突和不一致。当然,互斥的问题比较复杂,很多公司都会考虑奇偶分离等等的方法,在api中预先实现一部分互斥辅助。galera具体的同步可以参照下面的表(wsrep_sst_method):
)