File: gr_configuration.inc

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (165 lines) | stat: -rw-r--r-- 5,062 bytes parent folder | download
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