From 92bd06fe3cb6159a1d97744b816937a8ef9c401e Mon Sep 17 00:00:00 2001 From: Jacob Cody Wimer Date: Thu, 30 Oct 2025 08:50:31 -0400 Subject: [PATCH] No longer using memcached. Replication settings for standalong mariadb. Use --single-transaction in mariadb replica-watcher so mysqldump does not lock tables. Added horizontal pod autoscaler to the app statefulset --- .../manifests/mariadb-replica-watcher.yaml | 4 +- .../manifests/mariadb-standalone.yaml | 8 ++++ .../manifests/memcached-standalone.yaml | 42 ------------------ deploy/kubernetes/manifests/wrestlingdev.yaml | 44 ++++++++++--------- 4 files changed, 33 insertions(+), 65 deletions(-) delete mode 100644 deploy/kubernetes/manifests/memcached-standalone.yaml diff --git a/deploy/kubernetes/manifests/mariadb-replica-watcher.yaml b/deploy/kubernetes/manifests/mariadb-replica-watcher.yaml index cee954b..5b96d01 100644 --- a/deploy/kubernetes/manifests/mariadb-replica-watcher.yaml +++ b/deploy/kubernetes/manifests/mariadb-replica-watcher.yaml @@ -122,12 +122,12 @@ spec: DUMP_FILE="/tmp/${DB_NAME}_backup.sql" echo "Dumping ${DB_NAME} from master ${MASTER_SERVICE_HOST}" | tee -a "$LOG" if command -v timeout >/dev/null 2>&1; then - if ! timeout 300 mysqldump --protocol=TCP -h "$MASTER_SERVICE_HOST" -uroot -p"$MARIADB_ROOT_PASSWORD" "$DB_NAME" \ + if ! timeout 300 mysqldump --protocol=TCP -h "$MASTER_SERVICE_HOST" -uroot -p"$MARIADB_ROOT_PASSWORD" --single-transaction "$DB_NAME" \ | tee "$DUMP_FILE" >/dev/null 2>>"$LOG"; then echo "Dump FAILED; aborting this cycle" | tee -a "$LOG"; sleep 120; continue fi else - if ! mysqldump --protocol=TCP -h "$MASTER_SERVICE_HOST" -uroot -p"$MARIADB_ROOT_PASSWORD" "$DB_NAME" \ + if ! mysqldump --protocol=TCP -h "$MASTER_SERVICE_HOST" -uroot -p"$MARIADB_ROOT_PASSWORD" --single-transaction "$DB_NAME" \ | tee "$DUMP_FILE" >/dev/null 2>>"$LOG"; then echo "Dump FAILED; aborting this cycle" | tee -a "$LOG"; sleep 120; continue fi diff --git a/deploy/kubernetes/manifests/mariadb-standalone.yaml b/deploy/kubernetes/manifests/mariadb-standalone.yaml index afce404..342b898 100644 --- a/deploy/kubernetes/manifests/mariadb-standalone.yaml +++ b/deploy/kubernetes/manifests/mariadb-standalone.yaml @@ -239,5 +239,13 @@ data: innodb_log_file_size=32M table_open_cache=4000 expire_logs_days=7 + + # master slave + server_id=1 # Unique server ID for the master + log_bin=mysql-bin # Enable binary logging + binlog_format=ROW # Recommended format for replication (ROW, STATEMENT, or MIXED) + log_slave_updates=ON # Ensure any changes replicated to the master are also logged to the binary log (useful for multi-source replication) + sync_binlog=1 # Ensures binary logs are synchronized with disk after each transaction for data safety + expire_logs_days=7 # Optional: Number of days to retain binary logs (helps with cleanup) # /etc/mysql/mariadb.conf.d/70-mysettings.cnf diff --git a/deploy/kubernetes/manifests/memcached-standalone.yaml b/deploy/kubernetes/manifests/memcached-standalone.yaml deleted file mode 100644 index bcb0ffa..0000000 --- a/deploy/kubernetes/manifests/memcached-standalone.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: wrestlingdev-memcached - labels: - app: wrestlingdev -spec: - ports: - - port: 11211 - selector: - app: wrestlingdev - tier: memcached - clusterIP: None ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: wrestlingdev-memcached-deployment - labels: - app: wrestlingdev -spec: - replicas: 1 - selector: - matchLabels: - app: wrestlingdev - template: - metadata: - labels: - app: wrestlingdev - tier: memcached - spec: - containers: - - name: wrestlingdev-memcached - image: memcached - ports: - - containerPort: 11211 - resources: - limits: - memory: "64Mi" - # requests: - # memory: "64Mi" - # cpu: "0.1" diff --git a/deploy/kubernetes/manifests/wrestlingdev.yaml b/deploy/kubernetes/manifests/wrestlingdev.yaml index 3d9cff6..1f31dd8 100644 --- a/deploy/kubernetes/manifests/wrestlingdev.yaml +++ b/deploy/kubernetes/manifests/wrestlingdev.yaml @@ -122,25 +122,27 @@ spec: initialDelaySeconds: 180 periodSeconds: 20 timeoutSeconds: 10 -# --- -# apiVersion: autoscaling/v2beta1 -# kind: HorizontalPodAutoscaler -# metadata: -# name: wrestlingdev-app-deployment-autoscale -# spec: -# scaleTargetRef: -# apiVersion: apps/v1 -# kind: Deployment -# name: wrestlingdev-app-deployment -# minReplicas: 2 -# maxReplicas: 5 -# metrics: -# - type: Resource -# resource: -# name: cpu -# targetAverageUtilization: 75 - # - type: Resource - # resource: - # name: memory - # targetAverageValue: 100Mi +--- +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: wrestlingdev-app-autoscale +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: StatefulSet + name: wrestlingdev-app + minReplicas: 2 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + targetAverageUtilization: 75 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 80