Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 3.22.51.104
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
www /
server /
mysql /
mysql-test /
suite /
ndb_rpl /
t /
[ HOME SHELL ]
Name
Size
Permission
Action
disabled.def
919
B
-rw-r--r--
ndb_apply_status.frm
8.51
KB
-rw-r--r--
ndb_conflict_info.inc
3.79
KB
-rw-r--r--
ndb_conflict_info_epoch2.inc
3.2
KB
-rw-r--r--
ndb_conflict_info_epoch2_init....
1.33
KB
-rw-r--r--
ndb_conflict_info_init.inc
1.23
KB
-rw-r--r--
ndb_connect_to_primary.inc
160
B
-rw-r--r--
ndb_connect_to_secondary.inc
161
B
-rw-r--r--
ndb_dist_priv_check.inc
1.13
KB
-rw-r--r--
ndb_dist_priv_common.inc
6.89
KB
-rw-r--r--
ndb_dist_priv_default-master.o...
54
B
-rw-r--r--
ndb_dist_priv_default.test
975
B
-rw-r--r--
ndb_dist_priv_ndb-master.opt
54
B
-rw-r--r--
ndb_dist_priv_ndb.test
1.84
KB
-rw-r--r--
ndb_rpl_2innodb-master.opt
32
B
-rw-r--r--
ndb_rpl_2innodb-slave.opt
47
B
-rw-r--r--
ndb_rpl_2innodb.test
1.63
KB
-rw-r--r--
ndb_rpl_2multi_basic.inc
3.75
KB
-rw-r--r--
ndb_rpl_2multi_eng.inc
10.33
KB
-rw-r--r--
ndb_rpl_2myisam-master.opt
25
B
-rw-r--r--
ndb_rpl_2myisam-slave.opt
47
B
-rw-r--r--
ndb_rpl_2myisam.test
1.8
KB
-rw-r--r--
ndb_rpl_2ndb-slave.opt
58
B
-rw-r--r--
ndb_rpl_2ndb.test
858
B
-rw-r--r--
ndb_rpl_2other-slave.opt
45
B
-rw-r--r--
ndb_rpl_2other.test
2.18
KB
-rw-r--r--
ndb_rpl_add_column.test
3.81
KB
-rw-r--r--
ndb_rpl_apply_status-master.op...
28
B
-rw-r--r--
ndb_rpl_apply_status.test
1.5
KB
-rw-r--r--
ndb_rpl_auto_inc.test
4.18
KB
-rw-r--r--
ndb_rpl_bank.test
6.68
KB
-rw-r--r--
ndb_rpl_basic.test
11.65
KB
-rw-r--r--
ndb_rpl_batch.test
4.07
KB
-rw-r--r--
ndb_rpl_batch_handling.test
2.32
KB
-rw-r--r--
ndb_rpl_binlog_format_errors.t...
3.32
KB
-rw-r--r--
ndb_rpl_binlog_row_image_minim...
81
B
-rw-r--r--
ndb_rpl_binlog_row_image_minim...
293
B
-rw-r--r--
ndb_rpl_bitfield.test
8.11
KB
-rw-r--r--
ndb_rpl_blob.test
4.12
KB
-rw-r--r--
ndb_rpl_break_3_chain.cnf
1.59
KB
-rw-r--r--
ndb_rpl_break_3_chain.test
3.67
KB
-rw-r--r--
ndb_rpl_bug22045.test
2.4
KB
-rw-r--r--
ndb_rpl_bug_13440282.test
1.37
KB
-rw-r--r--
ndb_rpl_check_for_mixed.test
1014
B
-rw-r--r--
ndb_rpl_checksum.test
7.74
KB
-rw-r--r--
ndb_rpl_circular.test
4.42
KB
-rw-r--r--
ndb_rpl_circular_2ch.cnf
948
B
-rw-r--r--
ndb_rpl_circular_2ch.test
4.41
KB
-rw-r--r--
ndb_rpl_circular_2ch_rep_statu...
183
B
-rw-r--r--
ndb_rpl_circular_2ch_rep_statu...
11.9
KB
-rw-r--r--
ndb_rpl_circular_simplex.test
2.43
KB
-rw-r--r--
ndb_rpl_conflict_1.inc
5.15
KB
-rw-r--r--
ndb_rpl_conflict_basic.test
19.85
KB
-rw-r--r--
ndb_rpl_conflict_epoch.cnf
561
B
-rw-r--r--
ndb_rpl_conflict_epoch.inc
9.81
KB
-rw-r--r--
ndb_rpl_conflict_epoch.test
52
B
-rw-r--r--
ndb_rpl_conflict_epoch2.cnf
67
B
-rw-r--r--
ndb_rpl_conflict_epoch2.test
2.43
KB
-rw-r--r--
ndb_rpl_conflict_epoch2_extra....
37
B
-rw-r--r--
ndb_rpl_conflict_epoch2_extra....
31.45
KB
-rw-r--r--
ndb_rpl_conflict_epoch2_trans....
754
B
-rw-r--r--
ndb_rpl_conflict_epoch2_trans....
1.66
KB
-rw-r--r--
ndb_rpl_conflict_epoch_1.inc
18.75
KB
-rw-r--r--
ndb_rpl_conflict_epoch_ext.cnf
561
B
-rw-r--r--
ndb_rpl_conflict_epoch_ext.tes...
86
B
-rw-r--r--
ndb_rpl_conflict_epoch_extende...
868
B
-rw-r--r--
ndb_rpl_conflict_epoch_extende...
10.95
KB
-rw-r--r--
ndb_rpl_conflict_epoch_trans.c...
868
B
-rw-r--r--
ndb_rpl_conflict_epoch_trans.i...
27.77
KB
-rw-r--r--
ndb_rpl_conflict_epoch_trans.t...
58
B
-rw-r--r--
ndb_rpl_conflict_epoch_trans_e...
868
B
-rw-r--r--
ndb_rpl_conflict_epoch_trans_e...
92
B
-rw-r--r--
ndb_rpl_conflict_max-master.op...
28
B
-rw-r--r--
ndb_rpl_conflict_max.test
5.09
KB
-rw-r--r--
ndb_rpl_conflict_max_delete_wi...
28
B
-rw-r--r--
ndb_rpl_conflict_max_delete_wi...
4.92
KB
-rw-r--r--
ndb_rpl_conflict_old-master.op...
28
B
-rw-r--r--
ndb_rpl_conflict_old.test
5.11
KB
-rw-r--r--
ndb_rpl_conflict_read_tracking...
889
B
-rw-r--r--
ndb_rpl_conflict_read_tracking...
19.62
KB
-rw-r--r--
ndb_rpl_ctype_ucs2_def-master....
70
B
-rw-r--r--
ndb_rpl_ctype_ucs2_def.test
1.33
KB
-rw-r--r--
ndb_rpl_dd_advance.test
10.44
KB
-rw-r--r--
ndb_rpl_dd_basic.test
1.58
KB
-rw-r--r--
ndb_rpl_dd_partitions-master.o...
11
B
-rw-r--r--
ndb_rpl_dd_partitions-slave.op...
11
B
-rw-r--r--
ndb_rpl_dd_partitions.test
8.73
KB
-rw-r--r--
ndb_rpl_ddl_open_trans.test
360
B
-rw-r--r--
ndb_rpl_dist_priv.test
8.33
KB
-rw-r--r--
ndb_rpl_do_db-slave.opt
26
B
-rw-r--r--
ndb_rpl_do_db.test
1.73
KB
-rw-r--r--
ndb_rpl_do_table-slave.opt
29
B
-rw-r--r--
ndb_rpl_do_table.test
1.41
KB
-rw-r--r--
ndb_rpl_empty_epoch.test
1.12
KB
-rw-r--r--
ndb_rpl_gap_event-master.opt
24
B
-rw-r--r--
ndb_rpl_gap_event.test
2.26
KB
-rw-r--r--
ndb_rpl_get_binlog_events.inc
1.09
KB
-rw-r--r--
ndb_rpl_get_server_error_log.i...
553
B
-rw-r--r--
ndb_rpl_idempotent.test
5.72
KB
-rw-r--r--
ndb_rpl_ignore_db-master.opt
25
B
-rw-r--r--
ndb_rpl_ignore_db.test
1.27
KB
-rw-r--r--
ndb_rpl_init_rep_status.test
2.71
KB
-rw-r--r--
ndb_rpl_innodb2ndb-slave.opt
42
B
-rw-r--r--
ndb_rpl_innodb2ndb.test
714
B
-rw-r--r--
ndb_rpl_innodb_trans-slave.opt
25
B
-rw-r--r--
ndb_rpl_innodb_trans.test
1.54
KB
-rw-r--r--
ndb_rpl_last_conflict_epoch_va...
36
B
-rw-r--r--
ndb_rpl_last_conflict_epoch_va...
3.92
KB
-rw-r--r--
ndb_rpl_load.test
2.55
KB
-rw-r--r--
ndb_rpl_logging.test
3.96
KB
-rw-r--r--
ndb_rpl_mix_eng_trans.test
8.84
KB
-rw-r--r--
ndb_rpl_mix_innodb-master.opt
32
B
-rw-r--r--
ndb_rpl_mix_innodb.test
533
B
-rw-r--r--
ndb_rpl_mixed_tables-master.op...
13
B
-rw-r--r--
ndb_rpl_mixed_tables-slave.opt
61
B
-rw-r--r--
ndb_rpl_mixed_tables.test
8.35
KB
-rw-r--r--
ndb_rpl_multi.test
2.93
KB
-rw-r--r--
ndb_rpl_multi_binlog_update.cn...
1.83
KB
-rw-r--r--
ndb_rpl_multi_binlog_update.in...
6.78
KB
-rw-r--r--
ndb_rpl_multi_engine2.inc
2.56
KB
-rw-r--r--
ndb_rpl_multi_update2-slave.op...
42
B
-rw-r--r--
ndb_rpl_myisam2ndb-slave.opt
42
B
-rw-r--r--
ndb_rpl_myisam2ndb.test
890
B
-rw-r--r--
ndb_rpl_ndbapi-examples.test
996
B
-rw-r--r--
ndb_rpl_rep_error.test
14.2
KB
-rw-r--r--
ndb_rpl_rep_ignore-slave.opt
63
B
-rw-r--r--
ndb_rpl_rep_ignore.test
1.78
KB
-rw-r--r--
ndb_rpl_skip_gap_event-slave.o...
24
B
-rw-r--r--
ndb_rpl_skip_gap_event.test
2.39
KB
-rw-r--r--
ndb_rpl_slave_binlog_index.tes...
2.82
KB
-rw-r--r--
ndb_rpl_slave_conflict_role_va...
4.94
KB
-rw-r--r--
ndb_rpl_slave_lsu.cnf
57
B
-rw-r--r--
ndb_rpl_slave_lsu.test
5.87
KB
-rw-r--r--
ndb_rpl_slave_lsu_anyval.cnf
176
B
-rw-r--r--
ndb_rpl_slave_lsu_anyval.test
2.46
KB
-rw-r--r--
ndb_rpl_slave_replay.test
14.63
KB
-rw-r--r--
ndb_rpl_slave_restart.test
3.3
KB
-rw-r--r--
ndb_rpl_stm_innodb-master.opt
32
B
-rw-r--r--
ndb_rpl_stm_innodb.test
622
B
-rw-r--r--
ndb_rpl_sync.test
3.19
KB
-rw-r--r--
ndb_rpl_ui.test
2.29
KB
-rw-r--r--
ndb_rpl_ui2.test
957
B
-rw-r--r--
ndb_rpl_ui3.test
1.5
KB
-rw-r--r--
ndb_rpl_xxx_innodb.inc
6.25
KB
-rw-r--r--
ndb_slave_exec_info_init.inc
704
B
-rw-r--r--
ndb_sync_primary_to_secondary....
215
B
-rw-r--r--
ndb_sync_secondary_to_primary....
215
B
-rw-r--r--
ndb_trans_conflict_info.inc
1.71
KB
-rw-r--r--
ndb_trans_conflict_info_init.i...
1.5
KB
-rw-r--r--
ndb_trans_conflict_info_stable...
2.28
KB
-rw-r--r--
ndb_wait_for_zero_commit_ack_m...
569
B
-rw-r--r--
rpl_truncate_7ndb.test
1.78
KB
-rw-r--r--
rpl_truncate_7ndb_2.test
593
B
-rw-r--r--
select_ndb_apply_status.inc
505
B
-rw-r--r--
show_binlog_using_logname.inc
968
B
-rw-r--r--
show_mysqld_warnings.inc
780
B
-rw-r--r--
show_slave_max_replicated_epoc...
380
B
-rw-r--r--
wait_schema_logging.inc
2.33
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : ndb_rpl_conflict_epoch2_extra.test
# # Test engine native conflict resolution for ndb # NDB$EPOCH2() function # # Extra tests # --source include/have_ndb.inc --source include/have_binlog_format_mixed_or_row.inc --source suite/ndb_rpl/ndb_master-slave.inc --echo Setup circular replication --echo The circle is setup between Primary and Secondary --disable_query_log --disable_result_log --source suite/ndb_rpl/t/ndb_connect_to_primary.inc # Gather port + serverid select @primary_server_id:=(variable_value+0) from information_schema.global_variables where variable_name like 'server_id'; let $PRIMARY_SERVER_ID= query_get_value('select @primary_server_id as v',v,1); select @primary_server_port:=(variable_value+0) from information_schema.global_variables where variable_name like 'port'; let $PRIMARY_SERVER_PORT= query_get_value('select @primary_server_port as v', v,1); --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc # Gather port + serverid select @secondary_server_id:=(variable_value+0) from information_schema.global_variables where variable_name like 'server_id'; let $SECONDARY_SERVER_ID= query_get_value('select @secondary_server_id as v',v,1); select @secondary_server_port:=(variable_value+0) from information_schema.global_variables where variable_name like 'port'; let $SECONDARY_SERVER_PORT= query_get_value('select @secondary_server_port as v', v,1); # Now set it up # Stop Slave @ Secondary STOP SLAVE; # Clear Secondary Binlog RESET MASTER; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc # Stop Slave @ Primary STOP SLAVE; # Clear Primary Binlog RESET MASTER; --eval CHANGE MASTER TO master_host="127.0.0.1",master_port=$SECONDARY_SERVER_PORT,master_user="root" # Start Primary replicating from Secondary START SLAVE; --enable_query_log --enable_result_log --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --disable_query_log --disable_result_log --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --eval CHANGE MASTER TO master_host="127.0.0.1",master_port=$PRIMARY_SERVER_PORT,master_user="root" # Start Secondary replicating from Primary START SLAVE; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --enable_query_log --enable_result_log --echo Setup ndb_replication and t1$EX exceptions table --disable_warnings --disable_query_log drop table if exists mysql.ndb_replication; CREATE TABLE mysql.ndb_replication (db VARBINARY(63), table_name VARBINARY(63), server_id INT UNSIGNED, binlog_type INT UNSIGNED, conflict_fn VARBINARY(128), PRIMARY KEY USING HASH (db,table_name,server_id)) ENGINE=NDB PARTITION BY KEY(db,table_name); --enable_warnings --enable_query_log --echo Populate ndb_replication table --disable_query_log eval replace into mysql.ndb_replication values ("test", "t1", 0, 7, "NDB\$EPOCH2()"); --enable_query_log create table test.t1$EX( ndb$server_id int unsigned, ndb$master_server_id int unsigned, ndb$master_epoch bigint unsigned, ndb$count int unsigned, k int not null, v$old int, v$new int, c$old varchar(2000), c$new varchar(2000), ndb$op_type enum('write_row','update_row', 'delete_row') not null, ndb$cft_cause enum('row_does_not_exist','row_already_exists','data_in_conflict','trans_in_conflict') not null, primary key(ndb$server_id, ndb$master_server_id, ndb$master_epoch, ndb$count)) engine ndb; create table test.t1 ( k int primary key, v int, c varchar(2000)) engine=ndb; --echo Setup conflict roles --echo -------------------- --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; set global ndb_slave_conflict_role="PRIMARY"; START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; set global ndb_slave_conflict_role="SECONDARY"; START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Create some initial data --echo ------------------------ insert into test.t1 values (1,10, "Swimming"), (2,20, "Cycling"), (3,30, "Running"), (4,40, "Triathlon"); --let loop_count=4 # Loop over tests, with different roles while ($loop_count) { --echo Content on PRIMARY select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Content on SECONDARY select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Basic delete-delete cases --echo ------------------------- --echo Stop Slave on SECONDARY --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; --echo Delete row 3 on PRIMARY --source suite/ndb_rpl/t/ndb_connect_to_primary.inc delete from t1 where k=3; --echo Delete row 3 on SECONDARY --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc delete from t1 where k=3; --echo Insert replacement row on SECONDARY --echo This is likely to go in the same SECONDARY epoch transaction # TODO Variant where epoch boundary is forced here. insert into t1 values (3,31, "Judo"); --echo Wait for SECONDARY change to apply on PRIMARY --echo Expect it to apply correctly here as the PRIMARY --echo has no track of its outstanding DELETE --echo --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo PRIMARY content select * from test.t1 order by k; --echo PRIMARY counters --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --echo Re-enable SECONDARY Slave, and check state there --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo SECONDARY content select * from test.t1 order by k; --echo SECONDARY counters --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --echo Look at PRIMARY exceptions table content --source suite/ndb_rpl/t/ndb_connect_to_primary.inc SELECT k, v$old, v$new, c$old, c$new, ndb$op_type, ndb$cft_cause from test.t1$EX order by ndb$count; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Now check behaviour of Secondary when reflected ops should not be applied --echo ------------------------------------------------------------------------- --echo The interpreted program attached to reflected ops at the Secondary slave --echo is intended to avoid an 'old' reflected op overwriting a 'new' locally --echo inserted row value. The end result should still be the same (the new --echo value will be applied later, but we should avoid having every modification --echo made at the secondary applied twice with some time lag as that will cause --echo chaos for Secondary applications) --echo Stop Slave on SECONDARY STOP SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Stop Slave on PRIMARY STOP SLAVE; --echo Delete row 4 on PRIMARY DELETE from test.t1 where k=4; --echo Primary state select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Delete row 4 on SECONDARY DELETE from test.t1 where k=4; --echo Follow with INSERT on SECONDARY INSERT into test.t1 values (4, 440, "Fell running"); --echo Secondary state : select * from test.t1 order by k; --echo Allow Primary change to propagate to Secondary --echo (Which will delete the new, updated row on the Secondary) START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Examine data on the SECONDARY - row 4 deleted select * from test.t1 order by k; --echo Now allow the SECONDARY Binlog to propagate back to the PRIMARY --echo while blocking the return path... STOP SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Examine data on the PRIMARY - row 4 exists --echo as the PRIMARY's delete is not applied if present select * from test.t1 order by k; --echo Now stop the PRIMARY Slave - changes from the --echo SECONDARY cannot now reach the PRIMARY STOP SLAVE; --echo Now go back to the SECONDARY and create a new --echo row version --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo First show there is no row 4 on the SECONDARY select * from test.t1 order by k; INSERT into test.t1 values (4, 4444, "Cyclo-cross"); select * from test.t1 order by k; --echo Now allow the Binlog of the PRIMARY (containing the --echo reflected DELETE + Insert (4, 440, "Fell running") --echo to be applied locally --echo The SECONDARY should reject this application --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Examine data on the SECONDARY : Row 4 should be untouched --echo (4, 4444, "Cyclo-cross"). --echo Insert will be rejected as row already exists. select * from test.t1 order by k; --echo Show operation counter diff on the SECONDARY --echo Should show reflected op prepared + rejected. --echo Should show equal, non-zero reflected op prep+reject counts --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Ok, now allow SECONDARY Binlog to propagate to Primary --echo and realign it --source suite/ndb_rpl/t/ndb_connect_to_primary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Show data on PRIMARY select * from test.t1 order by k; --echo Allow reflection back to the SECONDARY... --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Now show same for UPDATE, then DELETE --echo ------------------------------------- --echo First stop SLAVEs --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; --echo Now perform UPDATE 1 at Secondary UPDATE test.t1 SET c="Bathing" where k=1; --echo Show data on Secondary select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Data on Primary select * from test.t1 order by k; --echo Now propagate to Primary... START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Updated data on Primary select * from test.t1 order by k; --echo Now stop Primary slave to stop further propagation STOP SLAVE; --echo Now make update 2 on Secondary --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc update test.t1 SET c="Paddling" where k=1; --echo Data on Secondary select * from test.t1 order by k; --echo Now allow Primary binlog, containing reflected update op --echo setting column c of row 1 to "Bathing" to be applied --echo it should be rejected by the Secondary, and increment --echo the defined + rejected counts START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Data on Secondary (should be unchanged) select * from test.t1 order by k; --echo Conflict counts on Secondary (incremented preped + rejected) --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Now allow sync... --source suite/ndb_rpl/t/ndb_connect_to_primary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --echo Allowing the sync should have allowed the second update --echo (To 'Paddling') to be reflected, and rejected --echo Data on Secondary (should be unchanged) select * from test.t1 order by k; --echo Conflict counts on Secondary (incremented preped + rejected) --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --echo Show same for DELETE --echo -------------------- --echo First stop SLAVEs --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; --echo Now perform DELETE of row 2 at Secondary DELETE from test.t1 where k=2; --echo Show data on Secondary select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Data on Primary select * from test.t1 order by k; --echo Now propagate to Primary... START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Updated data on Primary select * from test.t1 order by k; --echo Now stop Primary slave to stop further propagation STOP SLAVE; --echo Now make a further change on Secondary --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc INSERT into test.t1 VALUES (2, 22, "Rock-climbing"); --echo Data on Secondary select * from test.t1 order by k; --echo Now allow Primary binlog, containing reflected delete op --echo on row 2 to be applied it should be rejected by the --echo Secondary, and increment the defined + rejected counts START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Data on Secondary (should be unchanged) select * from test.t1 order by k; --echo Conflict counts on Secondary (incremented preped + rejected) --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Now allow sync... --source suite/ndb_rpl/t/ndb_connect_to_primary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --echo Allowing the sync should have allowed the insert --echo (To 'Rock-climbing') to be reflected, and rejected --echo Data on Secondary (should be unchanged) select * from test.t1 order by k; --echo Conflict counts on Secondary (incremented preped + rejected) --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Primary insert-delete obscures Secondary insert problem --echo ------------------------------------------------------- --echo Stop slaves in both directions --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Start with non-existent row (5, 50, "Disco dancing") on primary insert into test.t1 values (5, 50, "Disco dancing"); select * from test.t1 order by k; --echo Reset conflict counters on Primary --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --echo Empty exceptions table on Primary DELETE from test.t1$EX; --echo Insert non-existent row (5, 500, "Line dancing") on secondary --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc insert into test.t1 values (5, 500, "Line dancing"); select * from test.t1 order by k; --echo Reset conflict counters on Secondary --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --echo Allow Primary insert to trample Secondary insert. --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc select * from test.t1 order by k; --echo Secondary now updates the row set by the Primary update test.t1 set v=v+5 where k=5; select * from test.t1 order by k; --echo Stop Secondary Slave again STOP SLAVE; --echo Now delete row from the primary --source suite/ndb_rpl/t/ndb_connect_to_primary.inc delete from test.t1 where k=5; select * from test.t1 order by k; --echo Now allow Secondary writes to propagate to Primary START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Expect that the Secondary insert succeeded as no row existed --echo on arrival, but then the secondary row was trampled by the --echo primary, and then a secondary update was applied... --echo So what do we see at the Primary? select * from test.t1 order by k; --echo Show primary conflict info counter diff - expect nothing. --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Show primary's exceptions table content - expect there to be none. SELECT k, v$old, v$new, c$old, c$new, ndb$op_type, ndb$cft_cause from test.t1$EX order by ndb$count; # TODO : Finish + cleanup --echo Now allow Primary changes to propagate back to Secondary --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Look at Secondary content select * from test.t1 order by k; --echo Look at Secondary conflict counters diff - showing --echo reflected ops applied on Secondary --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc select * from test.t1 order by k; # End of loop, if relevant, swap roles... --dec $loop_count if ($loop_count) { --echo Iteration $loop_count # Switch primary and secondary roles # TODO, various ways to do this etc, just one for now. --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; # Reset exceptions table + counters on old primary DELETE FROM test.t1$EX; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc # Switch Primary -> Secondary set global ndb_slave_conflict_role="SECONDARY"; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; # Reset exceptions table + counters on old primary DELETE FROM test.t1$EX; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc # Switch Secondary -> Primary set global ndb_slave_conflict_role="PRIMARY"; # TODO : Make it work for more iterations that 1 + 0 let $switchroles=query_get_value('SELECT $loop_count %2 as odd', odd, 1); if ($switchroles) { --echo Setup S1 P2 # Switch meaning of include scripts --let $SWITCH_CLUSTER_ROLES=1 } if (!$switchroles) { --echo Setup P1 S2 # Switch meaning of include scripts --let $SWITCH_CLUSTER_ROLES=0 } # Reconnect to aid clarity --source suite/ndb_rpl/t/ndb_connect_to_primary.inc # Now reset t1 to initial state... delete from test.t1; insert into test.t1 values (1,10, "Swimming"), (2,20, "Cycling"), (3,30, "Running"), (4,40, "Triathlon"); # Now restart slaves START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc # Now two way sync --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc } } # End of roles loop --echo Now test SCR_PASS --echo ----------------- --echo SCR_PASS is a slave conflict role which should act as a --echo filterless pass-through of replication events, with no --echo conflict detection etc. The idea is that it might be --echo useful for failover situations etc. --echo Here we test that it does not detect conflicts, and --echo allows divergence etc. --echo Lets set it up --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; set global ndb_slave_conflict_role="NONE"; set global ndb_slave_conflict_role="PASS"; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; set global ndb_slave_conflict_role="NONE"; set global ndb_slave_conflict_role="PASS"; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Initial data on Primary select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Initial data on Secondary select * from test.t1 order by k; --echo STOP SLAVE on Secondary STOP SLAVE; --echo Create a conflict between two updates --echo First at the primary --source suite/ndb_rpl/t/ndb_connect_to_primary.inc update test.t1 set c="Capoiera" where c="Judo"; select * from test.t1 order by k; --disable_query_log --disable_result_log SHOW BINLOG EVENTS; # Force end-of-epoch --enable_result_log --enable_query_log --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Now at the secondary update test.t1 set c="Wing chun" where c="Judo"; select * from test.t1 order by k; --disable_query_log --disable_result_log SHOW BINLOG EVENTS; # Force end-of-epoch --enable_result_log --enable_query_log --echo Now restart the secondary slave and allow propagation START SLAVE; --echo Synchronise --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --echo Now look at primary content and conflict counters --source suite/ndb_rpl/t/ndb_connect_to_primary.inc select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Now look at secondary content and conflict counters --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Now look at how row existence errors are handled --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo PRIMARY #--source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc insert into test.t1 values (6, 60, "Cigars"); insert into test.t1 values (7, 70, "Whisky"); --echo Synchronise --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --echo Cause misalignment via 'secret' deletes. --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo PRIMARY #--source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc set sql_log_bin=0; delete from test.t1 where k=7; set sql_log_bin=1; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo SECONDARY set sql_log_bin=0; delete from test.t1 where k=6; set sql_log_bin=1; --echo Synchronise --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --echo Show start state --echo Primary : --source suite/ndb_rpl/t/ndb_connect_to_primary.inc select * from test.t1 order by k; #--source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Secondary : --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc select * from test.t1 order by k; --echo Now insert a row on the Secondary which already --echo exists on the Primary insert into test.t1 values (6,66, "Snuff"); select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Show that the primary was overwritten with the Secondary's --echo value, and no conflict reported. select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Same for a Secondary sourced update of a row --echo which doesn't exist on the primary. --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc update test.t1 set c="Tawny Port" where c="Whisky"; select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Show state on Primary. No row, but also no conflicts --echo or slave errors. select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Now show a row delete from the secondary for --echo a row which does not exist on the primary --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc delete from test.t1 where k=7; select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Show state on Primary. No conflicts or slave errors select * from test.t1 order by k; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Remove inconsistencies from the table delete from test.t1 where k in (3, 6); --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; set global ndb_slave_conflict_role="NONE"; set global ndb_slave_conflict_role="PRIMARY"; START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; set global ndb_slave_conflict_role="NONE"; set global ndb_slave_conflict_role="SECONDARY"; START SLAVE; --echo Test ndb_conflict_last_stable_epoch --echo This status var is intended to help in situations --echo where there is an unexpected PRIMARY failure, and --echo the SECONDARY can determine that there were in-flight --echo realignment ops (conflicts), based on --echo ndb_conflict_last_conflict_epoch > --echo ndb_slave_max_replicated_epoch --echo ndb_conflict_last_stable_epoch will contain the --echo last (highest) SECONDARY epoch which is known --echo to have replicated via the PRIMARY with no --echo conflicts being discovered. This is then --echo a consistent baseline from which to potentially --echo resolve any partial realignments. --echo How to resolve them is an exercise left for --echo the reader :) --echo Testcase to show the variable in action --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Stop SECONDARY slave STOP SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Change on Primary, won't propagate to Secondary as SLAVE is stopped. update test.t1 set c="Loafing" where k=1; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2_init.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Conflicting change on Secondary update test.t1 set c="Idling" where k=1; --source include/wait_for_ndb_committed_to_binlog.inc --echo Add some epochs after the conflicting modification let $e_count=10; while ($e_count) { eval insert into t1 values ($e_count + 10, 10, "Sequencing"); dec $e_count; --source include/wait_for_ndb_committed_to_binlog.inc } --echo Now look at Secondary values, should have --echo Max_Replicated_Epoch == Last_Stable_Epoch --disable_query_log --disable_result_log SELECT @ndb_last_conflict_epoch:= VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFLICT_LAST_CONFLICT_EPOCH"; SELECT @ndb_last_stable_epoch:=VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFLICT_LAST_STABLE_EPOCH"; SELECT @ndb_max_replicated_epoch:=VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_SLAVE_MAX_REPLICATED_EPOCH"; --enable_result_log --enable_query_log # SELECT @ndb_last_conflict_epoch, @ndb_last_stable_epoch, @ndb_max_replicated_epoch; --echo Expect 1,0,1 - all is well. SELECT (@ndb_last_conflict_epoch+0) <= (@ndb_max_replicated_epoch+0) AS SECONDARY_IS_CURRENTLY_CONFLICT_FREE; SELECT (@ndb_last_stable_epoch+0) < (@ndb_max_replicated_epoch+0) AS STABLE_EPOCH_LAGS_MAX_REPLICATED_EPOCH; SELECT (@ndb_last_stable_epoch+0) = (@ndb_max_replicated_epoch+0) AS STABLE_EPOCH_IS_MAX_REPLICATED_EPOCH; --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --echo Stop PRIMARY slave just to have control STOP SLAVE; --source suite/ndb_rpl/t/ndb_conflict_info_epoch2.inc --echo Now Start SECONDARY slave, to get conflict realignment --echo and following SECONDARY epochs re-applied on the SEOCNDARY --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Now look at variables on the SECONDARY again --disable_query_log --disable_result_log SELECT @ndb_last_conflict_epoch:= VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFLICT_LAST_CONFLICT_EPOCH"; SELECT @ndb_last_stable_epoch:=VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFLICT_LAST_STABLE_EPOCH"; SELECT @ndb_max_replicated_epoch:=VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_SLAVE_MAX_REPLICATED_EPOCH"; --enable_result_log --enable_query_log #SELECT @ndb_last_conflict_epoch, @ndb_last_stable_epoch, @ndb_max_replicated_epoch; --echo Expect 0,1,0 - Conflict handling open, stable epoch is old, most recent --echo replicated epochs are not yet stable. SELECT (@ndb_last_conflict_epoch+0) <= (@ndb_max_replicated_epoch+0) AS SECONDARY_IS_CURRENTLY_CONFLICT_FREE; SELECT (@ndb_last_stable_epoch+0) < (@ndb_max_replicated_epoch+0) AS STABLE_EPOCH_LAGS_MAX_REPLICATED_EPOCH; SELECT (@ndb_last_stable_epoch+0) = (@ndb_max_replicated_epoch+0) AS STABLE_EPOCH_IS_MAX_REPLICATED_EPOCH; --echo Now make a SECONDARY change and allow it to flow --source suite/ndb_rpl/t/ndb_connect_to_primary.inc START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc delete from test.t1 where k >=10; --source suite/ndb_rpl/t/ndb_sync_secondary_to_primary.inc --source suite/ndb_rpl/t/ndb_connect_to_primary.inc --source suite/ndb_rpl/t/ndb_sync_primary_to_secondary.inc --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc --echo Now look at variables on the SECONDARY for third time --disable_query_log --disable_result_log SELECT @ndb_last_conflict_epoch:= VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFLICT_LAST_CONFLICT_EPOCH"; SELECT @ndb_last_stable_epoch:=VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFLICT_LAST_STABLE_EPOCH"; SELECT @ndb_max_replicated_epoch:=VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_SLAVE_MAX_REPLICATED_EPOCH"; --enable_result_log --enable_query_log #SELECT @ndb_last_conflict_epoch, @ndb_last_stable_epoch, @ndb_max_replicated_epoch; --echo Expect 1,0,1 - stability has returned SELECT (@ndb_last_conflict_epoch+0) <= (@ndb_max_replicated_epoch+0) AS SECONDARY_IS_CURRENTLY_CONFLICT_FREE; SELECT (@ndb_last_stable_epoch+0) < (@ndb_max_replicated_epoch+0) AS STABLE_EPOCH_LAGS_MAX_REPLICATED_EPOCH; SELECT (@ndb_last_stable_epoch+0) = (@ndb_max_replicated_epoch+0) AS STABLE_EPOCH_IS_MAX_REPLICATED_EPOCH; --echo Done. --echo Cleanup conflict roles --echo -------------------- --source suite/ndb_rpl/t/ndb_connect_to_primary.inc STOP SLAVE; set global ndb_slave_conflict_role="NONE"; START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_secondary.inc STOP SLAVE; set global ndb_slave_conflict_role="NONE"; START SLAVE; --source suite/ndb_rpl/t/ndb_connect_to_primary.inc # Note use of fixed connection names here. --connection master stop slave; reset slave; drop table test.t1; drop table test.t1$EX; drop table mysql.ndb_replication; --sync_slave_with_master slave --source include/rpl_end.inc
Close