二进制日志格式
跳到导航
跳到搜索
服务器使用多种日志格式来记录二进制日志中的信息:
- MySQL中的复制功能最初基于将SQL语句从源复制到副本的方式。这称为基于语句的日志记录。您可以通过使用–binlog-format=STATEMENT选项启动服务器来使用这种格式。
- 在基于行的日志记录(默认情况下),源将事件写入二进制日志,指示单个表行如何受到影响。您可以通过使用–binlog-format=ROW选项启动服务器来使用基于行的日志记录。
- 第三个选项也可用:混合日志记录。在混合日志记录中,默认情况下使用基于语句的日志记录,但在某些情况下,日志模式会自动切换为基于行的模式。您可以通过使用–binlog-format=MIXED选项来显式地让MySQL使用混合日志记录。
日志记录格式也可以由所使用的存储引擎设置或限制。这有助于消除在源和副本之间复制某些语句时可能出现的问题,因为它们使用不同的存储引擎。
在基于语句的复制中,可能存在复制非确定性语句的问题。在决定某个语句是否适合基于语句的复制时,MySQL会确定是否能够保证使用基于语句的日志记录来复制该语句。如果MySQL无法做出这个保证,它会将该语句标记为潜在不可靠,并发出警告,语句可能不适合在语句格式中记录。
您可以通过使用MySQL的基于行的复制来避免这些问题。