File: innodb_buffer_pool_dump_pct.test

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 (147 lines) | stat: -rw-r--r-- 4,786 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
# ************************************************************
# wl6504: This testcase is to check the functionality of the
# innodb_buffer_pool_dump_pct flag
# step 1.Set innodb_buffer_pool_dump_pct=100 and take the dump
# step 2.Set innodb_buffer_pool_dump_pct=50 and take the dump
# step 3.Compare the size of both the dump files
# Here if the size of step 1 > size of step 2 (pass) else fail
#*************************************************************

--echo # Set the environmental variables
let MYSQLD_DATADIR = `SELECT @@datadir`;

--echo # Create a table
CREATE TABLE tab5 (col1 int auto_increment primary key,
col2 VARCHAR(25), col3 varchar(25)) ENGINE=InnoDB;

-- echo # Create indexes
CREATE INDEX idx1 ON tab5(col2(10));
CREATE INDEX idx2 ON tab5(col3(10));

--echo # Insert a sample record
INSERT INTO tab5(col2,col3) VALUES('Test for wl6504','Test for dump pct');

--echo # Set the dump file name
SET GLOBAL innodb_buffer_pool_filename=ib_buffer_pool100;

SET GLOBAL innodb_buffer_pool_dump_pct=100;

#***********************************************************
# SELECT *
# FROM performance_schema.global_status
# WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
# gives
# a) VARIABLE_NAME                   VARIABLE_VALUE
#    INNODB_BUFFER_POOL_DUMP_STATUS  not started
#    in case there was no innodb_buffer_pool_dump since server start.
# b) Something like
#    VARIABLE_NAME                   VARIABLE_VALUE
#    INNODB_BUFFER_POOL_DUMP_STATUS  Buffer pool(s) dump completed at 130711 13:43:24
#    in case there was a innodb_buffer_pool_dump since server start.
# Attention:
# - There is no guarantee that the current test is the first test which
#   made an innodb_buffer_pool_dump since server startup.
# - The granularity of the timestamp is one second.
# - There could have been some dump caused by some previous test
#   just a few milliseconds before.
# In order to avoid conflict with previous tests, read the current value
# of INNODB_BUFFER_POOL_DUMP_STATUS
# and confirm that the timestamp is different after the dump
#***********************************************************

# Read the current value to compare with the new value.
--disable_warnings
SELECT variable_value INTO @IBPDS
FROM performance_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS';
--enable_warnings

--echo # Take the dump file
SET GLOBAL innodb_buffer_pool_dump_now=ON;

# Sleep one second in order to ensure that the time stamp is
# different at next dump
--sleep 1

--echo # Wait until the system table get updated & dump get created
--disable_warnings
let $wait_condition = SELECT count(*) = 1
FROM performance_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
AND variable_value != @IBPDS
AND variable_value like 'Buffer pool(s) dump completed at%';
--enable_warnings

--echo # Check the dump file exist in the DATADIR
--file_exists $MYSQLD_DATADIR/ib_buffer_pool100

--echo # Set the dump file name
SET GLOBAL innodb_buffer_pool_filename=ib_buffer_pool50;

--echo # Set the value 50
SET GLOBAL innodb_buffer_pool_dump_pct=50;

--echo # Check the value is 50
SELECT @@global.innodb_buffer_pool_dump_pct;

# Read the current value to compare with the new value.
--disable_warnings
SELECT variable_value INTO @IBPDS
FROM performance_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS';
--enable_warnings

--echo # Take the dump file
SET GLOBAL innodb_buffer_pool_dump_now=ON;

# Sleep one second in order to ensure that the time stamp is
# different at next dump
--sleep 1

--echo # Wait until the system table get updated & dump get created
--disable_warnings
let $wait_condition = SELECT count(*) = 1
FROM performance_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
AND variable_value != @IBPDS
AND variable_value like 'Buffer pool(s) dump completed at%'; 
--enable_warnings

--echo # Check the dump file exist in the DATADIR
--file_exists $MYSQLD_DATADIR/ib_buffer_pool50

--echo # Get the size of the dump files & compare
perl;
my $dir = $ENV{'MYSQLD_DATADIR'};
my $size;
opendir(DIR, $dir) or die $!;
while (my $file = readdir(DIR))
{

  if ($file =~ m/\ib_buffer_pool50$/) {
    $size50 = -s "$dir/$file";
  } elsif ($file =~ m/\ib_buffer_pool100$/) {
    $size100 = -s "$dir/$file";
  }

}

# Check the size of the dump files ,here size100 should always be greater
 if ($size100 > $size50) {
   print "wl6504 test PASS\n";
 } else {
   print "wl6504 test FAIL\n";
 }

 close(DIR);
 exit(0)
EOF

--echo # Reset the default value
SET GLOBAL innodb_buffer_pool_dump_pct=Default;
SET GLOBAL innodb_buffer_pool_filename=Default;

--echo # Cleanup
--remove_file $MYSQLD_DATADIR/ib_buffer_pool100
--remove_file $MYSQLD_DATADIR/ib_buffer_pool50
DROP TABLE tab5;