include/master-slave.inc Warnings: Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. [connection master] ==== Test Without sql_mode=strict_trans_tables ==== [on master] create table t1 (n int not null primary key); [on slave] include/sync_slave_sql_with_master.inc insert into t1 values (1); [on master] insert into t1 values (1); insert into t1 values (2),(3); include/sync_slave_sql_with_master.inc [on slave] select * from t1 order by n; n 1 2 3 ==== Test With sql_mode=strict_trans_tables ==== insert into t1 values (7),(8); [on master] set sql_mode=strict_trans_tables; Warnings: Warning 3135 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release. insert into t1 values (7), (8), (9); [on slave] include/sync_slave_sql_with_master.inc select * from t1 order by n; n 1 2 3 7 8 include/check_slave_is_running.inc ==== Clean Up ==== drop table t1; include/sync_slave_sql_with_master.inc create table t1(a int primary key); insert into t1 values (1),(2); SET SQL_LOG_BIN=0; delete from t1; SET SQL_LOG_BIN=1; set sql_mode=strict_trans_tables; Warnings: Warning 3135 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release. insert into t1 values (1), (2), (3); [on slave] include/sync_slave_sql_with_master.inc select * from t1; a 1 2 include/check_slave_is_running.inc ==== Clean Up ==== drop table t1; include/sync_slave_sql_with_master.inc ==== Using Innodb ==== SET SQL_LOG_BIN=0; CREATE TABLE t1(id INT NOT NULL PRIMARY KEY, data INT) Engine=InnoDB; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `data` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci SET SQL_LOG_BIN=1; call mtr.add_suppression("Slave SQL.*Could not execute .*te_rows event on table test.t.; Duplicate entry.* Error_code: 1062"); CREATE TABLE t1(id INT NOT NULL PRIMARY KEY, data INT) Engine=InnoDB; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `data` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci INSERT INTO t1 VALUES(1, 1); INSERT INTO t1 VALUES(2, 1); INSERT INTO t1 VALUES(3, 1); INSERT INTO t1 VALUES(4, 1); SET SQL_LOG_BIN=0; DELETE FROM t1 WHERE id = 4; SET SQL_LOG_BIN=1; UPDATE t1 SET id= id + 3, data = 2; include/sync_slave_sql_with_master.inc **** We cannot execute a select as there are differences in the **** behavior between STMT and RBR. ==== Clean Up ==== DROP TABLE t1; include/sync_slave_sql_with_master.inc include/rpl_end.inc