- 1. InnoDB系统表空间定义规则
- 2. 并行复制设置不当可能导致主从数据不一致
1. InnoDB系统表空间定义规则
修改 innodb_data_file_path
选项值可自定义InnoDB系统表空间设置,不过要注意 autoextend
和 max
属性只能放在最后一个文件,而不能放在前面的文件。
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