PXC operator 杂记
docker pull docker.jintdev.com/wuyutang/publicimages/percona/percona-xtradb-cluster-operator:1.13.0
docker pull docker.jintdev.com/wuyutang/publicimages/percona/percona-xtradb-cluster-operator:1.13.0-haproxy
docker tag docker.jintdev.com/wuyutang/publicimages/percona/percona-xtradb-cluster-operator:1.13.0 percona/percona-xtradb-cluster-operator:1.13.0
docker tag docker.jintdev.com/wuyutang/publicimages/percona/percona-xtradb-cluster-operator:1.13.0-haproxy percona/percona-xtradb-cluster-operator:1.13.0-haproxy
wget https://home.vimll.com:9999/download/mysql/pxc/pxc-db-1.13.3.tgz
wget https://home.vimll.com:9999/download/mysql/pxc/pxc-operator-1.13.3.tgz
1. To get a MySQL prompt inside your new cluster you can run:
ROOT_PASSWORD=`kubectl -n pxc get secrets pxc-db-secrets -o jsonpath="{.data.root}" | base64 --decode`
kubectl -n pxc exec -ti \
pxc-db-pxc-0 -c pxc -- mysql -uroot -p"$ROOT_PASSWORD"
2. To connect an Application running in the same Kubernetes cluster you can connect with:
ROOT_PASSWORD=`kubectl -n pxc get secrets pxc-db-secrets -o jsonpath="{.data.root}" | base64 --decode`
kubectl run -i --tty --rm percona-client --image=percona --restart=Never \
-- mysql -h pxc-db-haproxy.pxc.svc.cluster.local -uroot -p"$ROOT_PASSWORD"
imagePullPolicy: IfNotPresent
disableTLS: true
kubectl expose svc -n pxc pxc-db-haproxy-replicas --target-port=3306 --port=3306 --name=test --type=NodePort
[mysqld]
wsrep_provider_options="gcache.size=2G; gcache.recover=yes"
lower_case_table_names=1
max_connections=1000
max_connect_errors=10000
max_execution_time=10000
binlog_expire_logs_seconds=259200
default-time-zone='+08:00'
slow_query_log=ON
max_allowed_packet = 128M
innodb_buffer_pool_size=6442450944
innodb_log_file_size=1073741824
innodb_buffer_pool_instances=4
innodb_buffer_pool_chunk_size=268435456
sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
set GLOBAL sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
show full PROCESSLIST
show VARIABLES like "%slow%"
set GLOBAL slow_query_log=ON
show status like 'wsrep%';
show VARIABLES like "wsrep_provider_options"
SET GLOBAL wsrep_provider_options='pc.bootstrap=true';
for i in $(seq 0 $(($(kubectl get pxc -n pxc pxc-db -o jsonpath='{.spec.pxc.size}')-1))); do echo "###############pxc-db-pxc-$i##############"; kubectl logs pxc-db-pxc-$i -n pxc -c pxc | grep '(seqno):' ; done
kubectl exec pxc-db-pxc-0 -n pxc -c pxc -- sh -c 'kill -s USR1 1'
for i in $(seq 0 $(($(kubectl get pxc -n pxc pxc-db -o jsonpath='{.spec.pxc.size}')-1))); do echo "###############pxc-db-pxc-$i##############";kubectl exec -n pxc pxc-db-pxc-$i -c pxc -- cat /var/lib/mysql/grastate.dat; done
kubectl get pxc pxc-db -n pxc -o jsonpath='{.spec.updateStrategy}'
kubectl patch pxc -n pxc pxc-db --type=merge --patch '{"spec": {"updateStrategy": "OnDelete" }}'
kubectl get pxc -n pxc pxc-db -o jsonpath='{.spec.pxc.image}'
kubectl patch pxc -n pxc pxc-db --type="merge" -p '{"spec":{"pxc":{"image":"d.vimll.com:9888/root/plulic/percona-xtradb-cluster:8.0.32-24.2-debug"}}}'
for i in $(seq 0 $(($(kubectl get pxc -n pxc pxc-db -o jsonpath='{.spec.pxc.size}')-1))); do kubectl delete pod -n pxc pxc-db-pxc-$i --force --grace-period=0; done
for i in $(seq 0 $(($(kubectl get pxc -n pxc pxc-db -o jsonpath='{.spec.pxc.size}')-1))); do until [[ $(kubectl get pod -n pxc pxc-db-pxc-$i -o jsonpath='{.status.phase}') == 'Running' ]]; do sleep 10; done; kubectl exec -n pxc pxc-db-pxc-$i -c pxc -- touch /var/lib/mysql/sst_in_progress; done
for i in $(seq 0 $(($(kubectl get pxc -n pxc pxc-db -o jsonpath='{.spec.pxc.size}')-1))); do pid=$(kubectl exec -n pxc pxc-db-pxc-$i -c pxc -- ps -C mysqld-ps -o pid=); if [[ -n "$pid" ]]; then kubectl exec -n pxc pxc-db-pxc-$i -c pxc -- kill -9 $pid; fi; done
for i in $(seq 0 $(($(kubectl get pxc -n pxc pxc-db -o jsonpath='{.spec.pxc.size}')-1))); do echo "###############pxc-db-pxc-$i##############"; kubectl exec -n pxc pxc-db-pxc-$i -c pxc -- cat /var/lib/mysql/grastate.dat; done
kubectl exec pxc-db-pxc-0 -n pxc -c pxc -- mysqld --wsrep_recover
kubectl exec pxc-db-pxc-0 -n pxc -c pxc -- sed -i 's/safe_to_bootstrap: 0/safe_to_bootstrap: 1/g' /var/lib/mysql/grastate.dat
kubectl exec pxc-db-pxc-0 -n pxc -c pxc -- sed -i 's/wsrep_cluster_address=.*/wsrep_cluster_address=gcomm:\/\//g' /etc/mysql/node.cnf
kubectl exec pxc-db-pxc-0 -n pxc -c pxc -- mysqld
kubectl patch pxc pxc-db -n pxc --type="merge" -p '{"spec":{"pxc":{"image":"d.vimll.com:9888/root/plulic/percona-xtradb-cluster:8.0.32-24.2"}}}'
for i in $(seq 0 $(($(kubectl get pxc pxc-db -n pxc -o jsonpath='{.spec.pxc.size}')-1))); do until [[ $(kubectl get pod -n pxc pxc-db-pxc-$i -o jsonpath='{.status.phase}') == 'Running' ]]; do sleep 10; done; kubectl exec -n pxc pxc-db-pxc-$i -c pxc -- rm /var/lib/mysql/sst_in_progress; done
kubectl delete pods -n pxc --force --grace-period=0 pxc-db-pxc-2 pxc-db-pxc-1
kubectl delete pods -n pxc --force --grace-period=0 pxc-db-pxc-0
kubectl patch pxc pxc-db -n pxc --type=merge --patch '{"spec": {"updateStrategy": "SmartUpdate" }}'