1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
# ==== Purpose ====
#
# Set XCom configuration on all servers.
#
# --let $group_replication_group_name= UUID
# --source include/gr_configuration.inc
--let $include_filename= gr_configuration.inc
--source include/begin_include_file.inc
if ($group_replication_group_name == "")
{
--die ERROR IN TEST: the "group_replication_group_name" variable must be set
}
# Save current connection.
--let $_old_connection= $CURRENT_CONNECTION
#check which stack are we using
--let $have_xcom_stack= `SELECT @@group_replication_communication_stack LIKE 'XCOM'`
# Default values
--let $_group_replication_group_seeds=
--let $_rpl_gcs_bootstrap_group=
--let $_rpl_gcs_server_address= localhost
--let $_group_replication_ip_allowlist=
# Compute number of servers.
--let $_rpl_server_max= 10
--let $_rpl_server= 1
while ($_rpl_server <= $_rpl_server_max)
{
--let $_rpl_server_port= \$SERVER_MYPORT_$_rpl_server
if (!$_rpl_server_port)
{
# We exceeded the number of servers specified on cnf file.
# Save number of configured servers.
--let $_rpl_gcs_server_number= $_rpl_server
--dec $_rpl_gcs_server_number
# Break loop.
--let $_rpl_server= $_rpl_server_max
}
--inc $_rpl_server
}
# Compute group members.
# Order is from last to first server like on rpl_init.inc.
--let $_rpl_server= $_rpl_gcs_server_number
while ($_rpl_server)
{
--let $_rpl_gcs_server_port=
if ($have_xcom_stack)
{
--let $_rpl_gcs_server_port= \$SERVER_GR_PORT_$_rpl_server
}
if (!$have_xcom_stack)
{
--let $_rpl_gcs_server_port= \$SERVER_MYPORT_$_rpl_server
}
# Append comma to list of addresses.
if ($_group_replication_group_seeds != "")
{
--let $_group_replication_group_seeds= $_group_replication_group_seeds,
}
--let $_rpl_gcs_member= $_rpl_gcs_server_address:$_rpl_gcs_server_port
--let $_group_replication_group_seeds= $_group_replication_group_seeds$_rpl_gcs_member
--dec $_rpl_server
}
--let $_group_replication_ip_allowlist= 127.0.0.1/32,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,::1/128,fe80::/10,fd00::/8,
--let $_group_replication_host_name= `SELECT @@GLOBAL.hostname;`
--let $_group_replication_ip_allowlist= $_group_replication_ip_allowlist$_group_replication_host_name
--let $_group_replication_ip_allowlist= $_group_replication_ip_allowlist/8
# Set XCom configuration on all servers.
# Order is from last to first server like on rpl_init.inc.
--let $_rpl_server= $_rpl_gcs_server_number
while ($_rpl_server)
{
--let $_rpl_connection_name= server$_rpl_server
--connection $_rpl_connection_name
# Boot group on last server (server with bigger server_id).
--let $_group_replication_bootstrap_group= 0
if ($_rpl_gcs_bootstrap_group == "")
{
--let $_rpl_gcs_bootstrap_group= "1"
--let $_group_replication_bootstrap_group= 1
}
# Local address.
--let $_rpl_gcs_server_port=
if ($have_xcom_stack)
{
--let $_rpl_gcs_server_port= \$SERVER_GR_PORT_$_rpl_server
}
if (!$have_xcom_stack)
{
--let $_rpl_gcs_server_port= \$SERVER_MYPORT_$_rpl_server
}
--let $_group_replication_local_address= $_rpl_gcs_server_address:$_rpl_gcs_server_port
# Set configuration on server.
--disable_query_log
--eval SET GLOBAL group_replication_local_address= "$_group_replication_local_address"
--eval SET GLOBAL group_replication_group_seeds= "$_group_replication_group_seeds"
--eval SET GLOBAL group_replication_bootstrap_group= $_group_replication_bootstrap_group
--eval SET PERSIST group_replication_ip_allowlist= "$_group_replication_ip_allowlist"
if (!$skip_recovery_configuration)
{
--error 0, ER_REPLICA_CHANNEL_DOES_NOT_EXIST
RESET REPLICA ALL FOR CHANNEL "group_replication_recovery";
# Set distributed recovery user.
--disable_warnings
CHANGE REPLICATION SOURCE TO SOURCE_USER="root" FOR CHANNEL "group_replication_recovery";
--enable_warnings
}
--error 0, ER_REPLICA_CHANNEL_DOES_NOT_EXIST
RESET REPLICA ALL FOR CHANNEL "group_replication_applier";
if ($rpl_privilege_checks_user == ''){
--let $rpl_privilege_checks_user = $PRIVILEGE_CHECKS_USER
}
if ($rpl_privilege_checks_user != '')
{
--let $rpl_server_number= $_rpl_server
--source include/rpl_get_instance_priv_checks_user.inc
if ($rpl_instance_privilege_checks_user != '' )
{
# If PRIVILEGE_CHECKS_USER is not NULL configure the account
if (`SELECT "$rpl_instance_privilege_checks_user" != "NULL"`)
{
--source include/rpl_priv_checks_user_configuration.inc
}
if (!$skip_recovery_configuration)
{
--eval CHANGE REPLICATION SOURCE TO PRIVILEGE_CHECKS_USER = $rpl_instance_privilege_checks_user FOR CHANNEL "group_replication_recovery"
}
--eval CHANGE REPLICATION SOURCE TO PRIVILEGE_CHECKS_USER = $rpl_instance_privilege_checks_user FOR CHANNEL "group_replication_applier"
}
}
--enable_query_log
--dec $_rpl_server
}
# Revert to old connection.
--connection $_old_connection
--let $include_filename= gr_configuration.inc
--source include/end_include_file.inc
|