Skip to content

Commit 3e0ed9d

Browse files
PXC-4252: Script that auto-generates the option variable file for WSREP variables (#90)
1 parent 11ccf9d commit 3e0ed9d

File tree

2 files changed

+280
-50
lines changed

2 files changed

+280
-50
lines changed

pstress/generate_wsrep_options.sh

Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
##############################################################################################
2+
#!/bin/bash #
3+
# Created by Puneet Kaushik, Percona LLC #
4+
# Created on: 04-JULY-2023 #
5+
# #
6+
# Purpose: This script auto-generates the mysqld_options_pxc_wsrep_80.txt file #
7+
# Usage: ./generate_wsrep_options.sh <path to mysql install/base dir> #
8+
# References: https://docs.percona.com/percona-xtradb-cluster/8.0/wsrep-system-index.html #
9+
##############################################################################################
10+
11+
# Script expected argument
12+
BASEDIR=$1
13+
14+
# User variables
15+
OUTPUT_FILE=/tmp/mysqld_options_pxc_wsrep_80.txt
16+
17+
# Internal variables, do not change
18+
TEMP_FILE=/tmp/mysqld_options_pxc_wsrep_80.tmp
19+
20+
# Check if mysqld binaries exists
21+
if [ ! -r $BASEDIR/bin/mysqld ]; then
22+
echo "Error: no ./bin/mysqld or ./mysqld found!"
23+
exit 1
24+
fi
25+
26+
# Display function
27+
echoit(){
28+
echo "[$(date +'%T')] $1"
29+
echo "[$(date +'%T')] $1" >> /tmp/generate_wsrep_options.log
30+
}
31+
32+
33+
# Extract all wsrep options, their default values into temp file
34+
$BASEDIR/bin/mysqld --no-defaults --help --verbose | grep "^pxc-*" 2>/dev/null > ${TEMP_FILE}
35+
$BASEDIR/bin/mysqld --no-defaults --help --verbose | grep "^wsrep-*" 2>/dev/null >> ${TEMP_FILE}
36+
37+
# List of wsrep variables which must not be changed.
38+
EXCLUDED_LIST=( --wsrep-applier-FK-checks --wsrep-applier-UK-checks --wsrep-causal-reads --wsrep-cluster-address --wsrep-cluster-name --wsrep-data-home-dir --wsrep-dbug-option --wsrep-drupal-282555-workaround --wsrep-forced-binlog-format --wsrep-ignore-apply-errors --wsrep-min-log-verbosity --wsrep-node-address --wsrep-node-incoming-address --wsrep-node-name --wsrep-notify-cmd --wsrep-provider --wsrep-provider-options --wsrep-restart-slave --wsrep-slave-FK-checks --wsrep-slave-threads --wsrep-slave-UK-checks --wsrep-sst-donor --wsrep-sst-method --wsrep-sst-receive-address --wsrep-start-position --wsrep-SR-store --wsrep-sst-allowed-methods)
39+
40+
# Create an output file which contains all the options/values
41+
rm -rf $OUTPUT_FILE
42+
touch $OUTPUT_FILE
43+
44+
while read line; do
45+
OPTION="--$(echo ${line} | awk '{print $1}')"
46+
VALUE="$(echo ${line} | awk '{print $2}' | sed 's|^[ \t]*||;s|[ \t]*$||')"
47+
if [ "$VALUE" == "(No" ]; then
48+
echoit "Working on option '$OPTION' which has no default value..."
49+
else
50+
echoit "Working on option '$OPTION' with default value '$VALUE'..."
51+
fi
52+
if [[ " ${EXCLUDED_LIST[@]} " =~ " ${OPTION} " ]]; then
53+
echoit "Option '$OPTION' is logically excluded from being handled by this script..."
54+
elif [[ "$OPTION" == "--pxc-encrypt-cluster-traffic" ]]; then
55+
echoit " > Adding possible values 0 and 1 for option '${OPTION}' to the final list..."
56+
echo "$OPTION=0" >> $OUTPUT_FILE
57+
echo "$OPTION=1" >> $OUTPUT_FILE
58+
elif [[ "$OPTION" == "--pxc-maint-mode" ]]; then
59+
echoit " > Adding possible values disabled, shutdown and maintainance for option '${OPTION}' to the final list..."
60+
echo "$OPTION=DISABLED" >> $OUTPUT_FILE
61+
echo "$OPTION=SHUTDOWN" >> $OUTPUT_FILE
62+
echo "$OPTION=MAINTENANCE" >> $OUTPUT_FILE
63+
elif [[ "$OPTION" == "--pxc-maint-transition-period" ]]; then
64+
echoit " > Adding possible values 0,2,10,16 for option '${OPTION}' to the final list..."
65+
echo "$OPTION=0" >> $OUTPUT_FILE
66+
echo "$OPTION=2" >> $OUTPUT_FILE
67+
echo "$OPTION=10" >> $OUTPUT_FILE
68+
echo "$OPTION=16" >> $OUTPUT_FILE
69+
elif [[ "$OPTION" == "--pxc-strict-mode" ]]; then
70+
echoit " > Adding possible values DISABLED, PERMISSIVE, ENFORCING, MASTER for option '${OPTION}' to the final list..."
71+
echo "$OPTION=ENFORCING" >> $OUTPUT_FILE
72+
echo "$OPTION=DISABLED" >> $OUTPUT_FILE
73+
echo "$OPTION=PERMISSIVE" >> $OUTPUT_FILE
74+
echo "$OPTION=MASTER" >> $OUTPUT_FILE
75+
elif [[ "$OPTION" == "--wsrep-applier-threads" ]]; then
76+
echoit " > Adding possible values 1,2,12,24 for option '${OPTION}' to the final list..."
77+
echo "$OPTION=1" >> $OUTPUT_FILE
78+
echo "$OPTION=2" >> $OUTPUT_FILE
79+
echo "$OPTION=12" >> $OUTPUT_FILE
80+
echo "$OPTION=24" >> $OUTPUT_FILE
81+
elif [[ "$OPTION" == "--wsrep-auto-increment-control" ]]; then
82+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
83+
echo "$OPTION=0" >> $OUTPUT_FILE
84+
echo "$OPTION=1" >> $OUTPUT_FILE
85+
elif [[ "$OPTION" == "--wsrep-certification-rules" ]]; then
86+
echoit " > Adding possible values STRICT, OPTIMIZED for option '${OPTION}' to the final list..."
87+
echo "$OPTION=STRICT" >> $OUTPUT_FILE
88+
echo "$OPTION=OPTIMIZED" >> $OUTPUT_FILE
89+
elif [[ "$OPTION" == "--wsrep-certify-nonPK" ]]; then
90+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
91+
echo "$OPTION=0" >> $OUTPUT_FILE
92+
echo "$OPTION=1" >> $OUTPUT_FILE
93+
elif [[ "$OPTION" == "--wsrep-debug" ]]; then
94+
echoit " > Adding possible values NONE, SERVER, TRANSACTION, STREAMING , CLIENT for option '${OPTION}' to the final list..."
95+
echo "$OPTION=NONE" >> $OUTPUT_FILE
96+
echo "$OPTION=SERVER" >> $OUTPUT_FILE
97+
echo "$OPTION=TRANSACTION" >> $OUTPUT_FILE
98+
echo "$OPTION=STREAMING" >> $OUTPUT_FILE
99+
echo "$OPTION=CLIENT" >> $OUTPUT_FILE
100+
elif [[ "$OPTION" == "--wsrep-desync" ]]; then
101+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
102+
echo "$OPTION=0" >> $OUTPUT_FILE
103+
echo "$OPTION=1" >> $OUTPUT_FILE
104+
elif [[ "$OPTION" == "--wsrep-dirty-reads" ]]; then
105+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
106+
echo "$OPTION=0" >> $OUTPUT_FILE
107+
echo "$OPTION=1" >> $OUTPUT_FILE
108+
elif [[ "$OPTION" == "--wsrep-load-data-splitting" ]]; then
109+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
110+
echo "$OPTION=0" >> $OUTPUT_FILE
111+
echo "$OPTION=1" >> $OUTPUT_FILE
112+
elif [[ "$OPTION" == "--wsrep-log-conflicts" ]]; then
113+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
114+
echo "$OPTION=0" >> $OUTPUT_FILE
115+
echo "$OPTION=1" >> $OUTPUT_FILE
116+
elif [[ "$OPTION" == "--wsrep-max-ws-rows" ]]; then
117+
echoit " > Adding possible values 0,1,2,12,254,1023,2047,1048576 for option '${OPTION}' to the final list..."
118+
echo "$OPTION=0" >> $OUTPUT_FILE
119+
echo "$OPTION=1" >> $OUTPUT_FILE
120+
echo "$OPTION=2" >> $OUTPUT_FILE
121+
echo "$OPTION=12" >> $OUTPUT_FILE
122+
echo "$OPTION=254" >> $OUTPUT_FILE
123+
echo "$OPTION=1023" >> $OUTPUT_FILE
124+
echo "$OPTION=2047" >> $OUTPUT_FILE
125+
echo "$OPTION=1048576" >> $OUTPUT_FILE
126+
elif [[ "$OPTION" == "--wsrep-max-ws-size" ]]; then
127+
echoit " > Adding possible values 0,1,2,12,254,1023,2047,1048576 for option '${OPTION}' to the final list..."
128+
echo "$OPTION=0" >> $OUTPUT_FILE
129+
echo "$OPTION=1" >> $OUTPUT_FILE
130+
echo "$OPTION=2" >> $OUTPUT_FILE
131+
echo "$OPTION=12" >> $OUTPUT_FILE
132+
echo "$OPTION=254" >> $OUTPUT_FILE
133+
echo "$OPTION=1023" >> $OUTPUT_FILE
134+
echo "$OPTION=2047" >> $OUTPUT_FILE
135+
echo "$OPTION=1048576" >> $OUTPUT_FILE
136+
echo "$OPTION=2147483647" >> $OUTPUT_FILE
137+
elif [[ "$OPTION" == "--wsrep-mode" ]]; then
138+
echoit " > Adding possible values Empty, IGNORE_NATIVE_REPLICATION_FILTER_RULES for option '${OPTION}' to the final list..."
139+
echo "$OPTION=EMPTY" >> $OUTPUT_FILE
140+
echo "$OPTION=IGNORE_NATIVE_REPLICATION_FILTER_RULES" >> $OUTPUT_FILE
141+
elif [[ "$OPTION" == "--wsrep-on" ]]; then
142+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
143+
echo "$OPTION=0" >> $OUTPUT_FILE
144+
echo "$OPTION=1" >> $OUTPUT_FILE
145+
elif [[ "$OPTION" == "--wsrep-OSU-method" ]]; then
146+
echoit " > Adding possible values TOI, RSU, NBO for option '${OPTION}' to the final list..."
147+
echo "$OPTION=TOI" >> $OUTPUT_FILE
148+
echo "$OPTION=RSU" >> $OUTPUT_FILE
149+
echo "$OPTION=NBO" >> $OUTPUT_FILE
150+
elif [[ "$OPTION" == "--wsrep-recover" ]]; then
151+
echoit " > Adding possible values 0,1 for option '${OPTION}' to the final list..."
152+
echo "$OPTION=0" >> $OUTPUT_FILE
153+
echo "$OPTION=1" >> $OUTPUT_FILE
154+
elif [[ "$OPTION" == "--wsrep-reject-queries" ]]; then
155+
echoit " > Adding possible values NONE, ALL , ALL_KILL for option '${OPTION}' to the final list..."
156+
echo "$OPTION=NONE" >> $OUTPUT_FILE
157+
echo "$OPTION=ALL" >> $OUTPUT_FILE
158+
echo "$OPTION=ALL_KILL" >> $OUTPUT_FILE
159+
elif [[ "$OPTION" == "--wsrep-replicate-myisam" ]]; then
160+
echoit " > Adding possible values 0, 1 for option '${OPTION}' to the final list..."
161+
echo "$OPTION=0" >> $OUTPUT_FILE
162+
echo "$OPTION=1" >> $OUTPUT_FILE
163+
elif [[ "$OPTION" == "--wsrep-restart-replica" ]]; then
164+
echoit " > Adding possible values 0, 1 for option '${OPTION}' to the final list..."
165+
echo "$OPTION=0" >> $OUTPUT_FILE
166+
echo "$OPTION=1" >> $OUTPUT_FILE
167+
elif [[ "$OPTION" == "--wsrep-retry-autocommit" ]]; then
168+
echoit " > Adding possible values 0, 1 for option '${OPTION}' to the final list..."
169+
echo "$OPTION=0" >> $OUTPUT_FILE
170+
echo "$OPTION=1" >> $OUTPUT_FILE
171+
elif [[ "$OPTION" == "--wsrep-RSU-commit-timeout" ]]; then
172+
echoit " > Adding possible values 5000, 10000, 250000, 31536000000000 for option '${OPTION}' to the final list..."
173+
echo "$OPTION=5000" >> $OUTPUT_FILE
174+
echo "$OPTION=10000" >> $OUTPUT_FILE
175+
echo "$OPTION=250000" >> $OUTPUT_FILE
176+
echo "$OPTION=31536000000000" >> $OUTPUT_FILE
177+
elif [[ "$OPTION" == "--wsrep-sync-wait" ]]; then
178+
echoit " > Adding possible values 0,1,2,3,4,5,6,7 for option '${OPTION}' to the final list..."
179+
echo "$OPTION=0" >> $OUTPUT_FILE
180+
echo "$OPTION=1" >> $OUTPUT_FILE
181+
echo "$OPTION=2" >> $OUTPUT_FILE
182+
echo "$OPTION=3" >> $OUTPUT_FILE
183+
echo "$OPTION=4" >> $OUTPUT_FILE
184+
echo "$OPTION=5" >> $OUTPUT_FILE
185+
echo "$OPTION=6" >> $OUTPUT_FILE
186+
echo "$OPTION=7" >> $OUTPUT_FILE
187+
elif [[ "$OPTION" == "--wsrep-trx-fragment-size" ]]; then
188+
echoit " > Adding possible values 0,1,2,12,254,1023,2047,1048576 for option '${OPTION}' to the final list..."
189+
echo "$OPTION=0" >> $OUTPUT_FILE
190+
echo "$OPTION=1" >> $OUTPUT_FILE
191+
echo "$OPTION=2" >> $OUTPUT_FILE
192+
echo "$OPTION=12" >> $OUTPUT_FILE
193+
echo "$OPTION=254" >> $OUTPUT_FILE
194+
echo "$OPTION=1023" >> $OUTPUT_FILE
195+
echo "$OPTION=2047" >> $OUTPUT_FILE
196+
echo "$OPTION=1048576" >> $OUTPUT_FILE
197+
echo "$OPTION=2147483647" >> $OUTPUT_FILE
198+
elif [[ "$OPTION" == "--wsrep-trx-fragment-unit" ]]; then
199+
echoit " > Adding possible values bytes, rows , statements for option '${OPTION}' to the final list..."
200+
echo "$OPTION=bytes" >> $OUTPUT_FILE
201+
echo "$OPTION=rows" >> $OUTPUT_FILE
202+
echo "$OPTION=statements" >> $OUTPUT_FILE
203+
elif [[ "$OPTION" == "--wsrep-sst-donor-rejects-queries" ]]; then
204+
echoit " > Adding possible values 0, 1 for option '${OPTION}' to the final list..."
205+
echo "$OPTION=0" >> $OUTPUT_FILE
206+
echo "$OPTION=1" >> $OUTPUT_FILE
207+
elif [[ "$OPTION" == "--wsrep-gcache-encrypt" ]]; then
208+
echoit " > Adding possible values 0, 1 for option '${OPTION}' to the final list..."
209+
echo "$OPTION=0" >> $OUTPUT_FILE
210+
echo "$OPTION=1" >> $OUTPUT_FILE
211+
elif [[ "$OPTION" == "--wsrep-disk-pages-encrypt" ]]; then
212+
echoit " > Adding possible values 0, 1 for option '${OPTION}' to the final list..."
213+
echo "$OPTION=0" >> $OUTPUT_FILE
214+
echo "$OPTION=1" >> $OUTPUT_FILE
215+
elif [ "${VALUE}" == "" ]; then
216+
echoit " > Assert: Option '${OPTION}' is blank by default and not programmed into the script yet, please cover this in the script..."
217+
exit 1
218+
else
219+
echoit " > ${OPTION} IS NOT COVERED YET, PLEASE ADD!!!"
220+
exit 1
221+
fi
222+
done < $TEMP_FILE
223+
rm -rf $TEMP_FILE
224+
echo "Done! Output file: ${OUTPUT_FILE}"
Lines changed: 56 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,84 @@
1-
--pxc-encrypt-cluster-traffic=1
21
--pxc-encrypt-cluster-traffic=0
2+
--pxc-encrypt-cluster-traffic=1
3+
--pxc-maint-mode=DISABLED
4+
--pxc-maint-mode=SHUTDOWN
5+
--pxc-maint-mode=MAINTENANCE
36
--pxc-maint-transition-period=0
47
--pxc-maint-transition-period=2
5-
--pxc-maint-transition-period=4
6-
--pxc-maint-transition-period=8
8+
--pxc-maint-transition-period=10
79
--pxc-maint-transition-period=16
10+
--pxc-strict-mode=ENFORCING
811
--pxc-strict-mode=DISABLED
912
--pxc-strict-mode=PERMISSIVE
10-
--pxc-strict-mode=ENFORCING
1113
--pxc-strict-mode=MASTER
1214
--wsrep-OSU-method=TOI
1315
--wsrep-OSU-method=RSU
14-
--wsrep-auto-increment-control=1
16+
--wsrep-OSU-method=NBO
17+
--wsrep-RSU-commit-timeout=5000
18+
--wsrep-RSU-commit-timeout=10000
19+
--wsrep-RSU-commit-timeout=250000
20+
--wsrep-RSU-commit-timeout=31536000000000
21+
--wsrep-applier-threads=1
22+
--wsrep-applier-threads=2
23+
--wsrep-applier-threads=12
24+
--wsrep-applier-threads=24
1525
--wsrep-auto-increment-control=0
16-
--wsrep-causal-reads=1
17-
--wsrep-causal-reads=0
18-
--wsrep-certify-nonPK=1
26+
--wsrep-auto-increment-control=1
27+
--wsrep-certification-rules=STRICT
28+
--wsrep-certification-rules=OPTIMIZED
1929
--wsrep-certify-nonPK=0
20-
--wsrep-debug=1
21-
--wsrep-debug=0
22-
--wsrep-desync=1
30+
--wsrep-certify-nonPK=1
31+
--wsrep-debug=NONE
32+
--wsrep-debug=SERVER
33+
--wsrep-debug=TRANSACTION
34+
--wsrep-debug=STREAMING
35+
--wsrep-debug=CLIENT
2336
--wsrep-desync=0
24-
--wsrep-dirty-reads=1
37+
--wsrep-desync=1
2538
--wsrep-dirty-reads=0
26-
--wsrep-load-data-splitting=1
39+
--wsrep-dirty-reads=1
40+
--wsrep-disk-pages-encrypt=0
41+
--wsrep-disk-pages-encrypt=1
42+
--wsrep-gcache-encrypt=0
43+
--wsrep-gcache-encrypt=1
2744
--wsrep-load-data-splitting=0
28-
--wsrep-log-conflicts=1
45+
--wsrep-load-data-splitting=1
2946
--wsrep-log-conflicts=0
47+
--wsrep-log-conflicts=1
3048
--wsrep-max-ws-rows=0
3149
--wsrep-max-ws-rows=1
3250
--wsrep-max-ws-rows=2
3351
--wsrep-max-ws-rows=12
34-
--wsrep-max-ws-rows=24
3552
--wsrep-max-ws-rows=254
3653
--wsrep-max-ws-rows=1023
3754
--wsrep-max-ws-rows=2047
38-
--wsrep-max-ws-rows=-1125899906842624
39-
--wsrep-max-ws-rows=1125899906842624
55+
--wsrep-max-ws-rows=1048576
4056
--wsrep-max-ws-size=0
4157
--wsrep-max-ws-size=1
4258
--wsrep-max-ws-size=2
4359
--wsrep-max-ws-size=12
44-
--wsrep-max-ws-size=24
4560
--wsrep-max-ws-size=254
4661
--wsrep-max-ws-size=1023
4762
--wsrep-max-ws-size=2047
48-
--wsrep-max-ws-size=-1125899906842624
49-
--wsrep-max-ws-size=1125899906842624
50-
--wsrep-on=1
63+
--wsrep-max-ws-size=1048576
64+
--wsrep-max-ws-size=2147483647
65+
--wsrep-mode=EMPTY
66+
--wsrep-mode=IGNORE_NATIVE_REPLICATION_FILTER_RULES
5167
--wsrep-on=0
52-
--wsrep-preordered=1
53-
--wsrep-preordered=0
54-
--wsrep-recover=1
68+
--wsrep-on=1
5569
--wsrep-recover=0
70+
--wsrep-recover=1
5671
--wsrep-reject-queries=NONE
5772
--wsrep-reject-queries=ALL
5873
--wsrep-reject-queries=ALL_KILL
59-
--wsrep-replicate-myisam=1
6074
--wsrep-replicate-myisam=0
61-
--wsrep-restart-slave=1
62-
--wsrep-restart-slave=0
63-
--wsrep-retry-autocommit=1
75+
--wsrep-replicate-myisam=1
76+
--wsrep-restart-replica=0
77+
--wsrep-restart-replica=1
6478
--wsrep-retry-autocommit=0
65-
--wsrep-RSU-commit-timeout=2500
66-
--wsrep-RSU-commit-timeout=5000
67-
--wsrep-RSU-commit-timeout=10000
68-
--wsrep-RSU-commit-timeout=250000
69-
--wsrep-RSU-commit-timeout=31536000000000
70-
--wsrep-slave-FK-checks=1
71-
--wsrep-slave-FK-checks=0
72-
--wsrep-slave-UK-checks=1
73-
--wsrep-slave-UK-checks=0
74-
--wsrep-slave-threads=1
75-
--wsrep-slave-threads=2
76-
--wsrep-slave-threads=12
77-
--wsrep-slave-threads=24
78-
--wsrep-slave-threads=254
79-
--wsrep-slave-threads=1023
80-
--wsrep-slave-threads=2047
81-
--wsrep-slave-threads=-1125899906842624
82-
--wsrep-slave-threads=1125899906842624
83-
--wsrep-slave-UK-checks=1
84-
--wsrep-slave-UK-checks=0
85-
--wsrep-sst-donor-rejects-queries=1
79+
--wsrep-retry-autocommit=1
8680
--wsrep-sst-donor-rejects-queries=0
81+
--wsrep-sst-donor-rejects-queries=1
8782
--wsrep-sync-wait=0
8883
--wsrep-sync-wait=1
8984
--wsrep-sync-wait=2
@@ -92,4 +87,15 @@
9287
--wsrep-sync-wait=5
9388
--wsrep-sync-wait=6
9489
--wsrep-sync-wait=7
95-
--wsrep-sync-wait=-1
90+
--wsrep-trx-fragment-size=0
91+
--wsrep-trx-fragment-size=1
92+
--wsrep-trx-fragment-size=2
93+
--wsrep-trx-fragment-size=12
94+
--wsrep-trx-fragment-size=254
95+
--wsrep-trx-fragment-size=1023
96+
--wsrep-trx-fragment-size=2047
97+
--wsrep-trx-fragment-size=1048576
98+
--wsrep-trx-fragment-size=2147483647
99+
--wsrep-trx-fragment-unit=bytes
100+
--wsrep-trx-fragment-unit=rows
101+
--wsrep-trx-fragment-unit=statements

0 commit comments

Comments
 (0)