[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.117.101.7: ~ $
#
# Test engine native conflict resolution for ndb
#   NDB$EPOCH() function
#
#
--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

--connection slave
RESET MASTER;
select @slave_server_id:=(variable_value+0)
       from information_schema.global_variables
       where variable_name like 'server_id';
let $SLAVE_SERVER_ID= query_get_value('select @slave_server_id as v',v,1);

--connection master
--replace_result $SLAVE_MYPORT SLAVE_PORT
--eval CHANGE MASTER TO master_host="127.0.0.1",master_port=$SLAVE_MYPORT,master_user="root"
START SLAVE;
select @master_server_id:=(variable_value+0)
       from information_schema.global_variables
       where variable_name like 'server_id';
let $MASTER_SERVER_ID= query_get_value('select @master_server_id as v',v,1);

--echo Setup ndb_replication and t1$EX exceptions table

--disable_warnings
--disable_query_log
--connection master
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 as necessary
--echo -- 0 extra gci bits
eval replace into mysql.ndb_replication values
  ("test", "t1", $SLAVE_SERVER_ID, 7, NULL),
  ("test", "t1", $MASTER_SERVER_ID, 7, "NDB\$EPOCH(0)");

--source suite/ndb_rpl/t/ndb_rpl_conflict_epoch_1.inc

--echo Populate ndb_replication table as necessary
--echo -- 1 extra gci bits
eval replace into mysql.ndb_replication values
  ("test", "t1", $SLAVE_SERVER_ID, 7, NULL),
  ("test", "t1", $MASTER_SERVER_ID, 7, "NDB\$EPOCH(1)");

--source suite/ndb_rpl/t/ndb_rpl_conflict_epoch_1.inc

--echo Populate ndb_replication table as necessary
--echo -- 31 extra gci bits
eval replace into mysql.ndb_replication values
  ("test", "t1", $SLAVE_SERVER_ID, 7, NULL),
  ("test", "t1", $MASTER_SERVER_ID, 7, "NDB\$EPOCH(31)");

--source suite/ndb_rpl/t/ndb_rpl_conflict_epoch_1.inc

--echo Populate ndb_replication table as necessary
--echo -- Default extra Gci bits
eval replace into mysql.ndb_replication values
  ("test", "t1", $SLAVE_SERVER_ID, 7, NULL),
  ("test", "t1", $MASTER_SERVER_ID, 7, "NDB\$EPOCH()");

--source suite/ndb_rpl/t/ndb_rpl_conflict_epoch_1.inc

--source suite/ndb_rpl/t/ndb_conflict_info_init.inc

--echo Now test batched conflict detection/handling
--connection master

create table test.t1 (
  a int primary key,
  b int,
  c varchar(2000)) engine=ndb;

--sync_slave_with_master slave
--connection slave
--echo -- Stop replication from Primary -> Secondary
stop slave;
--connection master
--echo -- Insert a row on Primary
insert into test.t1 values (1,1,repeat('B', 2000));

--connection slave
--echo -- Generate a large batch of inserts with early + late conflicts
delimiter %;

create procedure test.doit (rows int)
begin
  set @x = 0;
  START TRANSACTION;
    repeat
      insert into test.t1 values (@x, @x, repeat('B', 2000));
      set @x = @x + 1;
    until @x = rows
    end repeat;
  COMMIT;
  START TRANSACTION;
    update test.t1 set b=999, c=repeat('E',2000) where a=1;
  COMMIT;
  START TRANSACTION;
    delete from test.t1 where a=1;
  COMMIT;
  START TRANSACTION;
    insert into test.t1 values (1,1,'A');
  COMMIT;
end%

delimiter ;%

call test.doit(100);

drop procedure test.doit;

--sync_slave_with_master master
--connection master

--echo -- Look at Primary status, expect 4 conflicts
--source suite/ndb_rpl/t/ndb_conflict_info.inc

--connection slave
start slave;

--connection master
--echo -- Look at Seconday row
select a,b,sha1(c) from test.t1 where a=1;

--sync_slave_with_master slave
--echo -- Check it's the same on the Secondary
select a,b,sha1(c) from test.t1 where a=1;

--connection master
--echo Test batching of DELETE vs DELETE with following INSERT
--connection master
delete from test.t1;
insert into test.t1 values (1, 1, "Ma Brows");
--sync_slave_with_master slave
--connection slave
--sync_slave_with_master master
--connection master
--echo -- Stop Slave in both directions
stop slave;
--connection slave
stop slave;
--connection master
--echo -- Delete row on Primary Cluster
delete from test.t1 where a=1;

--connection slave
--echo -- Delete row on Secondary Cluster, followed by Insert in later 'batch'
delimiter %;

create procedure test.doit (rows int)
begin
  set @x = 2;
  START TRANSACTION;
    delete from test.t1 where a=1;
    repeat
      insert into test.t1 values (@x, @x, repeat('B', 2000));
      set @x = @x + 1;
    until @x = (rows + 2)
    end repeat;
  COMMIT;
  START TRANSACTION;
    insert into test.t1 values (1, 1, 'Malleny arms');
  COMMIT;
end%

delimiter ;%

call test.doit(200);

--echo -- Restart slave on Primary Cluster
--connection master
# TODO : Reenable with new slave counts
#--source suite/ndb_rpl/include/ndb_init_slave_counts.inc
start slave;

--connection slave
--sync_slave_with_master master

--connection master
# TODO : Reenable with new slave counts
#--disable_result_log
# Don't include results as they vary depending on epoch boundaries
#--source suite/ndb_rpl/include/ndb_slave_counts.inc
#--enable_result_log
#--echo -- Verify that batching occurred when replicating the above
#select (@ndb_slave_execute_count - @ndb_slave_commit_count) > 1;
--echo -- Show data on Primary Cluster (should have row inserted on Secondary)
select * from test.t1 where a=1;

--echo -- Show data on Secondary Cluster (should have row inserted on Secondary)
--connection slave
select * from test.t1 where a=1;

--echo --Restart slave on Secondary Cluster
start slave;
--connection master
--sync_slave_with_master slave
--connection slave

--echo -- Show data on Secondary Cluster (should now be missing)
--echo    Clusters are diverged as expected with delete vs delete conflict
--echo    followed closely by Insert
--connection slave
select * from test.t1 where a=1;

--echo -- Force wait for master to be in-sync with slave
--echo    To avoid race between DML and table drop
flush logs;
--sync_slave_with_master master

--connection master
drop procedure test.doit;
drop table test.t1;

delete from mysql.ndb_replication;
insert into mysql.ndb_replication values
  ("test", "t3", 0, 7, "NDB\$EPOCH(32)"),
  ("test", "t4", 0, 7, "NDB\$EPOCH(-1)");

--error 1005
create table test.t3 (a int primary key) engine=ndb;
show warnings;

--error 1005
create table test.t4 (a int primary key) engine=ndb;
show warnings;

--echo -- Force sync before dropping table to avoid race
--connection master
flush logs;
--sync_slave_with_master slave
--connection slave
flush logs;
--sync_slave_with_master master

--connection master
drop table mysql.ndb_replication;

--sync_slave_with_master slave

--echo -- Attempt to get system back in pre-test state
--connection master
stop slave;
reset slave;

--source include/rpl_end.inc

Filemanager

Name Type Size Permission Actions
disabled.def File 688 B 0644
ndb_apply_status.frm File 8.51 KB 0644
ndb_conflict_info.inc File 1013 B 0644
ndb_conflict_info_init.inc File 692 B 0644
ndb_rpl_2innodb-master.opt File 32 B 0644
ndb_rpl_2innodb-slave.opt File 56 B 0644
ndb_rpl_2innodb.test File 1.63 KB 0644
ndb_rpl_2multi_basic.inc File 3.42 KB 0644
ndb_rpl_2multi_eng.inc File 10.33 KB 0644
ndb_rpl_2myisam-master.opt File 25 B 0644
ndb_rpl_2myisam-slave.opt File 47 B 0644
ndb_rpl_2myisam.test File 1.6 KB 0644
ndb_rpl_2ndb-slave.opt File 58 B 0644
ndb_rpl_2ndb.test File 648 B 0644
ndb_rpl_2other-slave.opt File 54 B 0644
ndb_rpl_2other.test File 2.18 KB 0644
ndb_rpl_add_column.test File 3.56 KB 0644
ndb_rpl_apply_status-master.opt File 28 B 0644
ndb_rpl_apply_status.test File 1.29 KB 0644
ndb_rpl_auto_inc.test File 3.98 KB 0644
ndb_rpl_bank.test File 6.47 KB 0644
ndb_rpl_basic.test File 11.29 KB 0644
ndb_rpl_binlog_format_errors.test File 3.26 KB 0644
ndb_rpl_bitfield.test File 7.9 KB 0644
ndb_rpl_blob.test File 3.91 KB 0644
ndb_rpl_break_3_chain.cnf File 1.71 KB 0644
ndb_rpl_break_3_chain.test File 3.53 KB 0644
ndb_rpl_bug22045.test File 2.2 KB 0644
ndb_rpl_check_for_mixed.test File 804 B 0644
ndb_rpl_circular.test File 4.21 KB 0644
ndb_rpl_circular_2ch.cnf File 878 B 0644
ndb_rpl_circular_2ch.test File 4.21 KB 0644
ndb_rpl_circular_2ch_rep_status.cnf File 183 B 0644
ndb_rpl_circular_2ch_rep_status.test File 9.01 KB 0644
ndb_rpl_circular_simplex.test File 2.22 KB 0644
ndb_rpl_conflict.test File 9.99 KB 0644
ndb_rpl_conflict_1.inc File 5.15 KB 0644
ndb_rpl_conflict_epoch.cnf File 561 B 0644
ndb_rpl_conflict_epoch.test File 6.86 KB 0644
ndb_rpl_conflict_epoch_1.inc File 12.36 KB 0644
ndb_rpl_conflict_max-master.opt File 28 B 0644
ndb_rpl_conflict_max.test File 2.83 KB 0644
ndb_rpl_conflict_max_delete_win-master.opt File 28 B 0644
ndb_rpl_conflict_max_delete_win.test File 2.86 KB 0644
ndb_rpl_conflict_old-master.opt File 28 B 0644
ndb_rpl_conflict_old.test File 2.83 KB 0644
ndb_rpl_ctype_ucs2_def-master.opt File 70 B 0644
ndb_rpl_ctype_ucs2_def.test File 1.13 KB 0644
ndb_rpl_dd_advance.test File 10.04 KB 0644
ndb_rpl_dd_basic.test File 1.38 KB 0644
ndb_rpl_dd_partitions-master.opt File 11 B 0644
ndb_rpl_dd_partitions-slave.opt File 11 B 0644
ndb_rpl_dd_partitions.test File 8.53 KB 0644
ndb_rpl_do_db-slave.opt File 26 B 0644
ndb_rpl_do_db.test File 1.52 KB 0644
ndb_rpl_do_table-slave.opt File 29 B 0644
ndb_rpl_do_table.test File 1.21 KB 0644
ndb_rpl_empty_epoch.test File 934 B 0644
ndb_rpl_gap_event-master.opt File 24 B 0644
ndb_rpl_gap_event.test File 1.52 KB 0644
ndb_rpl_get_binlog_events.inc File 1.09 KB 0644
ndb_rpl_idempotent.test File 2.95 KB 0644
ndb_rpl_ignore_db-master.opt File 25 B 0644
ndb_rpl_ignore_db.test File 1.07 KB 0644
ndb_rpl_init_rep_status.test File 2.95 KB 0644
ndb_rpl_innodb2ndb-master.opt File 9 B 0644
ndb_rpl_innodb2ndb-slave.opt File 42 B 0644
ndb_rpl_innodb2ndb.test File 714 B 0644
ndb_rpl_innodb_trans-slave.opt File 34 B 0644
ndb_rpl_innodb_trans.test File 1.54 KB 0644
ndb_rpl_load.test File 2.34 KB 0644
ndb_rpl_logging.test File 3.76 KB 0644
ndb_rpl_mix_eng_trans-master.opt File 9 B 0644
ndb_rpl_mix_eng_trans-slave.opt File 9 B 0644
ndb_rpl_mix_eng_trans.test File 8.84 KB 0644
ndb_rpl_mix_innodb-master.opt File 41 B 0644
ndb_rpl_mix_innodb.test File 533 B 0644
ndb_rpl_mixed_tables-master.opt File 22 B 0644
ndb_rpl_mixed_tables-slave.opt File 70 B 0644
ndb_rpl_mixed_tables.test File 8.35 KB 0644
ndb_rpl_multi.test File 2.68 KB 0644
ndb_rpl_multi_binlog_update.cnf File 1.85 KB 0644
ndb_rpl_multi_binlog_update.inc File 6.78 KB 0644
ndb_rpl_multi_update2-slave.opt File 42 B 0644
ndb_rpl_myisam2ndb-slave.opt File 42 B 0644
ndb_rpl_myisam2ndb.test File 672 B 0644
ndb_rpl_ndbapi_multi.test File 614 B 0644
ndb_rpl_relayrotate-slave.opt File 57 B 0644
ndb_rpl_rep_error.test File 2.29 KB 0644
ndb_rpl_rep_ignore-slave.opt File 63 B 0644
ndb_rpl_rep_ignore.test File 1.58 KB 0644
ndb_rpl_skip_gap_event-slave.opt File 24 B 0644
ndb_rpl_skip_gap_event.test File 1.65 KB 0644
ndb_rpl_slave_lsu.cnf File 57 B 0644
ndb_rpl_slave_lsu.test File 5.66 KB 0644
ndb_rpl_slave_lsu_anyval.cnf File 176 B 0644
ndb_rpl_slave_lsu_anyval.test File 2.25 KB 0644
ndb_rpl_slave_restart.test File 2.87 KB 0644
ndb_rpl_stm_innodb-master.opt File 41 B 0644
ndb_rpl_stm_innodb.test File 622 B 0644
ndb_rpl_sync.test File 3.02 KB 0644
ndb_rpl_ui.test File 1.2 KB 0644
ndb_rpl_ui2.test File 747 B 0644
ndb_rpl_ui3.test File 1.3 KB 0644
ndb_rpl_xxx_innodb.inc File 6.22 KB 0644
rpl_truncate_7ndb.test File 1.58 KB 0644
rpl_truncate_7ndb_2.test File 383 B 0644
select_ndb_apply_status.inc File 505 B 0644
wait_schema_logging.inc File 2.33 KB 0644