主从复制中的:同步复制 VS 异步复制 vs 半同步复制

参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/replication-semisync.html

 

定义/基本原理

优点

缺点

同步复制

Master将事件写入 binlog,自身并不知道slave是否接收是否处理,不能保证所有事务都被所有slave接收

保证数据安全和可靠性

耗费时间,存在延迟

异步复制

Master提交事务,直到事务在所有slave都已提交,才会返回客户端事务执行完毕信息

反应迅速,反馈及时

存在一定的数据安全隐患

简答来讲,“同步复制”虽然耗费时间更长且麻烦,但是入银行、证券公司等对数据要求较高的单位依然会使用“同步复制”。而“同步+异步”=半同步复制,综合了同步和异步的优点,是互联网企业中常用的复制方式。

 

🦯how centos 8 实现Mysql半同步复制

具体流程图:

Mysql 主从复制容易出现的问题

  • 从节点未设置只度,误操作写入数据
  • 主库或者仓库意外宕机,部分文件损坏,如:binlog、relaylog等
  • 主从版本不一致,例如centos7和centos8,两者版本很大地方其实不兼容,则会导致数据传输过程中,产生数丢失等问题。
  • Mysql自身的bug系统缺陷导致。

于是,我们需要将主库binlog采用ROW格式,主从实现版本的一致性,从库开启只读权限,定义对主从进行一致性的检验等等。

 

📚Mysql中的 Mycat

why 使用MyCat?

当仅使用一个数据库时,我们不需要对数据库做过多的处理,但是数据库总量一旦很多呢?这个时候我们便需要一个对数据库的管理者。简单理解:数据库是对底层存储文件的抽象,而MyCat则是对数据库的抽象,当用户要想“写”权限时,访问主,而“读”权限则访问从,MyCat从而实现的读写分离。

what MyCat的工作原理?

MyCat简单理解为:“拦截”,将用户发送的SQL语句进行特定的分析。但是,上述原理图存在一个缺陷:当MyCat这个中间人一旦丧失功能时,整个数据交互的系统就不足以形成,因此,MyCat往往以集群的方式出现,提高容错率,即使部分损坏,也拥有备份,让整个系统流程完整运行。

如何搭建MyCat?

1. 创建授权账号(修改主从节点"而二进制"文件配置)
2. 在MySQL代理服务器安装MyCat并启动
#yum -y install java mariadb
#java -versioin     //确认安装


MyCat下载地址:Index of / (mycat.org.cn)


#wget http://dl.mycat.org.cn/1.6.7.6/20220524101549/Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz
如下图所示:

mkdir /apps
ls
tar xvf Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz -C /apps/
ls /apps/      //查看目录
tree /apps/    
tree /apps/ -d  //查看根目录


启动和链接
vim /etc/profile.d/mycat.sh
PATH=/apps/mycat/bin:$PASH
source /etc/profile.d/mycat.sh


     //内容太小则会无法使用
cat /app/mycat/logs/wrapper.log


链接mycat
mysql -uroot -p密码 -h 127.0.0.1 -p8066


mycat修改server.xml文件配置Mycat的链接信息
vim /apps/mycat/conf/server.xml
/8066     //修改端口号
8066修改为3306
/password      //修改密码
OUT


修改shchema.xml实现读写分离策略
cp /apps/mycat/conf/schema.xml  /apps/mycat/conf/schema.xml.bak
vim /apps/mycat/conf/schema.xml