MySql 主库从库原理及实战

MySql 主库从库原理及实战,第1张

从库生成两个线程,一个I/O线程,一个SQL线程;

I/O线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

主库会生成一个 log dump 线程,用来给从库 I/O线程传binlog;

SQL 线程,会读取relay log文件中的日志,并解析成具体 *** 作,来实现主从的 *** 作一致,而最终数据一致;

1、设置主/从服务器配置

2、创建主/从服务器容器

此处为尽量排除版本不一致导致各种未知问题,所以采用docker构建部署MySql

3、登录主服务器的mysql,查询master的状态

Slave_IO_State 提示:Waiting for master to send event 就是成功了,可在主库添加或修改数据,在到从库查看是否同步

Connecting to master 多半是网络连接不通,可查看日志文件确认

到此你已经可以实现主从同步了

温馨提示 : 以上弱密码需自行修改

myql 在实战使用过程中会遇到不同的场景,针对不同场景,使用方式需要整理记录,给以后遇到类似问题做参考使用。

这里主要是对dual虚拟表的一种认识。实际上可以直接函数方式:

【场景描述】

类似手机号,需要中间4位 ‘*’ 处理。如:“ 187****4567 ”,姓名3个字的中间1位 ‘*’ 处理,2个字的后面1位 ‘*’处理。如: “ 李 * , 张*研 ”

【实现方式】

(1) insert(mobile, 4,4,'****') :函数

(2) concat(left(mobile,3), '****', right(mobile,4)) :联接函数

(3) REPLACE(mobile, SUBSTR(mobile,4,4), '****') :替换函数

【实现语句】

经过前面的介绍现在我们都知道,一行一行的数据是存放在数据页里的,所以接下来我们该分析一下数据页的结构了。之前介绍过,每个数据页,实际上是默认有16kb的大小,那么这16kb的大小就是存放大量的数据行吗?明显不是的,其实一个数据页拆分成了很多个部分,大体上来说包含: 文件头、数据页头,最小记录和最大记录、多个数据行、空闲空间、数据页目录、文件尾部。下面我们来看一张图:

简单来说,就是平时我们创建的那些表,其实都有一个表空间的概念,在磁盘上都会对应着“表名.ibd”这样的一个磁盘数据文件。所以在物理层面,表空间就是对应一些磁盘上的数据文件。有的表空间,比如系统表空间可能对应的是多个磁盘文件,我们自己创建的表对应的表空间可能就是对应了一个“表名.ibd”数据文件。

在表空间的磁盘文件里会有很多的数据页,但是如果一个表空间包含了太多数据页的话就不便于管理,所以在表空间里又引入了一个 的概念,英文就是extent,一个数据区对应着连续的64个数据页,每个数据页是16kb,所以一个数据区是1mb,然后256个数据区被划分为一组。

对于表空间而言,它的第一组数据区的第一个数据区的前3个数据页都是固定的,里面存放了一些描述性的数据。比如fsp_hdr这个数据页,它里面就存放了表空间和这一组数据区的一些属性。ibuf_bitmap数据页,里面存放的是这一组数据页的所有insert buffer的一些信息。inode数据页,这里也存放了一些特殊信息。

我们现在先不去具体了解它们是干什么的,只要知道第一组数据区的第一个数据区的前3个数据页,都是存放一些特殊信息的。然后这个表空间里的其它各组数据区,每一组数据区的第一个数据区的头两个数据页都是存放特殊信息的,比如xdes数据页就是用来存放这一组数据区的一些相关属性的,其实就是很多描述这组数据区的东西。下面我们通过一张图来看一下表空间的存储结构。

1、linux *** 作系统的存储系统软件层原理分析以及IO调度优化原理

简单来说,linux的存储系统分为 VFS层、文件系统层,Page Cache缓存层,通用Block层、IO调度层、Block设备驱动层、Block设备层 ,如下图:

最后IO完成调度之后,就会决定哪个IO请求先执行,哪个IO请求后执行,此时可以执行的IO请求就会交给Block设备驱动层,最后经过驱动把IO请求发送给真正的存储硬件,也就是Block设备层。硬件设备完成IO读写 *** 作,最后就把响应经过上面的层级反向依次返回,最终MySQL可以得到本次IO读写 *** 作的结果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7285043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存