memiah.mysql-s3-backup

MySQL S3 Kopia Zapasowa

Rola Ansible, która instaluje Amazon AWS Command Line Interface i konfiguruje skrypt bash do przesyłania indywidualnych kopii zapasowych bazy MySQL do Amazon S3.

Wymagania

Rola zakłada, że MySQL jest już zainstalowany.

Jeśli aktywujesz GPG, musisz także stworzyć odpowiednie poświadczenia.

Zaleca się utworzenie użytkownika z ograniczonymi uprawnieniami. Poniżej znajduje się polityka o nazwie AmazonS3CreateReadWriteAccess-[nazwa-bucketu], która może być używana do przyznawania ograniczonego dostępu (tworzenie/listowanie/dodawanie) do bucketu [nazwa-bucketu].

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ "s3:CreateBucket", "s3:ListBucket" ],
            "Resource": [ "arn:aws:s3:::[nazwa-bucketu]" ]
        },
        {
            "Effect": "Allow",
            "Action": [ "s3:PutObject" ],
            "Resource": [ "arn:aws:s3:::[nazwa-bucketu]/*" ]
        }
    ]
}

Dodatkowo, możesz rozważyć wersjonowanie bucketu i cykle życia w S3.

Zmienne Roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml):

mysql_backup_name: "mysql-s3-backup"

Nazwa używana do identyfikacji tej roli, stosowana do domyślnej nazwy katalogu, pliku i profilu AWS.

mysql_backup_dir: "/opt/{{ mysql_backup_name }}"

Katalog, w którym będą przechowywane skrypt i konfiguracja kopii zapasowej.

mysql_backup_cronfile: "{{ mysql_backup_name }}"
mysql_backup_cron_enabled: true
mysql_backup_cron_hour: 23
mysql_backup_cron_minute: 0
mysql_backup_cron_email: false

Cron jest aktywowany i ustawiony na uruchamianie codziennie o 23:00, a wynik nie jest wysyłany na adres e-mail. Jeśli chcesz, aby wynik był wysyłany, ustaw to na adres e-mail odbiorcy.

mysql_backup_aws_profile: "{{ mysql_backup_name }}"

Dla separacji tworzymy nowy profil AWS dla kontekstu tego skryptu, możesz ustawić to na "default", aby zignorować profile.

mysql_backup_aws_access_key: "[klucz-dostępu]"

Twój klucz dostępu do Amazon AWS.

mysql_backup_aws_secret_key: "[klucz-tajny]"

Twój tajny klucz do Amazon AWS.

mysql_backup_aws_region: eu-west-1

Nazwa regionu, w którym znajduje się bucket S3.

mysql_backup_aws_format: text

Format wyjściowy z AWS CLI.

mysql_backup_gpg_secret_key: False

Tajny klucz GPG, który jest używany do szyfrowania kopii zapasowych.

mysql_backup_gpg_secret_dest: "~/{{ mysql_backup_name }}-gpg.asc"

Lokalizacja przechowywania tajnego klucza GPG.

mysql_backup_system_user: root

Użytkownik, który będzie właścicielem i uruchamiał skrypt kopii zapasowej oraz zadanie cron.

mysql_backup_config: []

Dostosowania do samego skryptu kopii zapasowej (wartości używają składni bash).

  • timestamp: "$(date +"%Y-%m-%d_%H%M")" Data i czas używane do tworzenia katalogów kopii zapasowych "YYYY-MM-DD_HHII".
  • backup_dir: "/tmp/mysql-s3-backups/${timestamp}" Ścieżka lokalnego katalogu kopii zapasowych używana do przechowywania plików przed przesłaniem.
  • backup_dir_remove: "true" Usuwa lokalny katalog kopii zapasowej po zakończeniu skryptu.
  • aws_bucket: "mysql-s3-backups" Domyślna nazwa bucketu AWS S3.
  • aws_dir: "$timestamp" Domyślny katalog AWS do przechowywania kopii zapasowych.
  • aws_extra_arguments: "--endpoint https://s3-compatable-endpoint.example.com" Dodatkowe argumenty do przekazania do AWS CLI.
  • aws_enabled: "true" Włącza przesyłanie do Amazon S3, jeśli jest fałszywe, flaga "backup_dir_remove" zostanie ustawiona na fałsz.
  • aws_profile: "mysql-s3-backup" Ustaw profil AWS do użycia (~/.aws/credentials i ~/.aws/config).
  • mysql_slave: "false" Ustaw na prawdę, jeśli kopiujesz z serwera podrzędnego MySQL, to zatrzyma serwer podrzędny i uruchomi go ponownie, gdy skrypt się zakończy.
  • mysql_using_rds: "false" Ustaw na prawdę, jeśli kopiujesz z repliki odczytu RDS, zapewnia to użycie funkcji mysql.rds_stop_replication i mysql.rds_start_replication zamiast standardowych poleceń STOP / START SLAVE (które nie mają niezbędnych uprawnień na RDS).
  • mysql_use_defaults_file: "true" Użyj domyślnego pliku konfiguracyjnego MySQL.
  • mysql_defaults_file: "" Specjalnie ustaw lokalizację pliku defaults, np. "/etc/my.cnf".
  • mysql_user: "", mysql_password: "", mysql_host: "" Jeśli mysql_use_defaults_file jest fałszywe, skrypt spróbuje użyć tych parametrów do połączenia z MySQL.
  • mysql_exclude: "information_schema|performance_schema|mysql|sys" Lista baz danych do wykluczenia z eksportu, jest to lista oddzielona pionową kreską (RegEx).
  • mysqldump_args: "--triggers --routines --force --opt --add-drop-database" Domyślne flagi używane do zrzutu bazy danych.
  • gpg_enabled: "false" Jeśli prawda, kopie zapasowe będą szyfrowane za pomocą GPG, a do każdego pliku kopii zapasowej zostanie dodany sufiks ".gpg".
  • gpg_args: "--encrypt --batch --trust-model always" Domyślne flagi używane do szyfrowania GPG.
  • gpg_recipient: "" Odbiorca plików szyfrowanych kluczem publicznym.
  • gpg_sign: "false" Flaga, aby wymusić podpisywanie kopii zapasowych.
  • gpg_signer: "" Domyślny klucz GPG, którym będzie się podpisywało.

Zależności

Przykład Playbooka

- hosts: mysql-servers
  vars_files:
    - vars/main.yml
  roles:
     - memiah.mysql-s3-backup

W pliku vars/main.yml:

mysql_backup_aws_access_key: "tutaj_klucz_dostępu"
mysql_backup_aws_secret_key: "tutaj_klucz_tajny"
mysql_backup_aws_region: eu-west-1
mysql_backup_config:
  aws_profile: "{{ mysql_backup_aws_profile }}"
  aws_bucket: "tutaj_nazwa_bucketu"
  backup_dir: "{{ mysql_backup_dir }}/backups/${timestamp}"

Licencja

MIT / BSD

Informacje o autorze

Ta rola została stworzona w 2016 roku przez Memiah Limited.

O projekcie

MySQL to Amazon S3 backup.

Zainstaluj
ansible-galaxy install memiah.mysql-s3-backup
Licencja
Unknown
Pobrania
699
Właściciel