当前位置: 首页 > news >正文

那种导航网站电商网站主题

那种导航网站,电商网站主题,成都制作网站的公司简介,做网站用的什么软件1.1 GTID的基本概念 1.1.1 GTID的作用 GTID的全称为Global Transaction Identifier#xff0c;是MySQL的一个强大的特性。MySQL会为每一个DML/DDL操作都增加一个唯一标记#xff0c;叫作GTID#xff08;每个事务一个GTID#xff09;。这个标记在整个复制环境中都是唯一的…1.1 GTID的基本概念 1.1.1 GTID的作用 GTID的全称为Global Transaction Identifier是MySQL的一个强大的特性。MySQL会为每一个DML/DDL操作都增加一个唯一标记叫作GTID每个事务一个GTID。这个标记在整个复制环境中都是唯一的。主从环境中主库的DUMP线程可以直接通过GTID定位到需要发送的binary log位置而不再需要指定binary log的文件名和位置因而切换极为方便。 注GTID是MySQL 5.6及以后版本开始引入的一个关键特性。 1.1.2 GTID的基本表示 相关解释都是基于MySQL 5.7.22源码 GTID由两部分组成服务器的UUID和事务ID格式如下 GTID server_uuid:gno GTID单个GTID比如24985463-a536-11e8-a30c-5254008138e45。对应源码中的类结构Gtid。注意源码中用sid代表GTID前面的server_uuidgno则用来表示GTID后面的序号。 gno单个GTID后面的序号事务ID比如上面的GTID的gno就是5。这个gno实际上是从一个全局计数器next_free_gno中获取的。 GTID SET一个GTID的集合可以包含一个或多个GTID比如常见的gtid_executed变量gtid_purged变量就是一个GTID SET。类似的24985463-a536-11e8-a30c-5254008138e41- 57-10就是一个GTID SET对应源码中的类结构Gtid_set其中还包含一个sid_map用于表示多个server_uuid。 GTID SET Interval代表GTID SET中的一个区间GTID SET中的某个server_uuid可能包含多个区间例如1-57-10中就有2个GTID SET Interval分别是1-5和7-10对应源码中的结构体Gtid_set::Interval。 1.1.3 server_uuid的生成 在GTID中包含了一个server_uuid。server_uuid实际上是一个32字节1/0字节的字符串。MySQL启动时会调用init_server_auto_options函数读取auto.cnf文件。如果auto.cnf文件丢失则会调用generate_server_uuid函数生成一个新的server_uuid但是需要注意这样GTID必然会发生改变。在generate_server_uuid函数中可以看到server_uuid至少和下面3部分有关。 1数据库的启动时间。 2线程的LWP ID其中LWP是轻量级进程Light-Weight Process的简称。 3一个随机的内存地址。 下面是部分代码 server_uuid的内部表示是binary_log::Uuid核心是一个16字节的内存空间在GTID相关的Event中会包含这个信息2.3节会进行详细解析。 1.1.4 GTID的生成 在发起commit命令后当order commit执行到FLUSH阶段需要生成GTID Event时会获取GTID3.3节将会详细描述它的生成过。MySQL内部维护了一个全局的GTID计数器next_free_gno用于生成gno事务ID。可以参考Gtid_state::get_automatic_gno函数部分代码如下。 1.1.5 GTID_EVENT和PREVIOUS_GTIDS_LOG_EVENT简介 这里先解释一下它们的作用因为后面会用到。具体的Event解析可以参考2.2节和2.3节。 GTID_EVENT GTID_EVENT作为DML/DDL的第一个Event用于描述这个操作的GTID是多少。在MySQL 5.7中为了支持从库基于LOGICAL_CLOCK的并行回放封装了last commit和seq number两个值可以称其为逻辑时钟。在MySQL 5.7中即便不开启GTID也会包含一个匿名的ANONYMOUS_GTID_EVENT但是其中不会携带GTID信息只包含last commit和seq number两个值。 PREVIOUS_GTIDS_LOG_EVENT PREVIOUS_GTIDS_LOG_EVENT包含在每一个binary log的开头用于描述直到上一个binary log所包含的全部GTID包括已经删除的binary log​。在MySQL 5.7中即便不开启GTID也会包含这个PREVIOUS_GTIDS_LOG_EVENT实际上这一点意义是非常大的。简单地说它为快速扫描binary log获得正确的gtid_executed变量GTID集合提供了基础否则可能扫描大量的binary log才能得到正确的gtid_executed变量比如MySQL 5.6中关闭GTID的情况​。这一点将在1.3节详细描述。 扩展 在MariaDB中使用的是GTID_LIST_EVENT其功能和PREVIOUS_GTIDS_LOG_EVENT相似 1.1.6 gtid_executed表的作用 官方文档这样描述gtid_executed表 gtid_executed表是GTID持久化的一个介质。实例重启后所有的内存信息都会丢失GTID模块初始化需要读取GTID持久化介质。 可以发现gtid_executed表是InnoDB表建表语句如下并且可以手动更改它但是除非是测试否则千万不要修改它。 除了gtid_executed表还有一个GTID持久化的介质那就是binary log中的GTID_EVENT。 问既然有了 binary log 中的GTID_EVENT进行GTID 的持久化为什么还需要gtid_executed表呢 答这是MySQL 5.7.5之后的一个优化可以反过来思考在MySQL 5.6 中如果使用 GTID 做从库那么从库必须开启 binary log并且设置参数 log_slave_updatesture因为从库执行过的GTID操作都需要保留在binary log中所以当GTID模块初始化的时候会读取它获取正确的GTID SET。然而开启binary log的同时设置参数log_slave_updatesture必然会造成一个问题。很多时候从库是不需要做级联的设置参数log_slave_updatesture会造成额外的空间和性能开销。因此需要另外一种 GTID 持久化介质而并不是 binary log 中的 GTID_EVENTgtid_executed表正是这样一种GTID持久化的介质。在1.3节会看到它的读取过程。
http://www.sczhlp.com/news/171336/

相关文章:

  • app ui界面设计模板google优化推广
  • 济南市建设工程招标投标协会网站网页设计欣赏英文
  • 哪些网站可以做兼职设计师中企动力做网站一次性付款
  • 深圳网站制作建设公司h5编辑器有哪些软件
  • 网站根目录文件免费网站制作作业
  • 朔州网站建设哪家便宜深圳seo公司排名
  • 网页上的视频怎么保存到本地西安百度seo推广电话
  • 河南建设厅网站网站内容优化细节
  • vs做网站加背景东莞网上申报系统
  • 做电影网站怎么拿到版权山东专业网站开发公司
  • 静态网站做淘宝客wordpress 优秀博客
  • 阜宁哪家专业做网站云开发是什么
  • 网站建设与管理领导小组Wordpress修改主页网址
  • 一手楼房可以做哪个网站支付宝 网站接口
  • 汉中网站建设公司电话百度seo推广怎么收费
  • 可以访问的国外网站网站建设必须要主机吗
  • 郑州网站建设 新浪博客90平方简装图3一4万
  • 有趣的设计网站微平台网站开发
  • 做盗版电影网站后果系统网站建设需求分析
  • 网站建设公司合同模板网站建设技术概述
  • 国外做家谱的网站平面设计网格
  • 做网站ceo网站建设中 动态图片
  • 何夜无雨 - Ishar
  • 爱彩人网站怎么做云南省玉溪市建设局官方网站
  • 做网站开发很赚钱吗写作网站推荐
  • 网站建设项目数秦皇岛市属于哪个省
  • 网站建设中 windows法律咨询东莞网站建设
  • 刚做的婚恋网站怎么推广郑州百度网站建设
  • 网站的建设与维护就业方向佛山市研发网站建设哪家好
  • 都匀住房和城乡建设厅网站表白网站是怎么做的