这里不赘述5.7的安装步骤,主要注意初始化方法和配置文件,有了很大的改动,同时5.7加强了安全性,初始化后会给出密码,第一次登陆要修改密码。

OK,废话少说,回到主题,5.7的半同步强复制。


半同步复制搭建与5.6版本没有差别,搭建过程略。

将主库的半同步时间加长。参数如下图。

wKioL1WfaePxxmiGAAQJJefSJ_A965.jpg

wKiom1WfaBHRtP5UAAWtGYByDO8007.jpg



主库创建测试库测试表。插入数据。

wKioL1WfaeOCBolhAAIiSr0Bf5U676.jpg


从库查询数据。

wKiom1WfaBGQaOTHAAC1EjXWyxo229.jpg


主库开启另一会话-会话二,查询数据。

wKiom1WfaBHy5IthAACvzc33TvI000.jpg


停掉从库io复制线程。

主库会话一继续插入数据,产生等待。

wKioL1WfaeOzBQHnAABbbWO5_aY066.jpg


主库会话二查询数据,查询不到会话一后续插入的数据。

此步骤不同于5.6,5.6中另一会话可以查询到该值,后续会找时间进行证明。

wKiom1WfaBHy5IthAACvzc33TvI000.jpg



将主库进程kill掉,然后查看主库binlog,发现binlog中记录了插入值。

wKiom1WfaBGSx8uHAAOpvn7hmug176.jpg



总结:

    5.7的半同步强一致性,为after_sync时,事务刷入binlog后,会等待从库返回确认信息,返回后在写入引擎层,否则等待。开启另一回话(用户刷新)不会发现该事务。

    5.6中主库不等待从库返回确认信息,直接将事务写入引擎层。开启另一回话(用户刷新)会发现该事务。

    5.7加强了半同步的强一致性。