【问题标题】:mysql bin log mode for auto incrementmysql bin 日志模式自动递增
【发布时间】:2012-10-02 06:18:25
【问题描述】:

目前我们有一个数据库,其中 STATEMENT bin 日志格式可以正常工作。
现在我们正在添加一个具有自动增量值的新表。
此自动递增列不适用于业务逻辑。
我们已将此作为主键的一部分添加。
这里 offer_expiry_time 是主键的第一部分,因为我们将所有查询都作为基于到期时间范围的范围查询。

假设我们的表格如下所示:

创建表 offer_expiry_info offer_expiry_time BIGINT UNSIGNED NOT NULL null, purchase_id INT UNSIGNED auto_increment, 主键(offer_expiry_time,purchase_id), KEY idx_purchase_id (purchase_id) )发动机 = INNOBB;

现在我们担心的是:

  1. STATEMENT 级别的 bin 日志格式是否适用于该表? (即使我们对跨复制的自动增量列的不同值也很好)。基本上 STATEMENT 级别会起作用吗?

  2. 如果它有效,在启动失败的数据库机器时可能会出现什么问题?

  3. 如果 STATEMENT 模式不起作用,那么我们可以单独为这个表使用特定(MIXED)复制模式吗?同一个数据库的其余表可以有STATEMENT模式吗?

  4. 这可能是一个非常愚蠢的问题,因为我不知道 mysql 如何处理复制。是否可以根据查询类型指定复制模式? (对于插入查询执行 ROW 级复制,对于 DELETE 查询执行 STATEMENT 级复制)

    问题 4 是因为我们确实基于基于范围的删除执行删除,因此如果我们可以对删除查询进行 STATEMENT 复制,将会有更好的性能。

DELETE FROM order_expiry_info WHERE offer_expiry_time "LESS THAN" SOME TIME

由于我们进行批量插入,STATEMENT 级别的复制对我们有很大帮助。
是否可以让具有自增列的表具有 STATEMENT 级别的 bin 日志格式?

[编辑] 此外,我们在事务隔离级别方面确实存在另一个问题。
错误:“无法获取错误二进制日志记录。消息:事务级别'REA InnoDB 中的 D-UNCOMMITTED' 对于 binlog 模式 'STATEMENT' 是不安全的"

有什么建议会很有帮助吗?

【问题讨论】:

    标签: mysql auto-increment database-replication mysqlbinlog


    【解决方案1】:

    是的,这些场景可以与语句二进制日志一起正常工作。

    如果您可以访问日志,您将看到在每个语句之前记录了某些值,以确保正确保留时间戳和自动增量值等内容。

    多年来,我一直在使用基于语句的复制,在这些领域中没有任何问题。我建议坚持这一点,仅在出现可能需要它们的特定性能情况时才考虑基于行或混合复制。

    请注意,某些类型的使用对于基于语句的复制来说是不安全的,但简单的自动增量使用不是其中之一。

    【讨论】:

    • 感谢您的回答。我确实对事务隔离级别有另一个问题。 “无法获取错误二进制日志记录。消息:InnoDB 中的事务级别 'REA D-COMMITTED' 对于二进制日志模式 'STATEMENT' 是不安全的”
    • 您是否出于任何特定原因使用“READ-COMMITTED”?我一直使用“REPEATABLE-READ”并且在该区域没有问题。
    • 抱歉,我们实际上使用的是 READ-UNCOMMITTED。我们有使用场景,在不同的请求中可能会出现重复数据。因此,我们使用的是 READ-UNCOMMITTED 模式。更改为“READ-COMMITTED”以进行测试,但仍然出现相同的错误。
    • 当有重复数据时,考虑切换到 REPEATABLE-READ 并在提交时优雅地处理事务失败可能是一个想法。我对其他事务隔离级别及其周围的问题没有太多经验。
    • 肯定会尝试使用 REPEATABLE READ 来解决。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2023-03-30
    • 2018-07-03
    • 2020-09-12
    相关资源
    最近更新 更多