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

怎样自己建立一个网站呼市做网站的公司

怎样自己建立一个网站,呼市做网站的公司,如何高效的完成网站建设步骤,公司广告宣传片拍摄本文我们来讨论 MySQL 的 XA 规范有哪些应用相关的内容。 MySQL 为我们提供了分布式事务解决方案#xff0c;在前面的内容中提到过 binlog 的同步#xff0c;其实是 MySQL XA 规范的一个应用#xff0c;那么 XA 规范是如何定义的#xff0c;具体又是如何应用的呢#xff…本文我们来讨论 MySQL 的 XA 规范有哪些应用相关的内容。 MySQL 为我们提供了分布式事务解决方案在前面的内容中提到过 binlog 的同步其实是 MySQL XA 规范的一个应用那么 XA 规范是如何定义的具体又是如何应用的呢 今天我们一起来看一下 XA 规范相关的内容。 MySQL 有哪些一致性日志 问你一个问题如果 MySQL 数据库断电了未提交的事务怎么办 答案是依靠日志因为在执行一个操作之前数据库会首先把这个操作的内容写入到文件系统日志里记录起来然后再进行操作。当宕机或者断电的时候即使操作并没有执行完但是日志在操作前就已经写好了我们仍然可以根据日志的内容来进行恢复。 MySQL InnoDB 引擎中和一致性相关的有重做日志redo log、回滚日志undo log和二进制日志binlog。 redo 日志每当有操作执行前在数据真正更改前会先把相关操作写入 redo 日志。这样当断电或者发生一些意外导致后续任务无法完成时待系统恢复后可以继续完成这些更改。 和 redo 日志对应的 undo 日志也叫撤消日志记录事务开始前数据的状态当一些更改在执行一半时发生意外而无法完成就可以根据撤消日志恢复到更改之前的状态。举个例子事务 T1 更新数据 X对 X 执行 Update 操作从 10 更新到 20对应的 Redo 日志为 T1, X, 20Undo 日志为 T1, X, 10。 binlog 日志是 MySQL sever 层维护的一种二进制日志是 MySQL 最重要的日志之一它记录了所有的 DDL 和 DML 语句除了数据查询语句 select、show 等还包含语句所执行的消耗时间。 binlog 与 InnoDB 引擎中的 redo/undo log 不同binlog 的主要目的是复制和恢复用来记录对 MySQL 数据更新或潜在发生更新的 SQL 语句并以事务日志的形式保存在磁盘中。binlog 主要应用在 MySQL 的主从复制过程中MySQL 集群在 Master 端开启 binlogMaster 把它的二进制日志传递给 slaves 节点再从节点回放来达到 master-slave 数据一致的目的。 你可以连接到 MySQL 服务器使用下面的命令查看真实的 binlog 数据 //查看binlog文件的内容 show binlog events;//查看指定binlog文件的内容 show binlog events in MySQL-bin.000001;//查看正在写入的binlog文件 show master status\G//获取binlog文件列表 show binary logs;XA 规范是如何定义的 XA 是由 X/Open 组织提出的分布式事务规范XA 规范主要定义了事务协调者Transaction Manager和资源管理器Resource Manager之间的接口。 事务协调者Transaction Manager因为 XA 事务是基于两阶段提交协议的所以需要有一个协调者来保证所有的事务参与者都完成了准备工作也就是 2PC 的第一阶段。如果事务协调者收到所有参与者都准备好的消息就会通知所有的事务都可以提交也就是 2PC 的第二阶段。 在前面的内容中我们提到过之所以需要引入事务协调者是因为在分布式系统中两台机器理论上无法达到一致的状态需要引入一个单点进行协调。协调者也就是事务管理器控制着全局事务管理事务生命周期并协调资源。 资源管理器Resource Manager负责控制和管理实际资源比如数据库或 JMS 队列。 目前主流数据库都提供了对 XA 的支持在 JMS 规范中即 Java 消息服务Java Message Service中也基于 XA 定义了对事务的支持。 XA 事务的执行流程 XA 事务是两阶段提交的一种实现方式根据 2PC 的规范XA 将一次事务分割成了两个阶段即 Prepare 和 Commit 阶段。 Prepare 阶段TM 向所有 RM 发送 prepare 指令RM 接受到指令后执行数据修改和日志记录等操作然后返回可以提交或者不提交的消息给 TM。如果事务协调者 TM 收到所有参与者都准备好的消息会通知所有的事务提交然后进入第二阶段。 Commit 阶段TM 接受到所有 RM 的 prepare 结果如果有 RM 返回是不可提交或者超时那么向所有 RM 发送 Rollback 命令如果所有 RM 都返回可以提交那么向所有 RM 发送 Commit 命令完成一次事务操作。 MySQL 如何实现 XA 规范 MySQL 中 XA 事务有两种情况内部 XA 和外部 XA其区别是事务发生在 MySQL 服务器单机上还是发生在多个外部节点间上。 内部 XA 在 MySQL 的 InnoDB 存储引擎中开启 binlog 的情况下MySQL 会同时维护 binlog 日志与 InnoDB 的 redo log为了保证这两个日志的一致性MySQL 使用了 XA 事务由于是在 MySQL 单机上工作所以被称为内部 XA。 内部 XA 事务由 binlog 作为协调者在事务提交时则需要将提交信息写入二进制日志也就是说binlog 的参与者是 MySQL 本身。 外部 XA 外部 XA 就是典型的分布式事务MySQL 支持 XA START/END/PREPARE/Commit 这些 SQL 语句通过使用这些命令可以完成分布式事务。 你也可以查看 MySQL 官方文档了解更多的 XA 命令。 MySQL 外部 XA 主要应用在数据库代理层实现对 MySQL 数据库的分布式事务支持例如开源的数据库中间层比如淘宝的 TDDL、阿里巴巴 B2B 的 Cobar 等。外部 XA 一般是针对跨多 MySQL 实例的分布式事务需要应用层作为协调者比如我们在写业务代码在代码中决定提交还是回滚并且在崩溃时进行恢复。 Binlog 中的 Xid 当事务提交时在 binlog 依赖的内部 XA 中额外添加了 Xid 结构binlog 有多种数据类型包括以下三种 statement 格式记录为基本语句包含 Commitrow 格式记录为基于行mixed 格式日志记录使用混合格式 不论是 statement 还是 row 格式binlog 都会添加一个 XID_EVENT 作为事务的结束该事件记录了事务的 ID 也就是 Xid在 MySQL 进行崩溃恢复时根据 binlog 中提交的情况来决定如何恢复。 Binlog 同步过程 下面来看看 Binlog 下的事务提交过程整体过程是先写 redo log再写 binlog并以 binlog 写成功为事务提交成功的标志。 当有事务提交时 第一步InnoDB 进入 Prepare 阶段并且 write/sync redo log写 redo log将事务的 XID 写入到 redo 日志中binlog 不作任何操作第二步进行 write/sync Binlog写 binlog 日志也会把 XID 写入到 Binlog第三步调用 InnoDB 引擎的 Commit 完成事务的提交将 Commit 信息写入到 redo 日志中。 如果是在第一步和第二步失败则整个事务回滚如果是在第三步失败则 MySQL 在重启后会检查 XID 是否已经提交若没有提交也就是事务需要重新执行就会在存储引擎中再执行一次提交操作保障 redo log 和 binlog 数据的一致性防止数据丢失。 在实际执行中还牵扯到操作系统缓存 Buffer 何时同步到文件系统中所以 MySQL 支持用户自定义在 Commit 时如何将 log buffer 中的日志刷到 log file 中通过变量 innodb_flush_log_at_trx_Commit 的值来决定。在 log buffer 中的内容称为脏日志感兴趣的话可以查询资料了解下。 总结 本文介绍了 MySQL 一致性相关的几种日志并分享了 MySQL 的 XA 规范相关内容以及内外部 XA 事务如何实现。
http://wiki.neutronadmin.com/news/220930/

相关文章:

  • 校园网站建设建议海报模板素材网站
  • asp公司网站泉州网站建设优化公司
  • 怎么用python做网站给企业做网站的平台
  • 如何检测做的网站的兼容性网站管理后台打不开
  • 毕业设计网站成品安阳区号电话
  • 珠海网站开发排名杭州模板建站哪家好
  • 雄安做网站电商网站模板素材
  • 广东省建设交易中心网站首页贵德县wap网站建设公司
  • 成品网站 高端做网上水果网站的调查
  • 迅睿cms建站教程平面设计基础知识
  • 网站托管的好处商标查询网站建设
  • 微信公众号的h5网站开发6怎么使用创客贴网站做图
  • 开源网站建设工具培训机构停课
  • 我的世界做皮肤网站怎么访问wordpress
  • 网站seo优化怎么做网站代码如何优化
  • 常州免费网站建站模板斗门区住房和城乡建设网站
  • 做app网站的软件叫什么名字吗网站开发项目推荐
  • 网站源码上传安装广州百度推广电话
  • 上海建设手机网站高州网站开发公司
  • 青岛网站推广企业广西红豆社区梧州论坛
  • 基于lamp网站建设实例深入理解wordpress
  • 微网站开发商网站建成
  • 在线观看免费网站开发公司会议提纲
  • WordPress整站搬家插件网站建设ningqueseo
  • wordpress升级需要ftp网站优化的主要目的是什么
  • 黄州区精神文明建设网站网站制作包括数据库吗
  • 丹江口网站制作办公室装修设计网站
  • 群晖wordpress建站教程网站建设邀标比选
  • 兰州专业网站建设公司wordpress个人下载网站模板
  • 对网站建设的维护wordpress知更鸟企业主题