From 61ebfbb191dbc9b91bcfa488993fb0df53e138f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20PAILHAREY?= <rpailharey@grandlyon.com> Date: Wed, 25 Jan 2023 13:05:14 +0000 Subject: [PATCH] docs: mysql dump cronjob documentation --- .vscode/settings.json | 9 +++- k8s/README.md | 21 ++++++--- k8s/cronjobs/mysql-dump-cronjob-daily.yml | 50 ++++++++++++++++++++++ k8s/cronjobs/mysql-dump-cronjob-hourly.yml | 50 ++++++++++++++++++++++ k8s/cronjobs/mysql-dump-cronjob-weekly.yml | 50 ++++++++++++++++++++++ 5 files changed, 174 insertions(+), 6 deletions(-) create mode 100644 k8s/cronjobs/mysql-dump-cronjob-daily.yml create mode 100644 k8s/cronjobs/mysql-dump-cronjob-hourly.yml create mode 100644 k8s/cronjobs/mysql-dump-cronjob-weekly.yml diff --git a/.vscode/settings.json b/.vscode/settings.json index f36e437..411d9c9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,5 +18,12 @@ "titleBar.inactiveBackground": "#32f0ff99", "titleBar.inactiveForeground": "#15202b99" }, - "peacock.color": "#32f0ff" + "peacock.color": "#32f0ff", + "cSpell.words": [ + "backoffice", + "ecolyo", + "mysqldump", + "selfdata", + "uroot" + ] } \ No newline at end of file diff --git a/k8s/README.md b/k8s/README.md index 480a6f6..f6902a7 100644 --- a/k8s/README.md +++ b/k8s/README.md @@ -61,11 +61,12 @@ Configuration: - Demander la création des Persistent Volumes (PV) de façon à obtenir la configuration suivante (contacter un administrateur du cluster) : -| Name | Capacity | -| ------------------------------- | -------- | -| pvc-1-ns-selfdata-d01-syn-claim | 1 GiB | -| pvc-2-ns-selfdata-d01-syn-claim | 500 MiB | -| pvc-3-ns-selfdata-d01-syn-claim | 2 GiB | +| Nom | Capacité | Utilisé pour | +| ------------------------------- | -------- | ----------- | +| pvc-1-ns-selfdata-d01-syn-claim | 1 GiB | Meilisearch | +| pvc-2-ns-selfdata-d01-syn-claim | 500 MiB | Config serveur | +| pvc-3-ns-selfdata-d01-syn-claim | 2 GiB | BDD MySQL | +| pvc-4-ns-selfdata-d01-syn-claim | 1 GiB | Dumps MySQL | ## Création des déploiements @@ -134,3 +135,13 @@ Configuration: ## Initialiser la BDD MySQL - Suivre les étapes décrites dans le fichier [init.md](/dbinit/init.md) + +## Installer les cronjobs de dump + +- Depuis VS Code, créer un fichier mysql-dump-cronjob-hourly.yml +- Copier le contenu du fichier k8s/cronjobs/mysql-dump-cronjob-hourly.yml dedans +- Lancer `oc apply -f mysql-dump-cronjob-hourly.yml` +- Par défaut, le script conserve les 72 derniers dumps horaires. Vous pouvez définir le nombre de dump à conserver en changeant cette valeur après la commande `head` présente dans le script + + ```s -F *.sql.gz | head -n -72 | xargs -r rm``` +- Répéter l'opération pour **mysql-dump-cronjob-daily** et **mysql-dump-cronjob-weekly** diff --git a/k8s/cronjobs/mysql-dump-cronjob-daily.yml b/k8s/cronjobs/mysql-dump-cronjob-daily.yml new file mode 100644 index 0000000..603012f --- /dev/null +++ b/k8s/cronjobs/mysql-dump-cronjob-daily.yml @@ -0,0 +1,50 @@ +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: mysql-dump-cronjob-daily + namespace: ns-selfdata-d01-syn +spec: + schedule: '@daily' + jobTemplate: + spec: + template: + spec: + volumes: + - name: pvc-4-ns-selfdata-d01-syn-claim + persistentVolumeClaim: + claimName: pvc-4-ns-selfdata-d01-syn-claim + containers: + - resources: {} + terminationMessagePath: /dev/termination-log + name: mysql-dump + env: + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: name + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: password + - name: DATABASE_HOST + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: host + imagePullPolicy: IfNotPresent + volumeMounts: + - name: pvc-4-ns-selfdata-d01-syn-claim + mountPath: /dump + terminationMessagePolicy: File + image: 'mysql:5' + args: + - /bin/sh + - '-c' + - >- + mkdir -p /dump/daily; + cd /dump/daily; + mysqldump -h$(DATABASE_HOST) -uroot -p'$(MYSQL_ROOT_PASSWORD)' $(MYSQL_DATABASE) | gzip > $(date'+%Y-%m-%d_%H:%M:%S').sql.gz; + ls -F *.sql.gz | head -n -14 | xargs -r rm + restartPolicy: OnFailure diff --git a/k8s/cronjobs/mysql-dump-cronjob-hourly.yml b/k8s/cronjobs/mysql-dump-cronjob-hourly.yml new file mode 100644 index 0000000..d163925 --- /dev/null +++ b/k8s/cronjobs/mysql-dump-cronjob-hourly.yml @@ -0,0 +1,50 @@ +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: mysql-dump-cronjob-hourly + namespace: ns-selfdata-d01-syn +spec: + schedule: '@hourly' + jobTemplate: + spec: + template: + spec: + volumes: + - name: pvc-4-ns-selfdata-d01-syn-claim + persistentVolumeClaim: + claimName: pvc-4-ns-selfdata-d01-syn-claim + containers: + - resources: {} + terminationMessagePath: /dev/termination-log + name: mysql-dump + env: + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: name + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: password + - name: DATABASE_HOST + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: host + imagePullPolicy: IfNotPresent + volumeMounts: + - name: pvc-4-ns-selfdata-d01-syn-claim + mountPath: /dump + terminationMessagePolicy: File + image: 'mysql:5' + args: + - /bin/sh + - '-c' + - >- + mkdir -p /dump/hourly; + cd /dump/hourly; + mysqldump -h$(DATABASE_HOST) -uroot -p'$(MYSQL_ROOT_PASSWORD)' $(MYSQL_DATABASE) | gzip > $(date'+%Y-%m-%d_%H:%M:%S').sql.gz; + ls -F *.sql.gz | head -n -72 | xargs -r rm + restartPolicy: OnFailure diff --git a/k8s/cronjobs/mysql-dump-cronjob-weekly.yml b/k8s/cronjobs/mysql-dump-cronjob-weekly.yml new file mode 100644 index 0000000..052d7a0 --- /dev/null +++ b/k8s/cronjobs/mysql-dump-cronjob-weekly.yml @@ -0,0 +1,50 @@ +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: mysql-dump-cronjob-weekly + namespace: ns-selfdata-d01-syn +spec: + schedule: '@weekly' + jobTemplate: + spec: + template: + spec: + volumes: + - name: pvc-4-ns-selfdata-d01-syn-claim + persistentVolumeClaim: + claimName: pvc-4-ns-selfdata-d01-syn-claim + containers: + - resources: {} + terminationMessagePath: /dev/termination-log + name: mysql-dump + env: + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: name + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: password + - name: DATABASE_HOST + valueFrom: + secretKeyRef: + name: ecolyo-agent-database + key: host + imagePullPolicy: IfNotPresent + volumeMounts: + - name: pvc-4-ns-selfdata-d01-syn-claim + mountPath: /dump + terminationMessagePolicy: File + image: 'mysql:5' + args: + - /bin/sh + - '-c' + - >- + mkdir -p /dump/weekly; + cd /dump/weekly; + mysqldump -h$(DATABASE_HOST) -uroot -p'$(MYSQL_ROOT_PASSWORD)' $(MYSQL_DATABASE) | gzip > $(date'+%Y-%m-%d_%H:%M:%S').sql.gz; + ls -F *.sql.gz | head -n -14 | xargs -r rm + restartPolicy: OnFailure -- GitLab