CREATE SCHEMA account;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL DEFAULT NULL,
`address` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE SCHEMA data;
CREATE TABLE `project` (
`id` INT(11) NOT NULL,
`account_user_id` INT(11) NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_user` (`user_id`),
CONSTRAINT `fk_user` FOREIGN KEY (`account_user_id`) REFERENCES
`accounts`.`user` (`id`)
) ENGINE=InnoDB;
行ベースのレプリケーション(RBR)スレーブがありますが、これには「アカウント」スキーマを含めないでください。 replicate_wild_ignore_table 'accounts'。 '%'を使用して、 'data'スキーマのみが存在するようにします。
唯一の問題は、 "Error_code:1452; handler error HA_ERR_NO_REFERENCED_ROW;"を使用してdata.projectに挿入するとレプリケーションが中断することです。スレーブにaccounts.user.idが存在しないためです。
この場合、スレーブで「set global set foreign_key_checks = 0 "を永続的に設定することは、適切な修正のようです。私の考えは:
私の考えに欠陥はありますか?誰かがこれを試しましたか?私は洞察をいただければ幸いです。
スレーブスキップエラーを設定= 1452
マスターとスレーブ-外部キー制約を削除
スレーブ-外部キー制約を削除する
自分の質問に答えるために、スレーブで「set global foreign_key_checks = 0」を試しました。これは機能しませんでした。私のRBR binlogに対して生成されたステートメントは、foreign_key_checks = 1を明示的に設定したためです。
したがって、私はオプション3を試すことができます。