From 6b790f811cda9d2fe692cd9d378b39d6d9a22e8a Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Wed, 27 Jul 2022 08:27:18 +0200 Subject: [PATCH 01/23] K8SPXC-1071 - ProxySQL - Add support for percona-scheduler-admin --- proxysql/Dockerfile | 10 ++++-- proxysql/Dockerfile.k8s | 4 +-- proxysql/dockerdir/entrypoint.sh | 33 ++++++++++++++----- .../dockerdir/usr/bin/add_proxysql_nodes.sh | 2 +- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 24 +++++++------- 5 files changed, 47 insertions(+), 26 deletions(-) diff --git a/proxysql/Dockerfile b/proxysql/Dockerfile index aa9deabbd..73df9a8e6 100644 --- a/proxysql/Dockerfile +++ b/proxysql/Dockerfile @@ -54,6 +54,12 @@ RUN set -ex; \ microdnf clean all; \ rm -rf /var/cache/dnf /var/cache/yum +RUN set -ex; \ + curl -Lf -o /tmp/server.rpm https://repo.percona.com/pxc-80/yum/release/8.0/RPMS/x86_64/percona-xtradb-cluster-server-8.0.28-19.1.el8.x86_64.rpm; \ + rpmkeys --checksig /tmp/server.rpm; \ + rpm2cpio /tmp/server.rpm | cpio -idmv; \ + rm -rf /tmp/server.rpm + RUN groupadd -g 1001 proxysql; \ useradd -u 1001 -r -g 1001 -s /sbin/nologin \ -c "Default Application User" proxysql @@ -78,8 +84,8 @@ RUN cp /usr/share/doc/proxysql2/LICENSE /licenses/LICENSE.proxysql COPY dockerdir / COPY --from=go_builder /go/src/github.com/percona/percona-xtradb-cluster-operator/src/peer-list /usr/bin/ -RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf; \ - chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf +RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml; \ + chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml USER 1001 diff --git a/proxysql/Dockerfile.k8s b/proxysql/Dockerfile.k8s index 5babc93ed..747fb1921 100644 --- a/proxysql/Dockerfile.k8s +++ b/proxysql/Dockerfile.k8s @@ -94,8 +94,8 @@ RUN cp /usr/share/doc/proxysql2/LICENSE /licenses/LICENSE.proxysql COPY dockerdir / COPY --from=go_builder /go/src/github.com/percona/percona-xtradb-cluster-operator/src/peer-list /usr/bin/ -RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf; \ - chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf +RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml; \ + chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml USER 1001 diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index e276b9155..c05fb6ae5 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -3,12 +3,15 @@ set -o xtrace PROXY_CFG=/etc/proxysql/proxysql.cnf -PROXY_ADMIN_CFG=/etc/proxysql-admin.cnf +PROXY_SCHEDULER_CFG=/etc/config.toml +temp_proxy_scheduler_cfg=$(mktemp) if [ -n ${PROXYSQL_SERVICE} ]; then MYSQL_INTERFACES='0.0.0.0:3306;0.0.0.0:33062' CLUSTER_PORT='33062' - sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} + sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PROXY_SCHEDULER_CFG} | \ + sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} fi sed "s/interfaces=\"0.0.0.0:3306\"/interfaces=\"${MYSQL_INTERFACES:-0.0.0.0:3306}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} @@ -24,13 +27,16 @@ sed "s/\"admin:admin\"/\"${PROXY_ADMIN_USER:-admin}:${PROXY_ADMIN_PASSWORD:-admi sed "s/cluster_username=\"admin\"/cluster_username=\"${PROXY_ADMIN_USER:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} -sed "s/PROXYSQL_USERNAME='admin'/PROXYSQL_USERNAME='${PROXY_ADMIN_USER:-admin}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} -sed "s/PROXYSQL_PASSWORD='admin'/PROXYSQL_PASSWORD='${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} -sed "s/CLUSTER_USERNAME='admin'/CLUSTER_USERNAME='operator'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} -sed "s/CLUSTER_PASSWORD='admin'/CLUSTER_PASSWORD='${OPERATOR_PASSWORD_ESCAPED:-operator}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} -sed "s/CLUSTER_PORT='3306'/CLUSTER_PORT='${CLUSTER_PORT:-3306}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} -sed "s/MONITOR_USERNAME='monitor'/MONITOR_USERNAME='monitor'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} -sed "s/MONITOR_PASSWORD='monitor'/MONITOR_PASSWORD='${MONITOR_PASSWORD_ESCAPED:-monitor}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG} + +sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" ${PROXY_SCHEDULER_CFG} | \ +sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \ +sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \ +sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \ +sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \ +sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \ +sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${temp_proxy_scheduler_cfg} +cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + set -o xtrace ## SSL/TLS support @@ -41,10 +47,14 @@ fi SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl} if [ -f "${SSL_DIR}/ca.crt" ]; then CA=${SSL_DIR}/ca.crt + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} fi SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal} if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then CA=${SSL_INTERNAL_DIR}/ca.crt + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} fi KEY=${SSL_DIR}/tls.key @@ -60,7 +70,12 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the sed "s^ssl_p2s_ca=\"\"^ssl_p2s_ca=\"$CA\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_key=\"\"^ssl_p2s_key=\"$KEY\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_cert=\"\"^ssl_p2s_cert=\"$CERT\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} + sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PROXY_SCHEDULER_CFG} | \ + sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ + sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} fi +rm ${temp_proxy_scheduler_cfg} if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then cp "${SSL_DIR}/tls.key" /var/lib/proxysql/proxysql-key.pem diff --git a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh index eae069777..e48268ba2 100755 --- a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh @@ -15,7 +15,7 @@ function proxysql_admin_exec() { function wait_for_proxysql() { local server="$1" echo "Waiting for host $server to be online..." - while [ "$(proxysql_admin_exec "$server" 'SELECT MAX(active) FROM runtime_mysql_galera_hostgroups')" != "1" ] + while [ "$(proxysql_admin_exec "$server" 'SELECT MAX(active) FROM runtime_scheduler')" != "1" ] do echo "ProxySQL is not up yet... sleeping ..." sleep 1 diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index e72e5f082..205abca75 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -55,34 +55,34 @@ function main() { wait_for_proxy SSL_ARG="" + temp=$(mktemp) if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then - SSL_ARG="--use-ssl=yes" + sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml fi - sed "s/WRITE_NODE=.*/WRITE_NODE='$pod_zero.$service:3306'/g" /etc/proxysql-admin.cnf 1<> /etc/proxysql-admin.cnf + sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + rm ${temp} - proxysql-admin \ - --config-file=/etc/proxysql-admin.cnf \ - --cluster-hostname="$first_host" \ + percona-scheduler-admin \ + --config-file=/etc/config.toml \ + --write-node="$pod_zero.$service:3306" \ --enable \ --update-cluster \ - --force \ --remove-all-servers \ --disable-updates \ --force \ $SSL_ARG - proxysql-admin \ - --config-file=/etc/proxysql-admin.cnf \ - --cluster-hostname="$first_host" \ + percona-scheduler-admin \ + --config-file=/etc/config.toml \ + --write-node="$pod_zero.$service:3306" \ --sync-multi-cluster-users \ --add-query-rule \ --disable-updates \ --force - proxysql-admin \ - --config-file=/etc/proxysql-admin.cnf \ - --cluster-hostname="$first_host" \ + percona-scheduler-admin \ + --config-file=/etc/config.toml \ --update-mysql-version echo "All done!" From 8178569c9b9616845babf6f611c24d75281856cc Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Tue, 23 Aug 2022 20:23:33 +0200 Subject: [PATCH 02/23] K8SPXC-1071 - ProxySQL - Make percona-scheduler-admin optional --- proxysql/dockerdir/entrypoint.sh | 68 ++++++++++------ .../dockerdir/usr/bin/add_proxysql_nodes.sh | 7 +- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 78 +++++++++++++------ 3 files changed, 105 insertions(+), 48 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index c05fb6ae5..1758cf777 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -3,15 +3,23 @@ set -o xtrace PROXY_CFG=/etc/proxysql/proxysql.cnf -PROXY_SCHEDULER_CFG=/etc/config.toml -temp_proxy_scheduler_cfg=$(mktemp) +if [ "${SCHEDULER}" == "percona" ]; then + PROXY_SCHEDULER_CFG=/etc/config.toml + temp_proxy_scheduler_cfg=$(mktemp) +else + PROXY_SCHEDULER_CFG=/etc/proxysql-admin.cnf +fi if [ -n ${PROXYSQL_SERVICE} ]; then MYSQL_INTERFACES='0.0.0.0:3306;0.0.0.0:33062' CLUSTER_PORT='33062' - sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PROXY_SCHEDULER_CFG} | \ - sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + if [ "${SCHEDULER}" == "percona" ]; then + sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PROXY_SCHEDULER_CFG} | \ + sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + else + sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + fi fi sed "s/interfaces=\"0.0.0.0:3306\"/interfaces=\"${MYSQL_INTERFACES:-0.0.0.0:3306}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} @@ -28,14 +36,24 @@ sed "s/cluster_username=\"admin\"/cluster_username=\"${PROXY_ADMIN_USER:-admin}\ sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} -sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" ${PROXY_SCHEDULER_CFG} | \ -sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \ -sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \ -sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \ -sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \ -sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \ -sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${temp_proxy_scheduler_cfg} -cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} +if [ "${SCHEDULER}" == "percona" ]; then + sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" ${PROXY_SCHEDULER_CFG} | \ + sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \ + sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \ + sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \ + sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \ + sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \ + sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} +else + sed "s/PROXYSQL_USERNAME='admin'/PROXYSQL_USERNAME='${PROXY_ADMIN_USER:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + sed "s/PROXYSQL_PASSWORD='admin'/PROXYSQL_PASSWORD='${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + sed "s/CLUSTER_USERNAME='admin'/CLUSTER_USERNAME='operator'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + sed "s/CLUSTER_PASSWORD='admin'/CLUSTER_PASSWORD='${OPERATOR_PASSWORD_ESCAPED:-operator}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + sed "s/CLUSTER_PORT='3306'/CLUSTER_PORT='${CLUSTER_PORT:-3306}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + sed "s/MONITOR_USERNAME='monitor'/MONITOR_USERNAME='monitor'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + sed "s/MONITOR_PASSWORD='monitor'/MONITOR_PASSWORD='${MONITOR_PASSWORD_ESCAPED:-monitor}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} +fi set -o xtrace @@ -47,14 +65,18 @@ fi SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl} if [ -f "${SSL_DIR}/ca.crt" ]; then CA=${SSL_DIR}/ca.crt - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + if [ "${SCHEDULER}" == "percona" ]; then + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + fi fi SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal} if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then CA=${SSL_INTERNAL_DIR}/ca.crt - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + if [ "${SCHEDULER}" == "percona" ]; then + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + fi fi KEY=${SSL_DIR}/tls.key @@ -70,12 +92,14 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the sed "s^ssl_p2s_ca=\"\"^ssl_p2s_ca=\"$CA\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_key=\"\"^ssl_p2s_key=\"$KEY\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_cert=\"\"^ssl_p2s_cert=\"$CERT\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} - sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PROXY_SCHEDULER_CFG} | \ - sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ - sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + if [ "${SCHEDULER}" == "percona" ]; then + sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PROXY_SCHEDULER_CFG} | \ + sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ + sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} + rm ${temp_proxy_scheduler_cfg} + fi fi -rm ${temp_proxy_scheduler_cfg} if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then cp "${SSL_DIR}/tls.key" /var/lib/proxysql/proxysql-key.pem diff --git a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh index e48268ba2..b5658d991 100755 --- a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh @@ -15,7 +15,12 @@ function proxysql_admin_exec() { function wait_for_proxysql() { local server="$1" echo "Waiting for host $server to be online..." - while [ "$(proxysql_admin_exec "$server" 'SELECT MAX(active) FROM runtime_scheduler')" != "1" ] + if [ "${SCHEDULER}" == "percona" ]; then + PROXYSQL_TABLE="runtime_scheduler" + else + PROXYSQL_TABLE="runtime_mysql_galera_hostgroups" + fi + while [ "$(proxysql_admin_exec "$server" "SELECT MAX(active) FROM ${PROXYSQL_TABLE}")" != "1" ] do echo "ProxySQL is not up yet... sleeping ..." sleep 1 diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 205abca75..1ad1334b6 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -57,33 +57,61 @@ function main() { SSL_ARG="" temp=$(mktemp) if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then - sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + if [ "${SCHEDULER}" == "percona" ]; then + sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + else + SSL_ARG="--use-ssl=yes" + fi fi - sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml - rm ${temp} - - percona-scheduler-admin \ - --config-file=/etc/config.toml \ - --write-node="$pod_zero.$service:3306" \ - --enable \ - --update-cluster \ - --remove-all-servers \ - --disable-updates \ - --force \ - $SSL_ARG - - percona-scheduler-admin \ - --config-file=/etc/config.toml \ - --write-node="$pod_zero.$service:3306" \ - --sync-multi-cluster-users \ - --add-query-rule \ - --disable-updates \ - --force - - percona-scheduler-admin \ - --config-file=/etc/config.toml \ - --update-mysql-version + if [ "${SCHEDULER}" == "percona" ]; then + sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + rm ${temp} + + percona-scheduler-admin \ + --config-file=/etc/config.toml \ + --write-node="$pod_zero.$service:3306" \ + --enable \ + --update-cluster \ + --remove-all-servers \ + --disable-updates \ + --force + + percona-scheduler-admin \ + --config-file=/etc/config.toml \ + --write-node="$pod_zero.$service:3306" \ + --sync-multi-cluster-users \ + --add-query-rule \ + --disable-updates \ + --force + + percona-scheduler-admin \ + --config-file=/etc/config.toml \ + --update-mysql-version + else + proxysql-admin \ + --config-file=/etc/proxysql-admin.cnf \ + --cluster-hostname="$first_host" \ + --enable \ + --update-cluster \ + --force \ + --remove-all-servers \ + --disable-updates \ + $SSL_ARG + + proxysql-admin \ + --config-file=/etc/proxysql-admin.cnf \ + --cluster-hostname="$first_host" \ + --sync-multi-cluster-users \ + --add-query-rule \ + --disable-updates \ + --force + + proxysql-admin \ + --config-file=/etc/proxysql-admin.cnf \ + --cluster-hostname="$first_host" \ + --update-mysql-version + fi echo "All done!" } From 7305cb79c4e340604173443ea252f83a5ab145fb Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Wed, 24 Aug 2022 13:26:37 +0200 Subject: [PATCH 03/23] Remove test installation of percona-xtradb-cluster-server package for proxysql --- proxysql/Dockerfile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/proxysql/Dockerfile b/proxysql/Dockerfile index 73df9a8e6..7844d5c5e 100644 --- a/proxysql/Dockerfile +++ b/proxysql/Dockerfile @@ -54,12 +54,6 @@ RUN set -ex; \ microdnf clean all; \ rm -rf /var/cache/dnf /var/cache/yum -RUN set -ex; \ - curl -Lf -o /tmp/server.rpm https://repo.percona.com/pxc-80/yum/release/8.0/RPMS/x86_64/percona-xtradb-cluster-server-8.0.28-19.1.el8.x86_64.rpm; \ - rpmkeys --checksig /tmp/server.rpm; \ - rpm2cpio /tmp/server.rpm | cpio -idmv; \ - rm -rf /tmp/server.rpm - RUN groupadd -g 1001 proxysql; \ useradd -u 1001 -r -g 1001 -s /sbin/nologin \ -c "Default Application User" proxysql From 3a25d1868729c0a9a74a164dadc2bcb8e09fa7f6 Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Thu, 15 Sep 2022 20:51:19 +0200 Subject: [PATCH 04/23] Set writer and reader hostgroups to old values --- proxysql/dockerdir/entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 1758cf777..c66ddc3cb 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -15,6 +15,8 @@ if [ -n ${PROXYSQL_SERVICE} ]; then CLUSTER_PORT='33062' if [ "${SCHEDULER}" == "percona" ]; then sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PROXY_SCHEDULER_CFG} | \ + sed "s/^hgW.*=.*$/hgW = 11/" | \ + sed "s/^hgR.*=.*$/hgR = 10/" | \ sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg} cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} else From 8b98418151d833aea179e8334238da3caaafdb2e Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Mon, 17 Oct 2022 14:59:21 +0200 Subject: [PATCH 05/23] Always configure both proxysql schedulers --- proxysql/dockerdir/entrypoint.sh | 88 ++++++++++----------- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 4 + 2 files changed, 44 insertions(+), 48 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index c66ddc3cb..16209e394 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -3,25 +3,23 @@ set -o xtrace PROXY_CFG=/etc/proxysql/proxysql.cnf -if [ "${SCHEDULER}" == "percona" ]; then - PROXY_SCHEDULER_CFG=/etc/config.toml - temp_proxy_scheduler_cfg=$(mktemp) -else - PROXY_SCHEDULER_CFG=/etc/proxysql-admin.cnf -fi +# Percona scheduler +PERCONA_SCHEDULER_CFG=/etc/config.toml +temp_proxy_scheduler_cfg=$(mktemp) +# proxysql-admin scheduler +PROXY_SCHEDULER_CFG=/etc/proxysql-admin.cnf if [ -n ${PROXYSQL_SERVICE} ]; then MYSQL_INTERFACES='0.0.0.0:3306;0.0.0.0:33062' CLUSTER_PORT='33062' - if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PROXY_SCHEDULER_CFG} | \ - sed "s/^hgW.*=.*$/hgW = 11/" | \ - sed "s/^hgR.*=.*$/hgR = 10/" | \ - sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} - else - sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} - fi + # Percona scheduler + sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CFG} | \ + sed "s/^hgW.*=.*$/hgW = 11/" | \ + sed "s/^hgR.*=.*$/hgR = 10/" | \ + sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + # proxysql-admin scheduler + sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} fi sed "s/interfaces=\"0.0.0.0:3306\"/interfaces=\"${MYSQL_INTERFACES:-0.0.0.0:3306}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} @@ -38,24 +36,23 @@ sed "s/cluster_username=\"admin\"/cluster_username=\"${PROXY_ADMIN_USER:-admin}\ sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} -if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" ${PROXY_SCHEDULER_CFG} | \ - sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \ - sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \ - sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \ - sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \ - sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \ - sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} -else - sed "s/PROXYSQL_USERNAME='admin'/PROXYSQL_USERNAME='${PROXY_ADMIN_USER:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} - sed "s/PROXYSQL_PASSWORD='admin'/PROXYSQL_PASSWORD='${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} - sed "s/CLUSTER_USERNAME='admin'/CLUSTER_USERNAME='operator'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} - sed "s/CLUSTER_PASSWORD='admin'/CLUSTER_PASSWORD='${OPERATOR_PASSWORD_ESCAPED:-operator}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} - sed "s/CLUSTER_PORT='3306'/CLUSTER_PORT='${CLUSTER_PORT:-3306}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} - sed "s/MONITOR_USERNAME='monitor'/MONITOR_USERNAME='monitor'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} - sed "s/MONITOR_PASSWORD='monitor'/MONITOR_PASSWORD='${MONITOR_PASSWORD_ESCAPED:-monitor}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} -fi +# Percona scheduler +sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" ${PERCONA_SCHEDULER_CFG} | \ +sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \ +sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \ +sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \ +sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \ +sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \ +sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${temp_proxy_scheduler_cfg} +cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} +# proxysql-admin scheduler +sed "s/PROXYSQL_USERNAME='admin'/PROXYSQL_USERNAME='${PROXY_ADMIN_USER:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} +sed "s/PROXYSQL_PASSWORD='admin'/PROXYSQL_PASSWORD='${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} +sed "s/CLUSTER_USERNAME='admin'/CLUSTER_USERNAME='operator'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} +sed "s/CLUSTER_PASSWORD='admin'/CLUSTER_PASSWORD='${OPERATOR_PASSWORD_ESCAPED:-operator}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} +sed "s/CLUSTER_PORT='3306'/CLUSTER_PORT='${CLUSTER_PORT:-3306}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} +sed "s/MONITOR_USERNAME='monitor'/MONITOR_USERNAME='monitor'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} +sed "s/MONITOR_PASSWORD='monitor'/MONITOR_PASSWORD='${MONITOR_PASSWORD_ESCAPED:-monitor}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} set -o xtrace @@ -67,18 +64,14 @@ fi SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl} if [ -f "${SSL_DIR}/ca.crt" ]; then CA=${SSL_DIR}/ca.crt - if [ "${SCHEDULER}" == "percona" ]; then - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} - fi + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} fi SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal} if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then CA=${SSL_INTERNAL_DIR}/ca.crt - if [ "${SCHEDULER}" == "percona" ]; then - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} - fi + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} fi KEY=${SSL_DIR}/tls.key @@ -94,13 +87,12 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the sed "s^ssl_p2s_ca=\"\"^ssl_p2s_ca=\"$CA\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_key=\"\"^ssl_p2s_key=\"$KEY\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_cert=\"\"^ssl_p2s_cert=\"$CERT\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} - if [ "${SCHEDULER}" == "percona" ]; then - sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PROXY_SCHEDULER_CFG} | \ - sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ - sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG} - rm ${temp_proxy_scheduler_cfg} - fi + # Percona scheduler + sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PERCONA_SCHEDULER_CFG} | \ + sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ + sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} + cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + rm ${temp_proxy_scheduler_cfg} fi if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 1ad1334b6..75ffae768 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -68,6 +68,8 @@ function main() { sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml rm ${temp} + proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable || true + percona-scheduler-admin \ --config-file=/etc/config.toml \ --write-node="$pod_zero.$service:3306" \ @@ -89,6 +91,8 @@ function main() { --config-file=/etc/config.toml \ --update-mysql-version else + percona-scheduler-admin --config-file=/etc/config.toml --disable || true + proxysql-admin \ --config-file=/etc/proxysql-admin.cnf \ --cluster-hostname="$first_host" \ From fa1754abdbfffbea1c364d1cd33689288d881aea Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Fri, 4 Nov 2022 12:45:05 +0100 Subject: [PATCH 06/23] Fix review comments --- proxysql/dockerdir/entrypoint.sh | 7 +++---- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 16209e394..5aafe729d 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -65,13 +65,13 @@ SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl} if [ -f "${SSL_DIR}/ca.crt" ]; then CA=${SSL_DIR}/ca.crt sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + cp -f ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} fi SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal} if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then CA=${SSL_INTERNAL_DIR}/ca.crt sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + cp -f ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} fi KEY=${SSL_DIR}/tls.key @@ -91,8 +91,7 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PERCONA_SCHEDULER_CFG} | \ sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} - rm ${temp_proxy_scheduler_cfg} + mv ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} fi if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 75ffae768..e0f55cc98 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -58,15 +58,14 @@ function main() { temp=$(mktemp) if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml else SSL_ARG="--use-ssl=yes" fi fi if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml - rm ${temp} + sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && mv ${temp} /etc/config.toml proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable || true From d417a17a4c3c94788e92c96eba1498dd65019492 Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Fri, 4 Nov 2022 14:02:42 +0100 Subject: [PATCH 07/23] Revert "Fix review comments" This reverts commit fa1754abdbfffbea1c364d1cd33689288d881aea. --- proxysql/dockerdir/entrypoint.sh | 7 ++++--- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 5aafe729d..16209e394 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -65,13 +65,13 @@ SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl} if [ -f "${SSL_DIR}/ca.crt" ]; then CA=${SSL_DIR}/ca.crt sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp -f ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} fi SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal} if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then CA=${SSL_INTERNAL_DIR}/ca.crt sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp -f ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} fi KEY=${SSL_DIR}/tls.key @@ -91,7 +91,8 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PERCONA_SCHEDULER_CFG} | \ sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} - mv ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + rm ${temp_proxy_scheduler_cfg} fi if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index e0f55cc98..75ffae768 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -58,14 +58,15 @@ function main() { temp=$(mktemp) if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml + sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml else SSL_ARG="--use-ssl=yes" fi fi if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && mv ${temp} /etc/config.toml + sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + rm ${temp} proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable || true From f7f53f08ef18e88775c5a4fd56607619bf6dfaf4 Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Fri, 4 Nov 2022 14:30:00 +0100 Subject: [PATCH 08/23] Fix review comments --- proxysql/dockerdir/entrypoint.sh | 24 ++++++++++----------- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 16209e394..68b9eeda7 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -5,7 +5,7 @@ set -o xtrace PROXY_CFG=/etc/proxysql/proxysql.cnf # Percona scheduler PERCONA_SCHEDULER_CFG=/etc/config.toml -temp_proxy_scheduler_cfg=$(mktemp) +TEMP_PROXY_SCHEDULER_CFG=$(mktemp) # proxysql-admin scheduler PROXY_SCHEDULER_CFG=/etc/proxysql-admin.cnf @@ -16,8 +16,8 @@ if [ -n ${PROXYSQL_SERVICE} ]; then sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CFG} | \ sed "s/^hgW.*=.*$/hgW = 11/" | \ sed "s/^hgR.*=.*$/hgR = 10/" | \ - sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + sed "s/^clustered.*=.*false$/clustered = true/" > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} # proxysql-admin scheduler sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} fi @@ -43,8 +43,8 @@ sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESC sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \ sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \ sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \ -sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${temp_proxy_scheduler_cfg} -cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} +sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${TEMP_PROXY_SCHEDULER_CFG} +cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} # proxysql-admin scheduler sed "s/PROXYSQL_USERNAME='admin'/PROXYSQL_USERNAME='${PROXY_ADMIN_USER:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} sed "s/PROXYSQL_PASSWORD='admin'/PROXYSQL_PASSWORD='${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} @@ -64,14 +64,14 @@ fi SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl} if [ -f "${SSL_DIR}/ca.crt" ]; then CA=${SSL_DIR}/ca.crt - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} fi SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal} if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then CA=${SSL_INTERNAL_DIR}/ca.crt - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} fi KEY=${SSL_DIR}/tls.key @@ -90,9 +90,9 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the # Percona scheduler sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PERCONA_SCHEDULER_CFG} | \ sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ - sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg} - cp ${temp_proxy_scheduler_cfg} ${PERCONA_SCHEDULER_CFG} - rm ${temp_proxy_scheduler_cfg} + sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} + rm ${TEMP_PROXY_SCHEDULER_CFG} fi if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 75ffae768..99f9237b4 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -58,14 +58,14 @@ function main() { temp=$(mktemp) if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml else SSL_ARG="--use-ssl=yes" fi fi if [ "${SCHEDULER}" == "percona" ]; then - sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml + sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml rm ${temp} proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable || true From 9bb1b8d3d351d55d7757af3d0813c6336b94f435 Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Mon, 7 Nov 2022 11:17:15 +0100 Subject: [PATCH 09/23] Fix tabs in proxysql entrypoint --- proxysql/dockerdir/entrypoint.sh | 36 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 68b9eeda7..acdf82ec8 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -12,14 +12,14 @@ PROXY_SCHEDULER_CFG=/etc/proxysql-admin.cnf if [ -n ${PROXYSQL_SERVICE} ]; then MYSQL_INTERFACES='0.0.0.0:3306;0.0.0.0:33062' CLUSTER_PORT='33062' - # Percona scheduler - sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CFG} | \ - sed "s/^hgW.*=.*$/hgW = 11/" | \ - sed "s/^hgR.*=.*$/hgR = 10/" | \ - sed "s/^clustered.*=.*false$/clustered = true/" > ${TEMP_PROXY_SCHEDULER_CFG} - cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} - # proxysql-admin scheduler - sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} + # Percona scheduler + sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CFG} | \ + sed "s/^hgW.*=.*$/hgW = 11/" | \ + sed "s/^hgR.*=.*$/hgR = 10/" | \ + sed "s/^clustered.*=.*false$/clustered = true/" > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} + # proxysql-admin scheduler + sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} fi sed "s/interfaces=\"0.0.0.0:3306\"/interfaces=\"${MYSQL_INTERFACES:-0.0.0.0:3306}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} @@ -64,14 +64,14 @@ fi SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl} if [ -f "${SSL_DIR}/ca.crt" ]; then CA=${SSL_DIR}/ca.crt - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${TEMP_PROXY_SCHEDULER_CFG} - cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} fi SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal} if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then CA=${SSL_INTERNAL_DIR}/ca.crt - sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${TEMP_PROXY_SCHEDULER_CFG} - cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} + sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG} > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} fi KEY=${SSL_DIR}/tls.key @@ -87,12 +87,12 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the sed "s^ssl_p2s_ca=\"\"^ssl_p2s_ca=\"$CA\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_key=\"\"^ssl_p2s_key=\"$KEY\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s^ssl_p2s_cert=\"\"^ssl_p2s_cert=\"$CERT\"^" ${PROXY_CFG} 1<> ${PROXY_CFG} - # Percona scheduler - sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PERCONA_SCHEDULER_CFG} | \ - sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ - sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${TEMP_PROXY_SCHEDULER_CFG} - cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} - rm ${TEMP_PROXY_SCHEDULER_CFG} + # Percona scheduler + sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PERCONA_SCHEDULER_CFG} | \ + sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \ + sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${TEMP_PROXY_SCHEDULER_CFG} + cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} + rm ${TEMP_PROXY_SCHEDULER_CFG} fi if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then From e40918091e84d813d81106ea0aa3079d4c66dc7c Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Wed, 9 Nov 2022 17:45:32 +0100 Subject: [PATCH 10/23] Set failBack=true for proxysql-scheduler-admin --- proxysql/dockerdir/entrypoint.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index acdf82ec8..729db131e 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -16,7 +16,8 @@ if [ -n ${PROXYSQL_SERVICE} ]; then sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CFG} | \ sed "s/^hgW.*=.*$/hgW = 11/" | \ sed "s/^hgR.*=.*$/hgR = 10/" | \ - sed "s/^clustered.*=.*false$/clustered = true/" > ${TEMP_PROXY_SCHEDULER_CFG} + sed "s/^clustered.*=.*false$/clustered = true/" | \ + sed "s/^failBack.*=.*false$/failBack = true/" > ${TEMP_PROXY_SCHEDULER_CFG} cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} # proxysql-admin scheduler sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} From 04126cabd6fae644db0bf29200621c99b71dcfee Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Thu, 10 Nov 2022 17:17:33 +0100 Subject: [PATCH 11/23] Make proxysql cleanup in add_pxc_nodes.sh conditional --- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 99f9237b4..1e3bd7135 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -68,7 +68,12 @@ function main() { sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml rm ${temp} - proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable || true + set +o errexit + if proxysql-admin --config-file=/etc/proxysql-admin.cnf --is-enabled >/dev/null 2>&1; then + echo "Cleaning setup from proxysql-admin..." + proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable + fi + set -o errexit percona-scheduler-admin \ --config-file=/etc/config.toml \ @@ -91,7 +96,12 @@ function main() { --config-file=/etc/config.toml \ --update-mysql-version else - percona-scheduler-admin --config-file=/etc/config.toml --disable || true + set +o errexit + if percona-scheduler-admin --config-file=/etc/config.toml --is-enabled >/dev/null 2>&1; then + echo "Cleaning setup from percona-scheduler-admin..." + percona-scheduler-admin --config-file=/etc/config.toml --disable + fi + set -o errexit proxysql-admin \ --config-file=/etc/proxysql-admin.cnf \ From c71193ddec2a00908caaba056ba7ff6c0143aab0 Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Mon, 14 Nov 2022 20:34:19 +0100 Subject: [PATCH 12/23] Rename proxysql env variable SCHEDULER to PXC_HANDLER --- proxysql/dockerdir/entrypoint.sh | 6 +++--- proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh | 2 +- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 729db131e..3dd8789d1 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -6,7 +6,7 @@ PROXY_CFG=/etc/proxysql/proxysql.cnf # Percona scheduler PERCONA_SCHEDULER_CFG=/etc/config.toml TEMP_PROXY_SCHEDULER_CFG=$(mktemp) -# proxysql-admin scheduler +# internal scheduler PROXY_SCHEDULER_CFG=/etc/proxysql-admin.cnf if [ -n ${PROXYSQL_SERVICE} ]; then @@ -19,7 +19,7 @@ if [ -n ${PROXYSQL_SERVICE} ]; then sed "s/^clustered.*=.*false$/clustered = true/" | \ sed "s/^failBack.*=.*false$/failBack = true/" > ${TEMP_PROXY_SCHEDULER_CFG} cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} - # proxysql-admin scheduler + # internal scheduler sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} fi @@ -46,7 +46,7 @@ sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \ sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \ sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${TEMP_PROXY_SCHEDULER_CFG} cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} -# proxysql-admin scheduler +# internal scheduler sed "s/PROXYSQL_USERNAME='admin'/PROXYSQL_USERNAME='${PROXY_ADMIN_USER:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} sed "s/PROXYSQL_PASSWORD='admin'/PROXYSQL_PASSWORD='${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} sed "s/CLUSTER_USERNAME='admin'/CLUSTER_USERNAME='operator'/g" ${PROXY_SCHEDULER_CFG} 1<> ${PROXY_SCHEDULER_CFG} diff --git a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh index b5658d991..4f64e9c5e 100755 --- a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh @@ -15,7 +15,7 @@ function proxysql_admin_exec() { function wait_for_proxysql() { local server="$1" echo "Waiting for host $server to be online..." - if [ "${SCHEDULER}" == "percona" ]; then + if [ "${PXC_HANDLER}" == "internal" ]; then PROXYSQL_TABLE="runtime_scheduler" else PROXYSQL_TABLE="runtime_mysql_galera_hostgroups" diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 1e3bd7135..e21a22720 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -64,7 +64,7 @@ function main() { fi fi - if [ "${SCHEDULER}" == "percona" ]; then + if [ "${PXC_HANDLER}" == "internal" ]; then sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml rm ${temp} From 9d71aed8f0d6155cf8c9860526cd4dd6c8726bec Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Tue, 15 Nov 2022 11:07:40 +0100 Subject: [PATCH 13/23] Proxysql - fix logic in add_proxysql_nodes.sh and add_pxc_nodes.sh --- proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh | 2 +- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh index 4f64e9c5e..3a5c52904 100755 --- a/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh @@ -15,7 +15,7 @@ function proxysql_admin_exec() { function wait_for_proxysql() { local server="$1" echo "Waiting for host $server to be online..." - if [ "${PXC_HANDLER}" == "internal" ]; then + if [ "${PXC_HANDLER}" == "scheduler" ]; then PROXYSQL_TABLE="runtime_scheduler" else PROXYSQL_TABLE="runtime_mysql_galera_hostgroups" diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index e21a22720..24749223a 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -64,7 +64,7 @@ function main() { fi fi - if [ "${PXC_HANDLER}" == "internal" ]; then + if [ "${PXC_HANDLER}" == "scheduler" ]; then sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml rm ${temp} From d3b682049200959f784283b84cb6100b54315a6b Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Tue, 15 Nov 2022 11:26:54 +0100 Subject: [PATCH 14/23] Fix logic in add_pxc_nodes.sh --- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 24749223a..54f1e14a9 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -57,7 +57,7 @@ function main() { SSL_ARG="" temp=$(mktemp) if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then - if [ "${SCHEDULER}" == "percona" ]; then + if [ "${PXC_HANDLER}" == "scheduler" ]; then sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp -f ${temp} /etc/config.toml else SSL_ARG="--use-ssl=yes" From aa96019583f990063ebc9966e885aed53cf4e59b Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Tue, 15 Nov 2022 19:37:41 +0100 Subject: [PATCH 15/23] Update proxysql scheduler config with IP and remove --disable-updates --- proxysql/dockerdir/entrypoint.sh | 3 ++- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 3dd8789d1..088c903d0 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -38,7 +38,8 @@ sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD:-adm sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} # Percona scheduler -sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" ${PERCONA_SCHEDULER_CFG} | \ +sed "s/^host.*=.*\"$/host = '$(hostname -i)'/" ${PERCONA_SCHEDULER_CFG} | \ +sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" | \ sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \ sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \ sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \ diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 54f1e14a9..ba8926571 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -81,7 +81,6 @@ function main() { --enable \ --update-cluster \ --remove-all-servers \ - --disable-updates \ --force percona-scheduler-admin \ @@ -89,7 +88,6 @@ function main() { --write-node="$pod_zero.$service:3306" \ --sync-multi-cluster-users \ --add-query-rule \ - --disable-updates \ --force percona-scheduler-admin \ From a457e7183986c1ab519293f4670e511c28ac7dbe Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Thu, 24 Nov 2022 17:26:00 +0100 Subject: [PATCH 16/23] Proxysql - update percona-scheduler-admin commands --- proxysql/dockerdir/entrypoint.sh | 4 +++- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 25 +++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index e42ff704b..b6131c906 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -15,6 +15,8 @@ if [ -n ${PROXYSQL_SERVICE} ]; then # Percona scheduler sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CFG} | \ sed "s/^hgW.*=.*$/hgW = 11/" | \ + # TODO: Remove below one line before merge + sed "s/^logLevel.*=.*$/logLevel = \"debug\"/" | \ sed "s/^hgR.*=.*$/hgR = 10/" | \ sed "s/^clustered.*=.*false$/clustered = true/" | \ sed "s/^failBack.*=.*false$/failBack = true/" > ${TEMP_PROXY_SCHEDULER_CFG} @@ -38,7 +40,7 @@ sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD:-adm sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} # Percona scheduler -sed "s/^host.*=.*\"$/host = '$(hostname -i)'/" ${PERCONA_SCHEDULER_CFG} | \ +sed "s/^host.*=.*\"$/host = '$(hostname -f)'/" ${PERCONA_SCHEDULER_CFG} | \ sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" | \ sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \ sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \ diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index ba8926571..2b6bd4663 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -75,19 +75,30 @@ function main() { fi set -o errexit - percona-scheduler-admin \ - --config-file=/etc/config.toml \ - --write-node="$pod_zero.$service:3306" \ - --enable \ - --update-cluster \ - --remove-all-servers \ - --force +# TODO: Remove --debug from three below lines before merge + if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT count(*) FROM mysql_servers')" -eq 0 ]; then + percona-scheduler-admin \ + --config-file=/etc/config.toml \ + --write-node="$pod_zero.$service:3306" \ + --enable \ + --debug \ + --force + else + percona-scheduler-admin \ + --config-file=/etc/config.toml \ + --write-node="$pod_zero.$service:3306" \ + --update-cluster \ + --remove-all-servers \ + --debug \ + --force + fi percona-scheduler-admin \ --config-file=/etc/config.toml \ --write-node="$pod_zero.$service:3306" \ --sync-multi-cluster-users \ --add-query-rule \ + --debug \ --force percona-scheduler-admin \ From 8a2e3f734f2ecc52d2c24b13847544323767abf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ege=20G=C3=BCne=C5=9F?= Date: Thu, 11 May 2023 14:26:13 +0300 Subject: [PATCH 17/23] check lock before doing anything --- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 2b6bd4663..0f11b421d 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -75,6 +75,12 @@ function main() { fi set -o errexit + lock=$(proxysql_admin_exec "127.0.0.1" "SELECT comment FROM runtime_proxysql_servers WHERE hostname LIKE '$HOSTNAME.%'") + if [ "${lock}" == "" ]; then + echo "I don't have the lock. Do nothing." + exit 0 + fi + # TODO: Remove --debug from three below lines before merge if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT count(*) FROM mysql_servers')" -eq 0 ]; then percona-scheduler-admin \ From 7aabc034e24594fb4628e5fc8c75cdd62a1b0cc5 Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Thu, 11 May 2023 18:02:24 +0200 Subject: [PATCH 18/23] Move scheduler lock check after initial installation, remove debug --- proxysql/dockerdir/entrypoint.sh | 2 -- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 16 ++++++---------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 734e150ce..773d855ac 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -14,8 +14,6 @@ CLUSTER_PORT='33062' # Percona scheduler sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CFG} | \ sed "s/^hgW.*=.*$/hgW = 11/" | \ -# TODO: Remove below one line before merge -sed "s/^logLevel.*=.*$/logLevel = \"debug\"/" | \ sed "s/^hgR.*=.*$/hgR = 10/" | \ sed "s/^clustered.*=.*false$/clustered = true/" | \ sed "s/^failBack.*=.*false$/failBack = true/" > ${TEMP_PROXY_SCHEDULER_CFG} diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 0f11b421d..e00338340 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -75,27 +75,24 @@ function main() { fi set -o errexit - lock=$(proxysql_admin_exec "127.0.0.1" "SELECT comment FROM runtime_proxysql_servers WHERE hostname LIKE '$HOSTNAME.%'") - if [ "${lock}" == "" ]; then - echo "I don't have the lock. Do nothing." - exit 0 - fi - -# TODO: Remove --debug from three below lines before merge if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT count(*) FROM mysql_servers')" -eq 0 ]; then percona-scheduler-admin \ --config-file=/etc/config.toml \ --write-node="$pod_zero.$service:3306" \ --enable \ - --debug \ --force else + lock=$(proxysql_admin_exec "127.0.0.1" "SELECT comment FROM runtime_proxysql_servers WHERE hostname LIKE '$HOSTNAME.%'") + if [ "${lock}" == "" ]; then + echo "I don't have the lock. Do nothing." + exit 0 + fi + percona-scheduler-admin \ --config-file=/etc/config.toml \ --write-node="$pod_zero.$service:3306" \ --update-cluster \ --remove-all-servers \ - --debug \ --force fi @@ -104,7 +101,6 @@ function main() { --write-node="$pod_zero.$service:3306" \ --sync-multi-cluster-users \ --add-query-rule \ - --debug \ --force percona-scheduler-admin \ From b614dd7897fb7a406933319307b5976d5c0097fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ege=20G=C3=BCne=C5=9F?= Date: Fri, 12 May 2023 13:15:40 +0300 Subject: [PATCH 19/23] improve lock handling --- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index e00338340..047e8053b 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -39,6 +39,14 @@ function wait_for_proxy() { done } +function exit_if_no_lock() { + lock=$(proxysql_admin_exec "127.0.0.1" "SELECT comment FROM runtime_proxysql_servers WHERE hostname LIKE '$HOSTNAME.%'") + if [ "${lock}" == "" ]; then + echo "I don't have the lock. Do nothing." + exit 0 + fi +} + function main() { echo "Running $0" @@ -82,11 +90,7 @@ function main() { --enable \ --force else - lock=$(proxysql_admin_exec "127.0.0.1" "SELECT comment FROM runtime_proxysql_servers WHERE hostname LIKE '$HOSTNAME.%'") - if [ "${lock}" == "" ]; then - echo "I don't have the lock. Do nothing." - exit 0 - fi + exit_if_no_lock percona-scheduler-admin \ --config-file=/etc/config.toml \ @@ -96,6 +100,8 @@ function main() { --force fi + exit_if_no_lock + percona-scheduler-admin \ --config-file=/etc/config.toml \ --write-node="$pod_zero.$service:3306" \ From cff65e5c376df34d75855676fc5a40dd05bfcfdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ege=20G=C3=BCne=C5=9F?= Date: Fri, 19 May 2023 09:44:11 +0300 Subject: [PATCH 20/23] fix escaping special chars --- proxysql/dockerdir/entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 773d855ac..3819662b2 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -30,10 +30,10 @@ OPERATOR_PASSWORD_ESCAPED=$(sed 's/[][\-\!\#\$\%\&\(\)\*\+\,\.\:\;\<\=\>\?\@\^\_ MONITOR_PASSWORD_ESCAPED=$(sed 's/[][\-\!\#\$\%\&\(\)\*\+\,\.\:\;\<\=\>\?\@\^\_\~\{\}]/\\&/g' <<<"${MONITOR_PASSWORD}") PROXY_ADMIN_PASSWORD_ESCAPED=$(sed 's/[][\-\!\#\$\%\&\(\)\*\+\,\.\:\;\<\=\>\?\@\^\_\~\{\}]/\\&/g' <<<"${PROXY_ADMIN_PASSWORD}") -sed "s/\"admin:admin\"/\"${PROXY_ADMIN_USER:-admin}:${PROXY_ADMIN_PASSWORD:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} +sed "s/\"admin:admin\"/\"${PROXY_ADMIN_USER:-admin}:${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} sed "s/cluster_username=\"admin\"/cluster_username=\"${PROXY_ADMIN_USER:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} -sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} -sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} +sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} +sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD_ESCAPED:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG} # Percona scheduler sed "s/^host.*=.*\"$/host = '$(hostname -f)'/" ${PERCONA_SCHEDULER_CFG} | \ From 36dd525e47a1a7976a0afbda66526610b1351a3d Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Tue, 23 May 2023 19:46:26 +0200 Subject: [PATCH 21/23] Update ProxySQL version to 2.5.1 --- proxysql/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxysql/Dockerfile b/proxysql/Dockerfile index 1cba18c00..00f0b4cd6 100644 --- a/proxysql/Dockerfile +++ b/proxysql/Dockerfile @@ -11,7 +11,7 @@ FROM redhat/ubi8-minimal LABEL org.opencontainers.image.authors="info@percona.com" ENV PXC_VERSION 8.0.30-22.1 -ENV PROXYSQL_VERSION 2.4.8-1.1 +ENV PROXYSQL_VERSION 2.5.1-1.1 ENV OS_VER el8 ENV FULL_PERCONA_VERSION "$PXC_VERSION.$OS_VER" ENV FULL_PROXYSQL_VERSION "$PROXYSQL_VERSION.$OS_VER" From dd70bdc8857cd881ec751ee00f45bfeab6072caa Mon Sep 17 00:00:00 2001 From: Tomislav Plavcic Date: Wed, 31 May 2023 13:35:06 +0200 Subject: [PATCH 22/23] Add load mysql server to runtime into add_pxc_nodes.sh --- proxysql/dockerdir/usr/bin/add_pxc_nodes.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh index 047e8053b..4d75280f4 100755 --- a/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh +++ b/proxysql/dockerdir/usr/bin/add_pxc_nodes.sh @@ -98,6 +98,8 @@ function main() { --update-cluster \ --remove-all-servers \ --force + + proxysql_admin_exec "127.0.0.1" 'LOAD MYSQL SERVERS TO RUNTIME;' fi exit_if_no_lock From 66e3d48cb3692fcaed8448fd3c6345c4c4643173 Mon Sep 17 00:00:00 2001 From: Viacheslav Sarzhan Date: Fri, 16 Jun 2023 10:45:54 +0300 Subject: [PATCH 23/23] add debug and custom pxc_scheduler build --- proxysql/Dockerfile.k8s | 17 +++++++++++++++++ proxysql/dockerdir/entrypoint.sh | 2 ++ 2 files changed, 19 insertions(+) diff --git a/proxysql/Dockerfile.k8s b/proxysql/Dockerfile.k8s index 0a2df55be..159b85f31 100644 --- a/proxysql/Dockerfile.k8s +++ b/proxysql/Dockerfile.k8s @@ -6,6 +6,19 @@ RUN export GO111MODULE=off \ && curl -Lf -o /go/src/github.com/percona/percona-xtradb-cluster-operator/src/peer-list.go https://raw.githubusercontent.com/percona/percona-xtradb-cluster-operator/main/cmd/peer-list/main.go \ && go build peer-list.go +FROM golang:1.19 AS go_builder_pxc_scheduler + +RUN git clone --branch=FR-72-Shunned https://github.com/percona/pxc_scheduler_handler.git /go/src/github.com/percona/pxc_scheduler_handler/ + +WORKDIR /go/src/github.com/percona/pxc_scheduler_handler + +RUN go get github.com/Tusamarco/toml \ + && go get github.com/go-sql-driver/mysql \ + && go get github.com/sirupsen/logrus \ + && go get golang.org/x/text/language \ + && go get golang.org/x/text/message \ + && go build -o pxc_scheduler_handler . + FROM redhat/ubi8-minimal AS ubi8 # Please don't remove old-style LABEL since it's needed for RedHat certification @@ -97,6 +110,10 @@ RUN cp /usr/share/doc/proxysql2/LICENSE /licenses/LICENSE.proxysql COPY dockerdir / COPY --from=go_builder /go/src/github.com/percona/percona-xtradb-cluster-operator/src/peer-list /usr/bin/ + +RUN rm -rf /usr/bin/pxc_scheduler_handler +COPY --from=go_builder_pxc_scheduler /go/src/github.com/percona/pxc_scheduler_handler/pxc_scheduler_handler /usr/bin/ + RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml; \ chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml diff --git a/proxysql/dockerdir/entrypoint.sh b/proxysql/dockerdir/entrypoint.sh index 3819662b2..9ebf50050 100755 --- a/proxysql/dockerdir/entrypoint.sh +++ b/proxysql/dockerdir/entrypoint.sh @@ -16,6 +16,8 @@ sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PERCONA_SCHEDULER_CF sed "s/^hgW.*=.*$/hgW = 11/" | \ sed "s/^hgR.*=.*$/hgR = 10/" | \ sed "s/^clustered.*=.*false$/clustered = true/" | \ +sed 's/logLevel = "info"/logLevel = "debug"/g' | \ +sed '/lockClusterTimeout/a lockrefreshtime=450' | \ sed "s/^failBack.*=.*false$/failBack = true/" > ${TEMP_PROXY_SCHEDULER_CFG} cp -f ${TEMP_PROXY_SCHEDULER_CFG} ${PERCONA_SCHEDULER_CFG} # internal scheduler