403Webshell
Server IP : 104.21.38.3  /  Your IP : 162.158.170.174
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/mysql-test/suite/group_replication/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/mysql-test/suite/group_replication/t/gr_force_peer_addresses_option.test
################################################################################
# Verify that group_replication_force_members does behave as expected
# when:
#   0) The test requires two servers: M1 and M2.
#   1) A empty value is set on a OFFLINE member. It should succeed.
#   2) A value is set on a OFFLINE member. It should fail.
#   3) A empty value is set on a ONLINE member. It should succeed.
#   4) An IP is set on group with majority reachable. It should fail.
#   5) A empty value is set on a RECOVERING member. It should succeed.
#   6) A value is set on a RECOVERING member. It should fail.
#   7) Restart member with group_replication_force_members set. Group
#      Replication automatic start will error out.
#   8) Start Group Replication with group_replication_force_members set,
#      start will error out.
#   9) Clear group_replication_force_members, start will work.
#   10) Kill and restart a member to group loose majority.
#   11) Invalid address is set on a ONLINE member with majority unreachable. It
#       should fail.
#   12) IP address is set on a ONLINE member with majority unreachable. It
#       should succeed.
#   13) Clean up.
################################################################################
--source include/big_test.inc
--source ../inc/have_group_replication_plugin.inc
--source include/force_restart.inc
--let $rpl_skip_group_replication_start= 1
--source ../inc/group_replication.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $uuid_server2= `SELECT @@GLOBAL.SERVER_UUID`
--let $member2_group_replication_local_address= `SELECT @@GLOBAL.group_replication_local_address`
SET SESSION sql_log_bin= 0;
call mtr.add_suppression("Member is not ONLINE, it is not possible to force a new group membership");
call mtr.add_suppression("group_replication_force_members must be empty on group start. Current value: '127.0.0.1:10000'");
call mtr.add_suppression("Unable to start Group Replication on boot");
call mtr.add_suppression("force_members can only be updated when Group Replication is running*");
call mtr.add_suppression("The member lost contact with a majority of the members in the group. Until the network is restored.*");
call mtr.add_suppression("\\[GCS\\] Peer address .* is not valid.");
call mtr.add_suppression("\\[GCS\\] The peers list contains invalid addresses. Please provide a list with only valid addresses.");
call mtr.add_suppression("Error setting group_replication_force_members value .* on group communication interfaces");
call mtr.add_suppression("The member resumed contact with a majority of the members in the group.*");
SET SESSION sql_log_bin= 1;

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

--let $member1_group_replication_local_address= `SELECT @@GLOBAL.group_replication_local_address`
--let $group_replication_group_seeds= `SELECT @@GLOBAL.group_replication_group_seeds`
--let $member1_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
--let $uuid_server1= `SELECT @@GLOBAL.SERVER_UUID`
SET SESSION sql_log_bin= 0;
call mtr.add_suppression("Member is OFFLINE, it is not possible to force a new group membership");
call mtr.add_suppression("force_members can only be updated when Group Replication is running*");
SET SESSION sql_log_bin= 1;


--echo
--echo ############################################################
--echo # 1. Set empty string value to
--echo #    group_replication_force_members on a OFFLINE
--echo #    member.
SET GLOBAL group_replication_force_members= "";

--let $assert_text= group_replication_force_members is empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc


--echo
--echo ############################################################
--echo # 2. Set group_replication_force_members on a OFFLINE
--echo #    member.
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_force_members= "127.0.0.1:10000";

--let $assert_text= group_replication_force_members is empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc


--echo
--echo ############################################################
--echo # 3. Set empty string value to
--echo #    group_replication_force_members on a ONLINE
--echo #    member.
--source ../inc/start_and_bootstrap_group_replication.inc
SET GLOBAL group_replication_force_members= "";

--let $assert_text= group_replication_force_members is empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc

--echo
--echo ############################################################
--echo # 4. Set valid IP string value to
--echo #    group_replication_force_members on a ONLINE member and
--echo #    majority of group members are reachable
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_force_members= "127.0.0.1:10001";

--let $assert_text= group_replication_force_members is empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc


--echo
--echo ############################################################
--echo # 5. Set empty string value to
--echo #    group_replication_force_members on a RECOVERING
--echo #    member.
# Stop applier on member 1 so that member 2 will block when
# recovering from it.
STOP SLAVE SQL_THREAD FOR CHANNEL "group_replication_applier";

--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $group_replication_start_member_state= RECOVERING
--source include/start_group_replication.inc

SET GLOBAL group_replication_force_members= "";

--let $assert_text= group_replication_force_members is empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc


--echo
--echo ############################################################
--echo # 6. Set group_replication_force_members on a RECOVERING
--echo #    member.
--let $group_replication_member_state= RECOVERING
--source ../inc/gr_wait_for_member_state.inc

--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_force_members= "127.0.0.1:10000";

--let $rpl_connection_name= server1
--source include/rpl_connection.inc
START SLAVE SQL_THREAD FOR CHANNEL "group_replication_applier";

--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $group_replication_member_state= ONLINE
--source ../inc/gr_wait_for_member_state.inc


--echo
--echo ############################################################
--echo # 7. Restart member with group_replication_force_members
--echo #    set. Group Replication start will error out.
--echo #    2 members.
--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--let $allow_rpl_inited=1
--let $_group_replication_local_address= `SELECT @@GLOBAL.group_replication_local_address`
--let $_group_replication_group_seeds= `SELECT @@GLOBAL.group_replication_group_seeds`
--let $_group_replication_group_whitelist= `SELECT @@GLOBAL.group_replication_ip_whitelist`
--let $restart_parameters=restart:--group_replication_local_address=$_group_replication_local_address --group_replication_group_seeds=$_group_replication_group_seeds --group_replication_start_on_boot=1 --group-replication-group-name=$group_replication_group_name --group_replication_force_members="127.0.0.1:10000" --group_replication_ip_whitelist=$_group_replication_group_whitelist
--replace_result $_group_replication_local_address GROUP_REPLICATION_LOCAL_ADDRESS $_group_replication_group_seeds GROUP_REPLICATION_GROUP_SEEDS $group_replication_group_name GROUP_REPLICATION_GROUP_NAME $_group_replication_group_whitelist GROUP_REPLICATION_GROUP_WHITELIST
--source include/restart_mysqld.inc

--let $rpl_server_number= 2
--source include/rpl_reconnect.inc

--let $assert_text= Member 2 is OFFLINE
--let $assert_cond= [SELECT COUNT(*) FROM performance_schema.replication_group_members WHERE member_state="OFFLINE"] = 1
--source include/assert.inc


--echo
--echo ############################################################
--echo # 8. Start Group Replication while
--echo #    group_replication_force_members is set. Start
--echo #    will error out.

--let $assert_text= group_replication_force_members must be 127.0.0.1:10000
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = "127.0.0.1:10000"
--source include/assert.inc

--error ER_GROUP_REPLICATION_CONFIGURATION
START GROUP_REPLICATION;

--let $assert_text= Member 2 is OFFLINE
--let $assert_cond= [SELECT COUNT(*) FROM performance_schema.replication_group_members WHERE member_state="OFFLINE"] = 1
--source include/assert.inc


--echo
--echo ############################################################
--echo # 9. Clear group_replication_force_members and start
--echo #    Group Replication. Group will have the 2 members.
SET GLOBAL group_replication_force_members= "";

--let $assert_text= group_replication_force_members is empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc

--source include/start_group_replication.inc

# Server 1
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--let $group_replication_number_of_members= 2
--source ../inc/gr_wait_for_number_of_members.inc

--let $assert_text= Server 1 must be present on group members
--let $assert_cond= [SELECT COUNT(*) FROM performance_schema.replication_group_members WHERE member_id="$uuid_server1"] = 1
--source include/assert.inc
--let $assert_text= Server 2 must be present on group members
--let $assert_cond= [SELECT COUNT(*) FROM performance_schema.replication_group_members WHERE member_id="$uuid_server2"] = 1
--source include/assert.inc

# Server 2
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $group_replication_number_of_members= 2
--source ../inc/gr_wait_for_number_of_members.inc

--let $assert_text= Server 1 must be present on group members
--let $assert_cond= [SELECT COUNT(*) FROM performance_schema.replication_group_members WHERE member_id="$uuid_server1"] = 1
--source include/assert.inc
--let $assert_text= Server 2 must be present on group members
--let $assert_cond= [SELECT COUNT(*) FROM performance_schema.replication_group_members WHERE member_id="$uuid_server2"] = 1
--source include/assert.inc

--let $assert_text= group_replication_force_members must be empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc

--echo
--echo ############################################################
--echo # 10. Kill and restart a member to group loose majority.

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

--let $restart_parameters=restart:--group_replication_local_address=$member1_group_replication_local_address --group_replication_group_seeds=$group_replication_group_seeds --group_replication_group_name=$group_replication_group_name --group_replication_ip_whitelist=$_group_replication_group_whitelist
--replace_result $member1_group_replication_local_address GROUP_REPLICATION_LOCAL_ADDRESS1 $group_replication_group_seeds GROUP_REPLICATION_GROUP_SEEDS $group_replication_group_name GROUP_REPLICATION_GROUP_NAME $_group_replication_group_whitelist GROUP_REPLICATION_GROUP_WHITELIST
--source ../inc/kill_and_restart_mysqld.inc

--let $rpl_server_number= 1
--source include/rpl_reconnect.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

# confirm member is unreachable
--let $group_replication_member_state= UNREACHABLE
--let $group_replication_member_id= $member1_uuid
--source ../inc/gr_wait_for_member_state.inc


--echo
--echo ############################################################
--echo # 11. Set invalid  IP string value to
--echo #    group_replication_force_members on a ONLINE member and
--echo #    majority of group members are unreachable.

--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_force_members= "256.256.256.777:1234";

--let $assert_text= group_replication_force_members is empty
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = ""
--source include/assert.inc


--echo
--echo ############################################################
--echo # 12. Set valid  IP string value to
--echo #    group_replication_force_members on a ONLINE member and
--echo #    majority of group members are unreachable

# unblock group
--replace_result $member2_group_replication_local_address GROUP_REPLICATION_LOCAL_ADDRESS1
eval SET GLOBAL group_replication_force_members= "$member2_group_replication_local_address";

--let $assert_text= group_replication_force_members has member2 local address
--let $assert_cond= "[SELECT @@GLOBAL.group_replication_force_members]" = "$member2_group_replication_local_address"
--source include/assert.inc


--echo
--echo ############################################################
--echo # 11. Clean up.

# rejoin M1 to group
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--source include/start_group_replication.inc

--source ../inc/group_replication_end.inc

Youez - 2016 - github.com/yon3zu
LinuXploit