InnoDB系统表空间定义规则

2022-12-02 19:31:05 浏览数 (1)

  • 1. InnoDB系统表空间定义规则
  • 2. 并行复制设置不当可能导致主从数据不一致

1. InnoDB系统表空间定义规则

修改 innodb_data_file_path 选项值可自定义InnoDB系统表空间设置,不过要注意 autoextendmax 属性只能放在最后一个文件,而不能放在前面的文件。

代码语言:javascript复制
The autoextend and max attributes can be used only for the data file that is specified last.

例如:

代码语言:javascript复制
# 这样是错的
innodb_data_file_path=ibdata1:12M:autoextend:max:500M;ibdata2:50M:autoextend:max:500M

# 这样是正确的
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend:max:500M

不过,随着undo表空间从系统表空间移出后,导致系统表空间疯狂膨胀的最大因素已不复存在,也就没什么必要定义太大了,一般128MB就足够应付绝大多数场景了。

2. 并行复制设置不当可能导致主从数据不一致

当并行复制设置为 DATABASE (slave_parallel_type = DATABASE)模式时,可能会导致主从数据不一致。

因为可能有跨 DATABASE 的外键约束,但是在从节点并行应用relay log时,会忽略这些约束条件,从而导致主从数据不一致。

因此,并行复制模式一定记得要设置为 LOGICAL_CLOCK。在MySQL 8.0.27前,默认值是 DATABASE,从8.0.27起默认值才改成 LOGICAL_CLOCK。

代码语言:javascript复制
There must be no cross-database constraints, as such constraints may be violated on the replica.

Enjoy MySQL :)


《深入浅出MGR》视频课程

戳此小程序即可直达B站

https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0

0 人点赞