2
2
3
3
set -x
4
4
5
- # Add a wait for containers to be ready
6
- sleep 5
7
-
8
- # Install the mysql client
5
+ # ######################################################################################################################
6
+ # Install the mysql client to connect to mysql nodes
7
+ # ######################################################################################################################
9
8
apt-get -qq update
10
9
apt-get -qq install mysql-client -y --no-install-recommends
11
10
11
+
12
12
# ######################################################################################################################
13
- # Setup replication from master1 to master2
13
+ # Import common functions
14
14
# ######################################################################################################################
15
-
16
- # Create a user on master1 node
17
- MYSQL_QUERY=" CREATE USER '$SLAVE_REPL_USER '@'$MASTER_2_HOST_IP ' IDENTIFIED BY '$SLAVE_REPL_PASSWORD ';"
18
- mysql --user=" $MASTER_1_ROOT_USER " --password=" $MASTER_1_ROOT_PASSWORD " --host=" $MASTER_1_HOST_IP " -e " $MYSQL_QUERY "
19
-
20
- # Grant replication permission to the user on master1 node
21
- MYSQL_QUERY=" GRANT REPLICATION SLAVE ON *.* TO \" $SLAVE_REPL_USER \" @\" $MASTER_2_HOST_IP \" ;"
22
- mysql --user=" $MASTER_1_ROOT_USER " --password=" $MASTER_1_ROOT_PASSWORD " --host=" $MASTER_1_HOST_IP " -AN -e " $MYSQL_QUERY "
23
-
24
- # Reload privileges for replication to take effect
25
- MYSQL_QUERY=" FLUSH PRIVILEGES;"
26
- mysql --user=" $MASTER_1_ROOT_USER " --password=" $MASTER_1_ROOT_PASSWORD " --host=" $MASTER_1_HOST_IP " -e " $MYSQL_QUERY "
27
-
28
- # See the privileges for replication user
29
- MYSQL_QUERY=" FLUSH TABLES WITH READ LOCK;"
30
- mysql --user=" $MASTER_1_ROOT_USER " --password=" $MASTER_1_ROOT_PASSWORD " --host=" $MASTER_1_HOST_IP " -e " $MYSQL_QUERY "
31
-
32
- REPL_LOG_FILE=$( eval " mysql --user=$MASTER_1_ROOT_USER --password=$MASTER_1_ROOT_PASSWORD --host=$MASTER_1_HOST_IP -e 'SHOW MASTER STATUS\G' | grep File | sed -n -e 's/^.*: //p'" )
33
- REPL_LOG_POSITION=$( eval " mysql --user=$MASTER_1_ROOT_USER --password=$MASTER_1_ROOT_PASSWORD --host=$MASTER_1_HOST_IP -e 'SHOW MASTER STATUS\G' | grep Position | sed -n -e 's/^.*: //p'" )
34
-
35
- # Set the replication on slave node
36
- MYSQL_QUERY=" CHANGE MASTER TO MASTER_HOST = '$MASTER_1_HOST_IP ', MASTER_USER = '$SLAVE_REPL_USER ', MASTER_PASSWORD = '$SLAVE_REPL_PASSWORD ', MASTER_LOG_FILE = '$REPL_LOG_FILE ', MASTER_LOG_POS = $REPL_LOG_POSITION ;"
37
- mysql --user=" $MASTER_2_ROOT_USER " --password=" $MASTER_2_ROOT_PASSWORD " --host=" $MASTER_2_HOST_IP " -e " $MYSQL_QUERY "
38
-
39
- # Start the master2 for replication
40
- MYSQL_QUERY=" START SLAVE;"
41
- mysql --user=" $MASTER_2_ROOT_USER " --password=" $MASTER_2_ROOT_PASSWORD " --host=" $MASTER_2_HOST_IP " -e " $MYSQL_QUERY "
42
-
43
- # See the master2 status
44
- MYSQL_QUERY=" SHOW SLAVE STATUS \G;"
45
- mysql --user=" $MASTER_2_ROOT_USER " --password=" $MASTER_2_ROOT_PASSWORD " --host=" $MASTER_2_HOST_IP " -e " $MYSQL_QUERY "
15
+ source common-functions.sh
46
16
47
17
18
+ # ######################################################################################################################
19
+ # Setup replication from master1 to master2
20
+ # ######################################################################################################################
21
+ setup_master_2_master_replication $MASTER_1_HOST_IP $MASTER_1_ROOT_USER $MASTER_1_ROOT_PASSWORD $MASTER_2_HOST_IP $MASTER_2_ROOT_USER $MASTER_2_ROOT_PASSWORD $MASTER_1_HOST_IP $SLAVE_REPL_USER $SLAVE_REPL_PASSWORD
48
22
49
23
50
24
# ######################################################################################################################
51
25
# Setup replication from master2 to master1
52
26
# ######################################################################################################################
53
-
54
- # Create a user on master1 node
55
- MYSQL_QUERY=" CREATE USER '$SLAVE_REPL_USER '@'$MASTER_1_HOST_IP ' IDENTIFIED BY '$SLAVE_REPL_PASSWORD ';"
56
- mysql --user=" $MASTER_2_ROOT_USER " --password=" $MASTER_2_ROOT_PASSWORD " --host=" $MASTER_2_HOST_IP " -e " $MYSQL_QUERY "
57
-
58
- # Grant replication permission to the user on master1 node
59
- MYSQL_QUERY=" GRANT REPLICATION SLAVE ON *.* TO \" $SLAVE_REPL_USER \" @\" $MASTER_1_HOST_IP \" ;" # IDENTIFIED BY \"$SLAVE_REPL_PASSWORD\";"
60
- mysql --user=" $MASTER_2_ROOT_USER " --password=" $MASTER_2_ROOT_PASSWORD " --host=" $MASTER_2_HOST_IP " -AN -e " $MYSQL_QUERY "
61
-
62
- # Reload privileges for replication to take effect
63
- MYSQL_QUERY=" FLUSH PRIVILEGES;"
64
- mysql --user=" $MASTER_2_ROOT_USER " --password=" $MASTER_2_ROOT_PASSWORD " --host=" $MASTER_2_HOST_IP " -e " $MYSQL_QUERY "
65
-
66
- # See the privileges for replication user
67
- MYSQL_QUERY=" FLUSH TABLES WITH READ LOCK;"
68
- mysql --user=" $MASTER_2_ROOT_USER " --password=" $MASTER_2_ROOT_PASSWORD " --host=" $MASTER_2_HOST_IP " -e " $MYSQL_QUERY "
69
-
70
- REPL_LOG_FILE=$( eval " mysql --user=$MASTER_2_ROOT_USER --password=$MASTER_2_ROOT_PASSWORD --host=$MASTER_2_HOST_IP -e 'SHOW MASTER STATUS\G' | grep File | sed -n -e 's/^.*: //p'" )
71
- REPL_LOG_POSITION=$( eval " mysql --user=$MASTER_2_ROOT_USER --password=$MASTER_2_ROOT_PASSWORD --host=$MASTER_2_HOST_IP -e 'SHOW MASTER STATUS\G' | grep Position | sed -n -e 's/^.*: //p'" )
72
-
73
- # Set the replication on slave node
74
- MYSQL_QUERY=" CHANGE MASTER TO MASTER_HOST = '$MASTER_2_HOST_IP ', MASTER_USER = '$SLAVE_REPL_USER ', MASTER_PASSWORD = '$SLAVE_REPL_PASSWORD ', MASTER_LOG_FILE = '$REPL_LOG_FILE ', MASTER_LOG_POS = $REPL_LOG_POSITION ;"
75
- mysql --user=" $MASTER_1_ROOT_USER " --password=" $MASTER_1_ROOT_PASSWORD " --host=" $MASTER_1_HOST_IP " -e " $MYSQL_QUERY "
76
-
77
- # Start the master2 for replication
78
- MYSQL_QUERY=" START SLAVE;"
79
- mysql --user=" $MASTER_1_ROOT_USER " --password=" $MASTER_1_ROOT_PASSWORD " --host=" $MASTER_1_HOST_IP " -e " $MYSQL_QUERY "
80
-
81
- # See the master2 status
82
- MYSQL_QUERY=" SHOW SLAVE STATUS \G;"
83
- mysql --user=" $MASTER_1_ROOT_USER " --password=" $MASTER_1_ROOT_PASSWORD " --host=" $MASTER_1_HOST_IP " -e " $MYSQL_QUERY "
27
+ setup_master_2_master_replication $MASTER_2_HOST_IP $MASTER_2_ROOT_USER $MASTER_2_ROOT_PASSWORD $MASTER_1_HOST_IP $MASTER_1_HOST_IP $MASTER_1_ROOT_USER $MASTER_1_ROOT_PASSWORD $SLAVE_REPL_USER $SLAVE_REPL_PASSWORD
0 commit comments