polardbxengine/mysql-test/suite/clone/include/clone_connection_begin.inc

143 lines
4.8 KiB
PHP

## Create connection to clone instance optionally restarting instance with
## monitoring process.
# These variables can to be set before sourcing this file. Currently we used
# to test both with and without monitoring process.
#
# 1. Need to restart mysqld with monitoring process
# --let inst_monitor = 1
#
# 2. Mysqld server instance number for clone
# --let clone_inst_number = <instance number> 1/2/3 ...
# - Instances must be configured in .cnf
# - SERVER_PORT_[n] ENV must be set to server PORT in .cnf
#
# 3. Mysqld user name for connecting to the instance.
# --let clone_user = <user_name>
#
# 4. Number of connections to be created to the instance
# --let clone_connections = <number of connections> 1/2/3 ...
# Connections have the name as clone_conn_<number>
# e.g. clone_conn_1, clone_conn_2, clone_conn_3 etc.
#
# This script should be used in pair with clone_connection_end.inc
# --source clone_connection_begin.inc
# ...
# --source clone_connection_end.inc
if (!$clone_user) {
--let $clone_user = 'root'
}
if (!$clone_connections) {
--let $clone_connections = 1
}
if ($clone_inst_number) {
--let $clone_port= \$SERVER_PORT_$clone_inst_number
--connect (clone_conn_1, 127.0.0.1, $clone_user,,test,$clone_port)
}
if (!$clone_inst_number) {
--connection default
}
# Get Server ID
--let $SERVER_ID= `SELECT @@server_id`
if ($clone_inst_number) {
if ($SERVER_ID == 1) {
--disconnect clone_conn_1
--connection default
}
}
if ($SERVER_ID != 1) {
--echo Install clone plugin on recipient server
--replace_result $CLONE_PLUGIN CLONE_PLUGIN
--eval INSTALL PLUGIN clone SONAME '$CLONE_PLUGIN'
}
# A. Check if we need monitoring process. Taken from mysqld_safe.test
if ($inst_monitor) {
# 1. Set variables to be used in parameters of mysqld_safe.
--let $SERVER_ID= `SELECT @@server_id`
--let $MYSQLD_DATADIR= `SELECT @@datadir`
--let $MYSQL_BASEDIR= `SELECT @@basedir`
--let $MYSQL_MESSAGESDIR= `SELECT @@lc_messages_dir`
--let $MYSQL_PIDFILE= `SELECT @@pid_file`
--let $MYSQL_SOCKET= `SELECT @@socket`
--let $MYSQLX_SOCKET= `SELECT @@mysqlx_socket`
--let $MYSQL_PORT= `SELECT @@port`
--let $MYSQLX_PORT= `SELECT @@mysqlx_port`
--let $MYSQL_PLUGIN_DIR = `SELECT @@plugin_dir`
--let $GALAXYX_PORT= `SELECT @@galaxyx_port`
--let $POLARX_RPC_PORT= `SELECT @@rpc_port`
--let $page_size= `select @@innodb_page_size`
--let $error_verbosity = `select @@log_error_verbosity`
# mysqld_path to be passed to --ledir
perl;
my $dir = $ENV{'MYSQLTEST_VARDIR'};
open ( OUTPUT, ">$dir/tmp/mysqld_path_file.inc") ;
my $path = $ENV{MYSQLD};
$path =~ /^(.*)\/([^\/]*)$/;
print OUTPUT "let \$mysqld_path = $1;\n";
print OUTPUT "let \$mysqld_bin = $2;\n";
close (OUTPUT);
EOF
# Get the value of the variable to MTR, from perl
--source $MYSQLTEST_VARDIR/tmp/mysqld_path_file.inc
# Remove the temp file
--remove_file $MYSQLTEST_VARDIR/tmp/mysqld_path_file.inc
# 2. Shutdown mysqld instance which is started by mtr.
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$SERVER_ID.expect
--exec echo "wait" > $_expect_file_name
--shutdown_server
--source include/wait_until_disconnected.inc
# 3. Run mysqld_safe script
--exec sh $MYSQLD_SAFE --defaults-file=$MYSQLTEST_VARDIR/my.cnf --server-id=$SERVER_ID --log-error=$MYSQLTEST_VARDIR/log/mysqld.$SERVER_ID.err --log-error-verbosity=$error_verbosity --basedir=$MYSQL_BASEDIR --ledir=$mysqld_path --mysqld=$mysqld_bin --datadir=$MYSQLD_DATADIR --socket=$MYSQL_SOCKET --mysqlx_socket=$MYSQLX_SOCKET --pid-file=$MYSQL_PIDFILE --port=$MYSQL_PORT --mysqlx_port=$MYSQLX_PORT --galaxyx_port=$GALAXYX_PORT --rpc_port=$POLARX_RPC_PORT --plugin_dir=$MYSQL_PLUGIN_DIR --timezone=SYSTEM --log-output=file --secure-file-priv="" --core-file --lc-messages-dir=$MYSQL_MESSAGESDIR --innodb-page-size=$page_size < /dev/null > /dev/null 2>&1 &
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect
}
# B. Create the connections
--let $conn_nummber = 1
# For non default server, we have already created the first connection
if ($SERVER_ID != 1) {
--let $conn_nummber = 2
# Create some local table and tablespace in recipient
CREATE TABLE t_recipient(col1 INT PRIMARY KEY, col2 int);
INSERT INTO t_recipient VALUES(1, 10);
CREATE UNDO TABLESPACE undo_005 ADD DATAFILE 'undo_005.ibu';
CREATE TABLESPACE tbs1_recipient ADD DATAFILE 'tbs1_data1.ibd';
}
while ($conn_nummber <= $clone_connections)
{
--let $conn_name = clone_conn_$conn_nummber
if ($clone_inst_number) {
--let $clone_port= \$SERVER_PORT_$clone_inst_number
--connect ($conn_name, 127.0.0.1, $clone_user,,test,$clone_port)
}
# Connect to the default instance if instance number is not provided.
if (!$clone_inst_number) {
--connect ($conn_name, localhost, $clone_user,,test)
}
--inc $conn_nummber
}
--connection default