mysql什么时候会生成新的binlog文件

 我来答
爱可生云数据库
2020-10-20 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部

1. 开启压缩功能后,通过 ZSTD 算法对每个事务进行压缩,写入二进制日志。

2. 新版本更改了 libbinlogevents,新增 Transaction_payload_event 作为压缩后的事务表示形式。

class Transaction_payload_event : public Binary_log_event { protected:  const char *m_payload;  uint64_t m_payload_size;  transaction::compression::type m_compression_type;  uint64_t m_uncompressed_size;

3. 新增 Transaction_payload_event 编码器/解码器,用于实现对压缩事务的编码和解码。

  • namespace binary_log {

  • namespace transaction {

  • namespace compression {

  • enum type {

  • /* No compression. */

  • NONE = 0,

  • /* ZSTD compression. */

  • ZSTD = 1,

  • };

  • 4. 在 mysqlbinlog 中设计和实现每个事务的解压缩和解码,读取出来的日志与未经压缩的原日志相同,并打印输出所用的压缩算法,事务形式,压缩大小和未压缩大小,作为注释。

  • #200505 16:24:24 server id 1166555110  end_log_pos 2123 CRC32 0x6add0216    Transaction_Payload     payload_size=863    compression_type=ZSTD   uncompressed_size=2184# Start of compressed events!


  • 5. 从库(或 MGR-member)在接收已压缩的 binlog 时识别 Transaction_payload_event,不进行二次压缩或解码。以原本的压缩状态写入中继日志;保持压缩状态。回放日志的解码和解压缩过程由 SQL 线程负责。

    总结日志压缩过程为:

    1)单位事务需要提交并记录 binlog。

    2)压缩编码器在缓存中通过 ZSTD 算法压缩以及编码该事务。

    3)将缓存中压缩好的事务写入日志中,落盘。

    日志读取过程为:

    客户端工具(mysqlbinlog、sql 线程)对压缩日志进行解压缩、解码。解压出原本未压缩的日志进行读取或回放。

    注意事项

    1. 压缩功能以事务为单位进行压缩,不支持非事务引擎。

    2. 仅支持对 ROW 模式的 binlog 进行压缩。

    3. 目前仅支持 ZSTD 压缩算法,但是,底层设计是开放式的,因此后续官方可能会根据需要添加其他压缩算法(例如 zlib 或 lz4)。

    4. 压缩动作是并行进行的,并且发生在 binlog 落盘之前的缓存步骤中。

    5. 压缩过程占用本机 CPU 及内存资源。在主从延迟的场景中,如果性能瓶颈时,网络带宽、压缩功能可以有效缓解主从延迟;但是如果性能瓶颈是本机自身处理能力,那么压缩功能反而可能加大主从延迟。

凭骊隽uE
2017-09-30 · TA获得超过186个赞
知道小有建树答主
回答量:383
采纳率:73%
帮助的人:51.4万
展开全部
Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式