403Webshell
Server IP : 172.67.216.182  /  Your IP : 162.158.88.140
Web Server : Apache
System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64
User : www ( 1000)
PHP Version : 7.4.33
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/server/mysql/src/mysql-test/suite/rpl/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/src/mysql-test/suite/rpl/t/rpl_gtid_parallel.test
#Want to skip this test from daily Valgrind execution
--source include/no_valgrind_without_big.inc
# ==== Purpose ====
#
# Stress-test concurrent re-execution of transactions generated with
# GTID_MODE = ON.
#
# ==== Implementation ====
#
# 1. Generate a load on the master consisting of:
#     - transactions (INSERT/UPDATE/DELETE)
#     - DDL (ALTER and RENAME)
#     - FLUSH LOGS
#    Do not replicate anything.
#
# 2. Apply the binary logs on the slave (which is fresh).  The binary
#    logs are applied in N parallel connections.  In addition, for
#    increased concurrency, we open N concurrent connections that
#    repeatedly execute SHOW SLAVE STATUS, and N concurrent
#    connections that repeatedly read @@GLOBAL.GTID_EXECUTED and
#    @@GLOBAL.GTID_PURGED.
#
# 3. Check that master and slave have the same data.
#
# ==== References ====
#
# Implemented as part of WL#3584: Global Transaction Identifiers

--source include/not_group_replication_plugin.inc
--source include/big_test.inc
--source include/have_gtid.inc
--source include/not_windows.inc
--source include/master-slave.inc

--echo ==== Configure ====

--let $max_iterations= 10000
--let $max_seconds= 100
--let $n_forks= 8
--let $flush_probability= 0.05
--let $rename_probability= 0.1

--echo ==== Initialize ====

--enable_connect_log
--connection slave
--source include/stop_slave.inc

--delimiter |
CREATE PROCEDURE show_slave_status ()
BEGIN
  DECLARE name VARCHAR(100) DEFAULT('');
  WHILE name = '' DO
    SHOW SLAVE STATUS;
    SELECT TABLE_NAME INTO name
      FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 't_end';
  END WHILE;
END|

CREATE PROCEDURE read_gtid_executed ()
BEGIN
  DECLARE name VARCHAR(100) DEFAULT('');
  DECLARE temp VARCHAR(10000) DEFAULT('');
  WHILE name = '' DO
    SET temp = @@GLOBAL.GTID_EXECUTED;
    SET temp = @@GLOBAL.GTID_OWNED;
    SELECT TABLE_NAME INTO name
      FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 't_end';
  END WHILE;
END|
--delimiter ;

--connection master

--let $t= 1
eval CREATE TABLE t1_$t (a INT) ENGINE = InnoDB;
eval CREATE TABLE t2_$t (a INT) ENGINE = InnoDB;
eval INSERT INTO t1_$t VALUES (0);
eval INSERT INTO t2_$t VALUES (0);

--echo ==== Generate binary log ====

--let $iteration= 1
--let $start_time= `SELECT UNIX_TIMESTAMP()`
--let $done= 0
--disable_query_log
while (!$done)
{
  --let $rand_type= decide
  --let $rand_probability= $rename_probability
  --source include/rand.inc
  if ($rand)
  {
    --let $last_t= $t
    --inc $t
    eval ALTER TABLE t1_$last_t RENAME TO t1_$t;
    eval RENAME TABLE t2_$last_t TO t2_$t;
  }
  BEGIN;
  eval INSERT INTO t2_$t VALUES ($iteration);
  eval UPDATE t1_$t SET a = $iteration WHERE a = $iteration - 1;
  eval DELETE FROM t2_$t WHERE a = $iteration - 1;
  COMMIT;

  --let $rand_type= decide
  --let $rand_probability= $flush_probability
  --source include/rand.inc
  if ($rand)
  {
    FLUSH LOGS;
  }
  --inc $iteration

  if ($iteration >= $max_iterations)
  {
    --let $done= 1
  }
  if (`SELECT UNIX_TIMESTAMP() - $start_time > $max_seconds`)
  {
    --let $done= 1
  }
}
--enable_query_log
CREATE TABLE t_end (a INT);

--echo ==== Apply the generated binary logs ====

--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)
--let $data_dir= `SELECT @@datadir`
--let _BINLOG_FILE= $data_dir/$binlog_file
--let _N_FORKS= $n_forks

perl;
  my $mysql_pipe= "| $ENV{MYSQL} --defaults-group-suffix=.2";
  my $file= $ENV{_BINLOG_FILE};
  $file=~ s/0*([1-9][0-9]*)$//;
  my $number= $1;
  my @mysqlbinlog_commands=
    map { sprintf("$ENV{MYSQL_BINLOG} %s%06d", $file, $_) } 1 .. $number;
  my $n_forks= $ENV{_N_FORKS};
  my $n= $n_forks;
  my @cmd_lists= ( [ 'echo "USE test; CALL show_slave_status();"' ],
                   [ 'echo "USE test; CALL read_gtid_executed();"' ],
                   \@mysqlbinlog_commands,
                   \@mysqlbinlog_commands );
  $n-- while $n && fork;
  my $cmd_list= $cmd_lists[$n % @cmd_lists];
  for my $cmd (@$cmd_list)
  {
    # discard stdout from $cmd (redirect to /dev/null is not portable)
    `$cmd $mysql_pipe`;
    $? == 0 or die "Error executing running $cmd (n=$n): $!";
  }
EOF

--echo ==== Wait for load to finish ====

--connection slave
--let $show_statement= SHOW TABLES;
--let $field= Tables_in_test
--let $condition= t_end
--source include/wait_show_condition.inc

--echo ==== Check result ====

--let $diff_tables= master:t1_$t, master:t2_$t, slave:t1_$t, slave:t2_$t
--let $diff_tables_silent= 1
--source include/diff_tables.inc

--echo ==== Clean up ====

--connection master
--disable_query_log
eval DROP TABLE t1_$t, t2_$t;
--enable_query_log
DROP TABLE t_end;

--connection slave
--disable_query_log
eval DROP TABLE t1_$t, t2_$t;
--enable_query_log
DROP TABLE t_end;
DROP PROCEDURE show_slave_status;
DROP PROCEDURE read_gtid_executed;
CHANGE MASTER TO MASTER_AUTO_POSITION= 0;

Youez - 2016 - github.com/yon3zu
LinuXploit