暂无图片
请问各位大佬,innodb_flush_log_at_trx_commit=1和sync_binlog=1为什么最多丢1秒钟数据?
我来答
分享
小岳
2024-12-31
请问各位大佬,innodb_flush_log_at_trx_commit=1和sync_binlog=1为什么最多丢1秒钟数据?

请问各位大佬,看网上说innodb_flush_log_at_trx_commit=1和sync_binlog=1最多丢1秒钟数据。请问为什么最多丢1秒钟数据?

谢谢!

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
shunwahⓂ️

innodb_flush_log_at_trx_commit=1表示每次事务提交时,都同步到磁盘:这种方式提供了最高的持久性保证,但可能会影响性能,因为每次提交都需要等待磁盘 I/O 完成。 也这意味着,即使MySQL服务器发生崩溃或意外断电,已经提交的事务的日志信息也会被安全地保存在磁盘上,从而保证了数据的持久性。如果设置为其他值(如0或2),则可能在某些情况下导致事务日志未能及时刷新到磁盘,从而增加数据丢失的风险。

其次,sync_binlog=1表示每次事务提交时,都会将MySQL的二进制日志(binlog)同步到磁盘。二进制日志是MySQL复制和增量备份的基础,确保了在发生故障时,可以通过二进制日志进行数据恢复。但每次提交都同步 binlog:同样提供了较高的持久性,也可能影响性能。

基于这两个参数的设置以及MySQL事务处理机制的连续性来保证的。在正常情况下,这两个设置可以确保数据的高持久性和可靠性。因此,选择合适的参数值需要根据具体的应用场景、性能需求和对数据安全性的要求进行权衡。

如果性能要求高,不建议设置。

如果对数据完整性有极高要求,并且可以接受一定的性能损失,那么保持这两个参数为 1 是推荐的做法。

暂无图片 评论
暂无图片 有用 4
打赏 0
龙舌兰地落🌏

这个说法不准确。
正确的说法是双1最多丢失1个事务的数据。
网上说的最多丢1秒钟数据可能是对比innodb_flush_log_at_trx_commit设置为0或2的情况来说的。

暂无图片 评论
暂无图片 有用 3
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql文件打开数过大
回答 1
分区表太多了嘛?可以把分区表整理合并一下或者归档掉
mysql5.7中如何使用hint,指定驱动表和非驱动表?
回答 3
mysql>explain>selectfromorderinfo>straightjoinuserinfo>onuserinfo.idorderinfo.userid;
MYSQL程序,用C#,如果连接MYSQL 超时这个的解决办法是不是减少查询返回的数量?
回答 4
已采纳
超时是有些参数设置的,比如mysql waittimeout,innodblockwaittimeout参数还得看看具体有是什么问题,导致出现这个问题。https://www.modb.pr
MySQL 的存储引擎 InnoDB 是在哪个版本中代替 MyISAM 引擎成为默认存储引擎? A MySQL 5.1 B MySQL 5.6 C MySQL 5.5 D MySQL 5.7
回答 2
已采纳
MySQL的存储引擎InnoDB是在MySQL5.5之后的默认存储引擎12。所以选项C是正确的。
mysql8.0,物理内存占用较高,又不释放,必须重启数据库才能解决问题,请问哪些因素会导致内存过高,缓存不释放?
回答 3
已采纳
我遇到过和这个相类似的问题就是内存无限的增长,mysql的数据库不会释放,应用是微服务跑的,应用厂家的数据库大神给看也没看出啥毛病,然后每天定时释放内存。
MySQL表空间传输
回答 3
使用MySQL表空间传输迁移大表,主从架构需要注意以下事项1:在传输表空间前,需要停止MySQL服务,以免出现数据文件被锁定的情况。如果在传输表空间过程中遇到问题,可以查看MySQL的日志文件,以便找
MySQL如何获取表内所有列的名称和类型?
回答 2
已采纳
1、运行命令:desctablename;2、运行命令:showfullcolumnsfromtablename;(该命令可以显示指定表所有列的详细信息,都是建表时的信息)
MySQL数据库内存升高问题
回答 3
A
关于net_buffer_length 的问题?
回答 2
1、netbufferlength是一个客户端连接级别的变量,而不是线程级别的内存。每个客户端连接都会为其分配一个缓冲区,该缓冲区的大小由netbufferlength决定。对于100个连接,默认情况
如何把自定义表空间迁移到系统表空间?
回答 1
已采纳
一般都是迁出来,你居然想迁进去.参考如下命令即可altertablet1tablespaceinnodbsystem;效果图如下(root@127.0.0.1)[db20232]>createt