Mysql mgr 如何 java 连接呢?

mmm < mgr < mha < qmha < pxc < 双master < 主从

理论:

    假如两台mysql,一主一从,能否保证数据一致性?;我想到有两种方法;一种是通过主库开启无损复制,写的过程中必须确保日志先到达备(从)库,缺点备库挂了,导致主库无法写入;一种是开启gtid和gtid_trace,每次执行sql除了query的操作,查询最新的(gtid或者gtid_execulted)返回给应用,应用将最新的(gtid或者gtid_execulted)存储到(redis上或者zk上),然后通过 引入 zk分布式定时任务框架,定时检查备库gtid_execulted的值是否包含。缺点是:要部署分布式zk应用,引入zk分布式定时任务,native或workbeanch的sql增删改操作,会漏掉一部分检查,万一通过工具执行主库操作,主库挂了,主库对未提交的事物且已经写入日志的事物重新提交,那不是两边又不一致了。。。问题的解决方案,两台mysql,实现数据的一致性???


思考:主库是否能切换到从库上,判断?(错误的思考!)

    a: 半同步的最大数量等于失效mysql节点数量

    b:允许最大的mysql失效节点 (n-1) / 2

    c:成功的mysql节点等于 (n-1) / 2 - 1

    d:zk集群组成1台从库

    e:集群特性满足 m+1 > m, 提供一致性

    f:节点挂机一半mysql,则mysql的rpl_semi_sync_master_clients配置修改成 m - 1,且移除一台mysql从库

    g:挂掉的mysql重启后,数据要等待同步完后,才能加入(在线mysql允许切换集合中去)。。。

好麻烦, 能不能简单点啊。。。

再思考。。。

能不能这样啊,每次主库写的时候,要拿到最新的gtid去看从库是否同步了。


无损复制 https://www.sohu.com/a/150571140_610509

开启无损复制:

主库上执行

set global rpl_semi_sync_master_enabled = 1;

set global rpl_semi_sync_master_timeout=100000000; 超时时间记得最大能是1年,4xxxxxxxxxx...秒

set global rpl_semi_sync_master_wait_point=AFTER_SYNC;

set global  rpl_semi_sync_master_clients=1

:在my.ini添加半同步插件 plugin_load="rpl_semi_sync_master=semisync_master.dll;rpl_semi_sync_slave=semisync_slave.dll"

show plugins;

//mysql windows版在 plugin目录里存在半同步插件

linux : INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

开启并行复制:http://blog.itpub.net/29990276/viewspace-2057817/

总结:mysql mgr 能做到高可用集群,单主模式,如何通过 java 连接呢?

可以通过 replication协议 连接 mysql mgr

to do

你可能感兴趣的:(Mysql mgr 如何 java 连接呢?)