欢迎来到IDC91站长网!
解决服务器各种技术问题,加微信uecomzsr

MySQL

当前位置: IDC91 > 数据库 > MySQL

MySQL数据库是如何实现XA规范的

时间:2022-05-30 13:58:03|栏目:MySQL|点击:

MySQL 的一致性日志

如果 MySQL 数据库断电了,未提交的事务怎么办?

答案:依靠日志。

因为在执行一个操作之前,数据库会首先把这个操作的内容写入到文件系统日志里,然后再进行操作。当宕机或者断电的时候,即使操作并没有执行完,但是日志在操作前就已经写好了,我们仍然可以根据日志的内容来进行恢复。

MySQL InnoDB 引擎中和一致性相关的有重做日志(redo log)、回滚日志(undo log)和二进制日志(binlog)。

redo log

每当有操作执行前,在数据真正更改前会先把相关操作写入 redo 日志。这样当发生断电等意外导致后续任务无法完成时,待系统恢复后就可以继续完成这些更改。

undo log

和 redo 日志对应,也叫撤消日志,记录事务开始前数据的状态。

当一些更改在执行一半时发生意外而无法完成,就可以根据撤消日志恢复到更改之前的状态。

举个例子,事务 T1 更新数据 X,对 X 执行 Update 操作,从 10 更新到 20,对应的 Redo 日志为 ,Undo 日志为

binlog

是 MySQL sever 层维护的一种二进制日志,MySQL 最重要的日志之一,它记录了所有的 DDL 和 DML 语句,除了数据查询语句 select、show 等,还包含语句所执行的消耗时间。

binlog 与 InnoDB 引擎中的 redo/undo log 不同,主要目的是复制和恢复,用来记录对 MySQL 数据更新或潜在发生更新的 SQL 语句,并以事务日志的形式保存在磁盘中。

binlog 主要应用在 MySQL 的主从复制过程中,MySQL 集群在 Master 端开启 binlog,Master 把它的二进制日志传递给 slaves 节点,再从节点回放来达到 master-slave 数据一致的目的。

你可以连接到 MySQL 服务器,使用下面的命令查看真实的 binlog 数据:

//查看binlog文件的内容
show binlog events;

//查看指定binlog文件的内容
show binlog events in 'MySQL-bin.000001';

//查看正在写入的binlog文件
show master statusG
 
//获取binlog文件列表
show binary logs;

上一篇:MYSQL字符集设置的方法详解(终端的字符集)

栏    目:MySQL

下一篇:MySQL主从延迟问题解决

本文标题:MySQL数据库是如何实现XA规范的

本文地址:https://idc91.com/shujuku/4023.html

广告投放 | 联系我们 | 免责申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

Copyright © 2023 IDC91.COM 版权所有晋ICP备17006296号