freehck.script_mysql_backup

freehck.script_mysql_backup

Ten moduł tworzy skrypt do wykonywania kopii zapasowych mysql.

Robi zrzut bazy danych, a następnie może skompresować i zaszyfrować kopię przy użyciu aes256.

Może wysyłać powiadomienia do Slacka.

Może przechowywać kopię zapasową na S3 lub przesyłać ją na inny host za pomocą scp.

Zmienne roli

Zmienne podstawowe

mysql_backup_host: host mysql

mysql_backup_port: port mysql (domyślnie 3306)

mysql_backup_user: użytkownik mysql

mysql_backup_pass: hasło mysql

mysql_backup_db: baza danych mysql do wykonania kopii zapasowej (jeśli nie ustawione, zostanie użyta opcja --all-databases dla mysqldump)

mysql_backup_backend_use_s3: ustaw na true, jeśli chcesz przechowywać kopię zapasową na S3

mysql_backup_backend_use_scp: ustaw na true, jeśli chcesz przesłać kopię zapasową na inny host za pomocą scp

Zmienne backendu S3

mysql_backup_s3cfg_template: szablon konfiguracji s3fs (domyślny już jest dostępny, nie martw się)

mysql_backup_s3: opcje konfiguracji s3 w formacie jak poniżej

mysql_backup_s3:
  username: "s3user"
  access_key: "s3user-akey"
  secret_key: "s3user-skey"
  bucket: "nazwa-koszyka"
Zmienne backendu SCP

mysql_backup_scp_host: host przechowywania do skopiowania kopii zapasowej

mysql_backup_scp_user: użytkownik do logowania na hoście przechowującym

mysql_backup_scp_dst: ścieżka na hoście przechowującym do zapisania kopii zapasowej

mysql_backup_scp_identity_src: plik tożsamości do logowania na hoście przechowującym (tak, powinien to być klucz prywatny)

Nazewnictwo

mysql_backup_archive_prefix: po prostu nazwa kopii zapasowej lub wszystko przed znakiem czasowym

mysql_backup_archive_stamp: szablon znaku czasowego w formacie narzędzia date (domyślny to %F-%Hh%Mm%Ss, co daje znaki czasowe w formacie 2019-09-23-12h22m07s)

mysql_backup_script_name: jeśli chcesz zmienić nazwę podstawowego skryptu, śmiało

mysql_backup_custom_script_name: jeśli chcesz ustawić konkretną nazwę dla skryptu zadania, które rzeczywiście wykonuje kopię zapasową. Domyślnie to mysql-backup-<nazwa_bazy_danych>.sh, gdzie może być all, jeśli nie podano żadnej bazy danych do zrobienia kopii zapasowej.

mysql_backup_scp_identity_name: domyślnie to id_rsa, ale może być przydatne, aby to zmodyfikować w przypadku, gdy chcesz mieć wiele backendów SCP używających różnych kluczy.

mysql_backup_encrypt_aes_key_name: domyślnie to aes256.key, potrzebny, jeśli chcesz mieć różne klucze szyfrowania dla różnych zadań kopii zapasowej.

Powiadomienia

mysql_backup_warn_size: w GiB, domyślnie 0. Porównaj swoją kopię zapasową z tą wielkością. Jeśli twoja kopia zapasowa jest mniejsza, ostrzeżesz o tym.

mysql_backup_hostname: nazwa hosta (która będzie wydrukowana w wiadomościach Slacka)

mysql_backup_slack_webhook: jak napisano, to jest webhook Slacka; ustaw to, aby otrzymywać powiadomienia na Slacku.

Jak zdobyć webhook Slacka: https://get.slack.help/hc/en-us/articles/115005265063-Incoming-WebHooks-for-Slack

Zmienne kompresji i szyfrowania

mysql_backup_gzip: kompresuj plik kopii zapasowej

mysql_backup_encrypt_aes: szyfruj plik kopii zapasowej (jeśli gzip włączony, ta akcja zostanie wykonana SPECJALNIE PO gzip)

mysql_backup_encrypt_aes_key_src: klucz aes256 do szyfrowania twojej kopii zapasowej

Klucz Aes256 to po prostu 32 bajty losowych.

Możesz użyć następującego polecenia, aby go utworzyć: dd if=/dev/urandom of=aes256.key count=1 bs=32.

Jeśli preferujesz hasła tekstowe (to mniej bezpieczne), możesz użyć tego: pwgen -n1 -s 32 | tr -d '\n' >aes256.key.

Katalogi

mysql_backup_script_dir: katalog do przechowywania podstawowego skryptu

mysql_backup_custom_script_dir: katalog do przechowywania skryptów specyficznych dla odpowiednich zadań kopii zapasowej

mysql_backup_conf_dir: katalog do przechowywania plików konfiguracyjnych skryptu kopii zapasowej

mysql_backup_encrypt_aes_key_dir: katalog do przechowywania klucza szyfrowania aes256

mysql_backup_tmpdir: katalog do trzymania tymczasowych wyników (nie musisz tworzyć osobnego, domyślnie to /tmp)

Przekazywanie danych poza rolę

mysql_backup_save_facts_about_custom_script: jeśli ustawisz to na true, to rola zapisze pełną ścieżkę wygenerowanego skryptu zadania, który musi być uruchomiony, aby wykonać kopię zapasową, w zmiennej mysql_backup_last_generated_custom_script. Możesz użyć tej zmiennej do dodania specyficznego zadania cron dla tego skryptu.

Przykład Playbooka

# utwórz skrypt zadania do kopii zapasowej mysql
- rola: freehck.script_mysql_backup
  # parametry połączenia mysql
  mysql_backup_host: "{{ db_host }}"
  mysql_backup_user: "{{ db_user }}"
  mysql_backup_pass: "{{ db_pass }}"
  mysql_backup_db: "{{ db_name }}"
  # parametry przechowywania w backendzie
  mysql_backup_backend_use_s3: nie
  mysql_backup_backend_use_scp: tak
  mysql_backup_scp_host: "{{ hostvars['storage'].ansible_host }}"
  mysql_backup_scp_identity_src: "{{ playbook_dir }}/files/id_rsa.bkp.db01"
  mysql_backup_scp_user: 'file'
  mysql_backup_scp_dst: '/var/www/file/public/mysql-db-prod-backup'
  # gzip i szyfrowanie
  mysql_backup_gzip: tak
  mysql_backup_encrypt_aes: tak
  mysql_backup_encrypt_aes_key_src: "{{ playbook_dir }}/files/aes256.bkp.key }}"
  # inne
  mysql_backup_save_facts_about_custom_script: tak
  mysql_backup_logfile: "/var/log/mysql-backup.log"
  tagi: [ backup, mysql ]

# to rozsądne, aby utworzyć zadanie cron dla tego skryptu zadania
- rola: freehck.crontask
  crontask_file: "backups"
  crontask_name: "kopiuj bazę danych"
  crontask_hour: "12"
  crontask_minute: "0"
  crontask_job: "{{ mysql_backup_last_generated_custom_script }}"
  crontask_user: "root"
  crontask_commented_out: false
  tagi: [ backup, mysql ]

Ważne informacje

Po wdrożeniu skryptu mysql-backup na swoim hoście, rozsądne byłoby przejść do hosta wykonującego zadania kopii zapasowej i uruchomić skrypt zadania z /opt/scripts bez parametrów. Jeśli przeszedł bez błędów i widzisz plik kopii zapasowej na przechowywaniu, to wszystko w porządku. Jeśli nie - dowiesz się, co było problemem. Na przykład, mogłeś zapomnieć dodać hosta przechowującego do known_hosts przy konfigurowaniu użytkowników. Lub twój szablon s3cfg mógł zawierać błąd. Nie zapomnij sprawdzić wszystkiego dwa razy: tworzenie kopii zapasowych to bardzo ważne zadanie.

Po sprawdzeniu, że kopia zapasowa została utworzona i przechowywana w odpowiednim miejscu, dokładnie ją sprawdź. Musisz być pewny, że możesz ją przywrócić.

Licencja

MIT

Informacje o autorze

Dmitrii Kashin, freehck@freehck.ru

O projekcie

install a script performing mysql backups

Zainstaluj
ansible-galaxy install freehck.script_mysql_backup
Licencja
mit
Pobrania
1.2k
Właściciel