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
|
SET SQL_LOG_BIN=0;
call mtr.add_suppression("Transaction isolation level .tx_isolation. is set to SERIALIZABLE, which is not compatible with Group Replication");
SET SQL_LOG_BIN=1;
include/group_replication.inc [rpl_server_count=2]
Warnings:
Note #### Sending passwords in plain text without SSL/TLS is extremely insecure.
Note #### Storing MySQL user name or password information in the connection metadata repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START REPLICA; see the 'START REPLICA Syntax' in the MySQL Manual for more information.
[connection server1]
#
# 1) START GROUP IN SINGLE PRIMARY MODE AND CHECK IF FLAG SET TO FALSE IN
# `group_replication_enforce_update_everywhere_checks` FORCES THE PLUGIN
# TO IGNORE THE FAULTY CONFIGURATION OF `tx_isolate`
#
include/gr_single_primary_with_transaction_isolation.inc
# CONFIGURE SERVER 1
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
SET GLOBAL group_replication_single_primary_mode= TRUE;
SET SESSION transaction_isolation='SERIALIZABLE';
# CONFIGURE SERVER 2
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
SET GLOBAL group_replication_single_primary_mode= TRUE;
SET SESSION transaction_isolation='SERIALIZABLE';
# WRITE DATA ON SERVER 1 (ISOLATION LEVEL 'SERIALIZABLE')
# AND VERIFY PRESENCE OF THE DATA ON SERVER 2
CREATE TABLE first(c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO first(c1) VALUES(2),(4);
SELECT * FROM first;
c1
2
4
DROP TABLE first;
#
# 2) START GROUP IN MULTI PRIMARY MODE AND CHECK IF FLAG SET TO FALSE IN
# `group_replication_enforce_update_everywhere_checks` FORCES THE PLUGIN
# TO IGNORE THE FAULTY CONFIGURATION OF `tx_isolate`
#
include/gr_single_primary_with_transaction_isolation.inc
# CONFIGURE SERVER 1
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='SERIALIZABLE';
# CONFIGURE SERVER 2
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='SERIALIZABLE';
# WRITE DATA ON SERVER 1 (ISOLATION LEVEL 'SERIALIZABLE')
# AND VERIFY PRESENCE OF THE DATA ON SERVER 2
CREATE TABLE first(c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO first(c1) VALUES(2),(4);
SELECT * FROM first;
c1
2
4
DROP TABLE first;
#
# 3) START GROUP IN MULTI PRIMARY MODE AND CHECK IF FLAG SET TO TRUE IN
# `group_replication_enforce_update_everywhere_checks` FORCES THE PLUGIN
# TO THROW AN ERROR WHEN THERE IS FAULTY CONFIGURATION OF `tx_isolate`
#
include/gr_single_primary_with_transaction_isolation.inc
# CONFIGURE SERVER 1
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='SERIALIZABLE';
# CONFIGURE SERVER 2
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='SERIALIZABLE';
# WRITE DATA ON SERVER 1 (ISOLATION LEVEL 'SERIALIZABLE')
# AND VERIFY PRESENCE OF THE DATA ON SERVER 2
CREATE TABLE first(c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO first(c1) VALUES(2),(4);
ERROR HY000: The table does not comply with the requirements by an external plugin.
DROP TABLE first;
#
# 4) START GROUP IN MULTI PRIMARY MODE AND
# WITH CORRECT CONFIGURATION OF `tx_isolate` then the flag
# `group_replication_enforce_update_everywhere_checks` doesn't matter
#
include/gr_single_primary_with_transaction_isolation.inc
# CONFIGURE SERVER 1
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='REPEATABLE-READ';
# CONFIGURE SERVER 2
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='REPEATABLE-READ';
# WRITE DATA ON SERVER 1 (ISOLATION LEVEL 'REPEATABLE-READ')
# AND VERIFY PRESENCE OF THE DATA ON SERVER 2
CREATE TABLE first(c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO first(c1) VALUES(2),(4);
SELECT * FROM first;
c1
2
4
DROP TABLE first;
#
# 5) START GROUP IN MULTI PRIMARY MODE AND
# WITH CORRECT CONFIGURATION OF `tx_isolate` then the flag
# `group_replication_enforce_update_everywhere_checks` doesn't matter
#
include/gr_single_primary_with_transaction_isolation.inc
# CONFIGURE SERVER 1
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='REPEATABLE-READ';
# CONFIGURE SERVER 2
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET SESSION transaction_isolation='REPEATABLE-READ';
# WRITE DATA ON SERVER 1 (ISOLATION LEVEL 'REPEATABLE-READ')
# AND VERIFY PRESENCE OF THE DATA ON SERVER 2
CREATE TABLE first(c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO first(c1) VALUES(2),(4);
SELECT * FROM first;
c1
2
4
DROP TABLE first;
# CLEANUP
include/group_replication_end.inc
|