|
| 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}" |
0 commit comments