mirror of
https://github.com/MariaDB/server.git
synced 2025-09-15 05:41:27 +03:00
Implement automatic creation of temporary accounts for SST and pass account credentials to SST script via socket as opposed to environment variables. Delete the user after the SST script returns, Respect wsrep_sst_auth set by the adminitrator in case some additional privilege grants are needed for particular SST method. mysqldump SST requires significant change to make use of the new automatic user generation facility. For now just make it compatible by ignoring automatically generated user and rely only on wsrep_sst_auth setting on the joiner node to keep backward compatibility. Adapt mysqldump SST to automatic SST user generation changes: - disable special treatment for mysqldump SST on donor - make mysqldump SST script compatible with the new SST script interface. Differentiate user privileges for different SST methods: - grant minimum required privileges for clone and xtrabackup SST accounts - grant all privileges to custom SST accounts as it is not known what is needed. - disable SST account generation for rsync SST since it is not needed. MTR tests: - add MTR tests for clone and xtrabackup SSTs without wsrep_sst_auth, - add MTR test for testing masking of wsrep_sst_auth. - don't attmept to restore original wsrep_sst_auth in MTR tests as it is always masked. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
193 lines
6.9 KiB
Plaintext
193 lines
6.9 KiB
Plaintext
--- r/galera_sst_mariabackup.result
|
|
+++ r/galera_sst_mariabackup.reject
|
|
@@ -516,5 +516,189 @@
|
|
1
|
|
DROP TABLE t1;
|
|
COMMIT;
|
|
+Performing State Transfer on a server that has been killed and restarted
|
|
+while a DDL was in progress on it
|
|
+connection node_1;
|
|
+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
|
|
+SET AUTOCOMMIT=OFF;
|
|
+START TRANSACTION;
|
|
+INSERT INTO t1 VALUES (1,'node1_committed_before');
|
|
+INSERT INTO t1 VALUES (2,'node1_committed_before');
|
|
+INSERT INTO t1 VALUES (3,'node1_committed_before');
|
|
+INSERT INTO t1 VALUES (4,'node1_committed_before');
|
|
+INSERT INTO t1 VALUES (5,'node1_committed_before');
|
|
+connection node_2;
|
|
+START TRANSACTION;
|
|
+INSERT INTO t1 VALUES (6,'node2_committed_before');
|
|
+INSERT INTO t1 VALUES (7,'node2_committed_before');
|
|
+INSERT INTO t1 VALUES (8,'node2_committed_before');
|
|
+INSERT INTO t1 VALUES (9,'node2_committed_before');
|
|
+INSERT INTO t1 VALUES (10,'node2_committed_before');
|
|
+COMMIT;
|
|
+SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
|
|
+connection node_1;
|
|
+ALTER TABLE t1 ADD COLUMN f2 INTEGER;
|
|
+connection node_2;
|
|
+SET wsrep_sync_wait = 0;
|
|
+Killing server ...
|
|
+connection node_1;
|
|
+SET AUTOCOMMIT=OFF;
|
|
+START TRANSACTION;
|
|
+INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during');
|
|
+INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during');
|
|
+INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during');
|
|
+INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during');
|
|
+INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during');
|
|
+COMMIT;
|
|
+START TRANSACTION;
|
|
+INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (20,'node1_to_be_committed_after');
|
|
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
|
+SET AUTOCOMMIT=OFF;
|
|
+START TRANSACTION;
|
|
+INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (25,'node1_to_be_rollbacked_after');
|
|
+connection node_2;
|
|
+Performing --wsrep-recover ...
|
|
+connection node_2;
|
|
+Starting server ...
|
|
+Using --wsrep-start-position when starting mysqld ...
|
|
+SET AUTOCOMMIT=OFF;
|
|
+START TRANSACTION;
|
|
+INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after');
|
|
+COMMIT;
|
|
+connection node_1;
|
|
+INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (35,'node1_to_be_committed_after');
|
|
+COMMIT;
|
|
+SET AUTOCOMMIT=OFF;
|
|
+START TRANSACTION;
|
|
+INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after');
|
|
+COMMIT;
|
|
+connection node_1a_galera_st_kill_slave_ddl;
|
|
+INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after');
|
|
+INSERT INTO t1 (id,f1) VALUES (45,'node1_to_be_rollbacked_after');
|
|
+ROLLBACK;
|
|
+SET AUTOCOMMIT=ON;
|
|
+SET SESSION wsrep_sync_wait=15;
|
|
+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
|
+EXPECT_3
|
|
+3
|
|
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
|
+EXPECT_35
|
|
+35
|
|
+SELECT * FROM t1;
|
|
+id f1 f2
|
|
+1 node1_committed_before NULL
|
|
+2 node1_committed_before NULL
|
|
+3 node1_committed_before NULL
|
|
+4 node1_committed_before NULL
|
|
+5 node1_committed_before NULL
|
|
+6 node2_committed_before NULL
|
|
+7 node2_committed_before NULL
|
|
+8 node2_committed_before NULL
|
|
+9 node2_committed_before NULL
|
|
+10 node2_committed_before NULL
|
|
+11 node1_committed_during NULL
|
|
+12 node1_committed_during NULL
|
|
+13 node1_committed_during NULL
|
|
+14 node1_committed_during NULL
|
|
+15 node1_committed_during NULL
|
|
+16 node1_to_be_committed_after NULL
|
|
+17 node1_to_be_committed_after NULL
|
|
+18 node1_to_be_committed_after NULL
|
|
+19 node1_to_be_committed_after NULL
|
|
+20 node1_to_be_committed_after NULL
|
|
+26 node2_committed_after NULL
|
|
+27 node2_committed_after NULL
|
|
+28 node2_committed_after NULL
|
|
+29 node2_committed_after NULL
|
|
+30 node2_committed_after NULL
|
|
+31 node1_to_be_committed_after NULL
|
|
+32 node1_to_be_committed_after NULL
|
|
+33 node1_to_be_committed_after NULL
|
|
+34 node1_to_be_committed_after NULL
|
|
+35 node1_to_be_committed_after NULL
|
|
+36 node1_committed_after NULL
|
|
+37 node1_committed_after NULL
|
|
+38 node1_committed_after NULL
|
|
+39 node1_committed_after NULL
|
|
+40 node1_committed_after NULL
|
|
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
|
+COUNT(*) = 0
|
|
+1
|
|
+COMMIT;
|
|
+connection node_1;
|
|
+SET AUTOCOMMIT=ON;
|
|
+SET SESSION wsrep_sync_wait=15;
|
|
+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
|
+EXPECT_3
|
|
+3
|
|
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
|
+EXPECT_35
|
|
+35
|
|
+SELECT * FROM t1;
|
|
+id f1 f2
|
|
+1 node1_committed_before NULL
|
|
+2 node1_committed_before NULL
|
|
+3 node1_committed_before NULL
|
|
+4 node1_committed_before NULL
|
|
+5 node1_committed_before NULL
|
|
+6 node2_committed_before NULL
|
|
+7 node2_committed_before NULL
|
|
+8 node2_committed_before NULL
|
|
+9 node2_committed_before NULL
|
|
+10 node2_committed_before NULL
|
|
+11 node1_committed_during NULL
|
|
+12 node1_committed_during NULL
|
|
+13 node1_committed_during NULL
|
|
+14 node1_committed_during NULL
|
|
+15 node1_committed_during NULL
|
|
+16 node1_to_be_committed_after NULL
|
|
+17 node1_to_be_committed_after NULL
|
|
+18 node1_to_be_committed_after NULL
|
|
+19 node1_to_be_committed_after NULL
|
|
+20 node1_to_be_committed_after NULL
|
|
+26 node2_committed_after NULL
|
|
+27 node2_committed_after NULL
|
|
+28 node2_committed_after NULL
|
|
+29 node2_committed_after NULL
|
|
+30 node2_committed_after NULL
|
|
+31 node1_to_be_committed_after NULL
|
|
+32 node1_to_be_committed_after NULL
|
|
+33 node1_to_be_committed_after NULL
|
|
+34 node1_to_be_committed_after NULL
|
|
+35 node1_to_be_committed_after NULL
|
|
+36 node1_committed_after NULL
|
|
+37 node1_committed_after NULL
|
|
+38 node1_committed_after NULL
|
|
+39 node1_committed_after NULL
|
|
+40 node1_committed_after NULL
|
|
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
|
+COUNT(*) = 0
|
|
+1
|
|
+DROP TABLE t1;
|
|
+COMMIT;
|
|
+SET GLOBAL debug_dbug = $debug_orig;
|
|
disconnect node_2;
|
|
disconnect node_1;
|