polardbxengine/mysql-test/suite/clone/r/local_dml.result

410 lines
12 KiB
Plaintext

CREATE UNDO TABLESPACE undo_003 ADD DATAFILE 'undo_003.ibu';
CREATE UNDO TABLESPACE undo_004 ADD DATAFILE 'undo_004.ibu';
SELECT NAME, SPACE_TYPE, STATE
FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_003 Undo active
undo_004 Undo active
SELECT TABLESPACE_NAME, FILE_NAME, FILE_TYPE, ENGINE
FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME LIKE '%undo_00%'
ORDER BY TABLESPACE_NAME;
TABLESPACE_NAME FILE_NAME FILE_TYPE ENGINE
innodb_undo_001 ./undo_001 UNDO LOG InnoDB
innodb_undo_002 ./undo_002 UNDO LOG InnoDB
undo_003 ./undo_003.ibu UNDO LOG InnoDB
undo_004 ./undo_004.ibu UNDO LOG InnoDB
INSTALL PLUGIN clone SONAME 'CLONE_PLUGIN';
SHOW VARIABLES LIKE "clone_buffer_size";
Variable_name Value
clone_buffer_size 4194304
SET GLOBAL clone_buffer_size = 2097152;
SHOW VARIABLES LIKE "clone_buffer_size";
Variable_name Value
clone_buffer_size 2097152
CREATE TABLE t1(col1 INT PRIMARY KEY, col2 int, col3 varchar(64), col4 BLOB);
CREATE TABLE t2(col1 INT PRIMARY KEY, col2 int, col3 varchar(64), col4 BLOB)
PARTITION BY KEY(col1) PARTITIONS 5;
CREATE PROCEDURE execute_dml(
p_dml_type INT,
p_key_min INT,
p_key_range INT,
p_loop_count INT,
p_frequency INT,
p_is_rand INT)
BEGIN
DECLARE v_idx INT DEFAULT 0;
DECLARE v_commit INT DEFAULT 0;
DECLARE v_key INT DEFAULT 0;
/* Loop and INSERT data at random position */
WHILE(v_idx < p_loop_count) DO
/* Generate key between 1 to p_loop_count */
IF p_is_rand = 1 THEN
SET v_key = p_key_min + FLOOR(RAND() * p_key_range);
ELSE
SET v_key = p_key_min + (v_idx % p_key_range);
END IF;
CASE p_dml_type
WHEN 0 THEN
SET @clol3_text = CONCAT('Clone Test Row - ', v_key);
INSERT INTO t1 VALUES(v_key, v_key * 10,
@clol3_text, REPEAT('Large Column Data ', 2048))
ON DUPLICATE KEY UPDATE col2 = col2 + 1;
INSERT INTO t2 VALUES(v_key, v_key * 10,
@clol3_text, REPEAT('Large Column Data ', 2048))
ON DUPLICATE KEY UPDATE col2 = col2 + 1;
WHEN 1 THEN
UPDATE t1 SET col2 = v_idx + 1 WHERE col1 = v_key;
UPDATE t2 SET col2 = v_idx + 1 WHERE col1 = v_key;
WHEN 2 THEN
DELETE FROM t1 WHERE col1 = v_key;
DELETE FROM t2 WHERE col1 = v_key;
ELSE
DELETE FROM t1;
DELETE FROM t2;
END CASE;
SET v_idx = v_idx + 1;
/* Commit or rollback work at specified frequency. */
IF v_idx % p_frequency = 0 THEN
SET v_commit = FLOOR(RAND() * 2);
IF v_commit = 0 AND p_is_rand = 1 THEN
ROLLBACK;
START TRANSACTION;
ELSE
COMMIT;
START TRANSACTION;
END IF;
END IF;
END WHILE;
END|
call execute_dml(0, 0, 100, 100, 10, 0);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` int(11) NOT NULL,
`col2` int(11) DEFAULT NULL,
`col3` varchar(64) DEFAULT NULL,
`col4` blob,
PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
SELECT count(*) from t1;
count(*)
100
SELECT col1, col2, col3 FROM t1 ORDER BY col1 LIMIT 10;
col1 col2 col3
0 0 Clone Test Row - 0
1 10 Clone Test Row - 1
2 20 Clone Test Row - 2
3 30 Clone Test Row - 3
4 40 Clone Test Row - 4
5 50 Clone Test Row - 5
6 60 Clone Test Row - 6
7 70 Clone Test Row - 7
8 80 Clone Test Row - 8
9 90 Clone Test Row - 9
SELECT col1, col2, col3 FROM t1 ORDER BY col1 DESC LIMIT 10;
col1 col2 col3
99 990 Clone Test Row - 99
98 980 Clone Test Row - 98
97 970 Clone Test Row - 97
96 960 Clone Test Row - 96
95 950 Clone Test Row - 95
94 940 Clone Test Row - 94
93 930 Clone Test Row - 93
92 920 Clone Test Row - 92
91 910 Clone Test Row - 91
90 900 Clone Test Row - 90
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`col1` int(11) NOT NULL,
`col2` int(11) DEFAULT NULL,
`col3` varchar(64) DEFAULT NULL,
`col4` blob,
PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
/*!50100 PARTITION BY KEY (col1)
PARTITIONS 5 */
SELECT count(*) from t2;
count(*)
100
SELECT col1, col2, col3 FROM t2 ORDER BY col1 LIMIT 10;
col1 col2 col3
0 0 Clone Test Row - 0
1 10 Clone Test Row - 1
2 20 Clone Test Row - 2
3 30 Clone Test Row - 3
4 40 Clone Test Row - 4
5 50 Clone Test Row - 5
6 60 Clone Test Row - 6
7 70 Clone Test Row - 7
8 80 Clone Test Row - 8
9 90 Clone Test Row - 9
SELECT col1, col2, col3 FROM t2 ORDER BY col1 DESC LIMIT 10;
col1 col2 col3
99 990 Clone Test Row - 99
98 980 Clone Test Row - 98
97 970 Clone Test Row - 97
96 960 Clone Test Row - 96
95 950 Clone Test Row - 95
94 940 Clone Test Row - 94
93 930 Clone Test Row - 93
92 920 Clone Test Row - 92
91 910 Clone Test Row - 91
90 900 Clone Test Row - 90
# In connection con1 - Running Insert Random [100 - 200 Key range]
call execute_dml(0, 100, 100, 100, 20, 1);
# In connection con2 - Running Update Random [0 - 25 Key Range]
call execute_dml(1, 0, 25, 100, 20, 1);
# In connection con3 - Running Delete Random [26 - 50 Key Range]
call execute_dml(2, 26, 25, 100, 20, 1);
# In connection con4 - Running Update Random uncommited [51 - 75 Key Range]
begin;
call execute_dml(1, 51, 25, 100, 200, 1);
# In connection default - Cloning database
SET GLOBAL clone_autotune_concurrency = OFF;
SET GLOBAL clone_max_concurrency = 8;
CLONE LOCAL DATA DIRECTORY = 'CLONE_DATADIR';
select ID, STATE, ERROR_NO from performance_schema.clone_status;
ID STATE ERROR_NO
1 Completed 0
select ID, STAGE, STATE from performance_schema.clone_progress;
ID STAGE STATE
1 DROP DATA Completed
1 FILE COPY Completed
1 PAGE COPY Completed
1 REDO COPY Completed
1 FILE SYNC Completed
1 RESTART Not Started
1 RECOVERY Not Started
# In connection default - Finished Cloning
show variables like 'clone_autotune_concurrency';
Variable_name Value
clone_autotune_concurrency OFF
# In connection con1 - Waiting
# In connection con2 - Waiting
# In connection con3 - Waiting
# In connection con4 - Waiting
commit;
# In connection default
# Restart cloned database
# restart: --datadir=CLONE_DATADIR
select STATE, ERROR_NO, length(BINLOG_FILE) > 0, length(GTID_EXECUTED) > 0,
(BINLOG_POSITION > 0) from performance_schema.clone_status;
STATE ERROR_NO length(BINLOG_FILE) > 0 length(GTID_EXECUTED) > 0 (BINLOG_POSITION > 0)
Completed 0 1 0 1
call execute_dml(3, 0, 1, 1, 1, 0);
call execute_dml(0, 0, 100, 100, 10, 0);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` int(11) NOT NULL,
`col2` int(11) DEFAULT NULL,
`col3` varchar(64) DEFAULT NULL,
`col4` blob,
PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
SELECT count(*) from t1;
count(*)
100
SELECT col1, col2, col3 FROM t1 ORDER BY col1 LIMIT 10;
col1 col2 col3
0 0 Clone Test Row - 0
1 10 Clone Test Row - 1
2 20 Clone Test Row - 2
3 30 Clone Test Row - 3
4 40 Clone Test Row - 4
5 50 Clone Test Row - 5
6 60 Clone Test Row - 6
7 70 Clone Test Row - 7
8 80 Clone Test Row - 8
9 90 Clone Test Row - 9
SELECT col1, col2, col3 FROM t1 ORDER BY col1 DESC LIMIT 10;
col1 col2 col3
99 990 Clone Test Row - 99
98 980 Clone Test Row - 98
97 970 Clone Test Row - 97
96 960 Clone Test Row - 96
95 950 Clone Test Row - 95
94 940 Clone Test Row - 94
93 930 Clone Test Row - 93
92 920 Clone Test Row - 92
91 910 Clone Test Row - 91
90 900 Clone Test Row - 90
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`col1` int(11) NOT NULL,
`col2` int(11) DEFAULT NULL,
`col3` varchar(64) DEFAULT NULL,
`col4` blob,
PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
/*!50100 PARTITION BY KEY (col1)
PARTITIONS 5 */
SELECT count(*) from t2;
count(*)
100
SELECT col1, col2, col3 FROM t2 ORDER BY col1 LIMIT 10;
col1 col2 col3
0 0 Clone Test Row - 0
1 10 Clone Test Row - 1
2 20 Clone Test Row - 2
3 30 Clone Test Row - 3
4 40 Clone Test Row - 4
5 50 Clone Test Row - 5
6 60 Clone Test Row - 6
7 70 Clone Test Row - 7
8 80 Clone Test Row - 8
9 90 Clone Test Row - 9
SELECT col1, col2, col3 FROM t2 ORDER BY col1 DESC LIMIT 10;
col1 col2 col3
99 990 Clone Test Row - 99
98 980 Clone Test Row - 98
97 970 Clone Test Row - 97
96 960 Clone Test Row - 96
95 950 Clone Test Row - 95
94 940 Clone Test Row - 94
93 930 Clone Test Row - 93
92 920 Clone Test Row - 92
91 910 Clone Test Row - 91
90 900 Clone Test Row - 90
SELECT NAME, SPACE_TYPE, STATE
FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo';
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_003 Undo active
undo_004 Undo active
SELECT TABLESPACE_NAME, FILE_NAME, FILE_TYPE, ENGINE
FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME LIKE '%undo_00%';
TABLESPACE_NAME FILE_NAME FILE_TYPE ENGINE
innodb_undo_001 ./undo_001 UNDO LOG InnoDB
innodb_undo_002 ./undo_002 UNDO LOG InnoDB
undo_003 ./undo_003.ibu UNDO LOG InnoDB
undo_004 ./undo_004.ibu UNDO LOG InnoDB
SET GLOBAL clone_autotune_concurrency = OFF;
SET GLOBAL clone_max_concurrency = 8;
CLONE LOCAL DATA DIRECTORY = 'CLONE_DATADIR';
select ID, STATE, ERROR_NO from performance_schema.clone_status;
ID STATE ERROR_NO
1 Completed 0
select ID, STAGE, STATE from performance_schema.clone_progress;
ID STAGE STATE
1 DROP DATA Completed
1 FILE COPY Completed
1 PAGE COPY Completed
1 REDO COPY Completed
1 FILE SYNC Completed
1 RESTART Not Started
1 RECOVERY Not Started
# Restart cloned database
# restart: --datadir=CLONE_DATADIR1
select STATE, ERROR_NO, length(BINLOG_FILE) > 0, length(GTID_EXECUTED) > 0,
(BINLOG_POSITION > 0) from performance_schema.clone_status;
STATE ERROR_NO length(BINLOG_FILE) > 0 length(GTID_EXECUTED) > 0 (BINLOG_POSITION > 0)
Completed 0 1 0 1
call execute_dml(3, 0, 1, 1, 1, 0);
call execute_dml(0, 0, 100, 100, 10, 0);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` int(11) NOT NULL,
`col2` int(11) DEFAULT NULL,
`col3` varchar(64) DEFAULT NULL,
`col4` blob,
PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
SELECT count(*) from t1;
count(*)
100
SELECT col1, col2, col3 FROM t1 ORDER BY col1 LIMIT 10;
col1 col2 col3
0 0 Clone Test Row - 0
1 10 Clone Test Row - 1
2 20 Clone Test Row - 2
3 30 Clone Test Row - 3
4 40 Clone Test Row - 4
5 50 Clone Test Row - 5
6 60 Clone Test Row - 6
7 70 Clone Test Row - 7
8 80 Clone Test Row - 8
9 90 Clone Test Row - 9
SELECT col1, col2, col3 FROM t1 ORDER BY col1 DESC LIMIT 10;
col1 col2 col3
99 990 Clone Test Row - 99
98 980 Clone Test Row - 98
97 970 Clone Test Row - 97
96 960 Clone Test Row - 96
95 950 Clone Test Row - 95
94 940 Clone Test Row - 94
93 930 Clone Test Row - 93
92 920 Clone Test Row - 92
91 910 Clone Test Row - 91
90 900 Clone Test Row - 90
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`col1` int(11) NOT NULL,
`col2` int(11) DEFAULT NULL,
`col3` varchar(64) DEFAULT NULL,
`col4` blob,
PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
/*!50100 PARTITION BY KEY (col1)
PARTITIONS 5 */
SELECT count(*) from t2;
count(*)
100
SELECT col1, col2, col3 FROM t2 ORDER BY col1 LIMIT 10;
col1 col2 col3
0 0 Clone Test Row - 0
1 10 Clone Test Row - 1
2 20 Clone Test Row - 2
3 30 Clone Test Row - 3
4 40 Clone Test Row - 4
5 50 Clone Test Row - 5
6 60 Clone Test Row - 6
7 70 Clone Test Row - 7
8 80 Clone Test Row - 8
9 90 Clone Test Row - 9
SELECT col1, col2, col3 FROM t2 ORDER BY col1 DESC LIMIT 10;
col1 col2 col3
99 990 Clone Test Row - 99
98 980 Clone Test Row - 98
97 970 Clone Test Row - 97
96 960 Clone Test Row - 96
95 950 Clone Test Row - 95
94 940 Clone Test Row - 94
93 930 Clone Test Row - 93
92 920 Clone Test Row - 92
91 910 Clone Test Row - 91
90 900 Clone Test Row - 90
# restart:
ALTER UNDO TABLESPACE undo_003 SET INACTIVE;
DROP UNDO TABLESPACE undo_003;
ALTER UNDO TABLESPACE undo_004 SET INACTIVE;
DROP UNDO TABLESPACE undo_004;
SELECT NAME, SPACE_TYPE, STATE
FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
SELECT TABLESPACE_NAME, FILE_NAME, FILE_TYPE, ENGINE
FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME LIKE '%undo_00%'
ORDER BY TABLESPACE_NAME;
TABLESPACE_NAME FILE_NAME FILE_TYPE ENGINE
innodb_undo_001 ./undo_001 UNDO LOG InnoDB
innodb_undo_002 ./undo_002 UNDO LOG InnoDB
DROP TABLE t1;
DROP TABLE t2;
DROP PROCEDURE execute_dml;
UNINSTALL PLUGIN clone;