memiah.mysql-s3-backup

MySQL S3 Backup

Eine Ansible-Rolle, die die Amazon AWS-Befehlszeilenschnittstelle installiert und ein Bash-Skript konfiguriert, um einzelne MySQL-Datenbank-Backups auf Amazon S3 hochzuladen.

Anforderungen

Die Rolle setzt voraus, dass MySQL bereits installiert ist.

Wenn GPG aktiviert ist, müssen Sie diese Anmeldeinformationen auch erstellt haben.

Es wird empfohlen, einen Benutzer mit eingeschränkten Berechtigungen zu erstellen. Unten finden Sie eine Richtlinie mit dem Namen AmazonS3CreateReadWriteAccess-[bucket-name], die verwendet werden kann, um eingeschränkten (erstellen/listen/hochladen) Zugriff auf den Bucket [bucket-name] bereitzustellen.

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

Zusätzlich sollten Sie in Betracht ziehen, die Versionierung und Lebenszyklen des Buckets in S3 zu berücksichtigen.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit den Standardwerten (siehe defaults/main.yml):

mysql_backup_name: "mysql-s3-backup"

Name zur Identifizierung dieser Rolle, verwendet für das Standardverzeichnis, die Dateinamen und das AWS-Profil.

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

Verzeichnis, in dem das Backup-Skript und die Konfiguration gespeichert werden.

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 ist aktiviert und auf 23:00 Uhr jeden Tag eingestellt, ohne dass eine E-Mail an einen Empfänger gesendet wird. Wenn Sie die Ausgabe per E-Mail erhalten möchten, setzen Sie dies auf die E-Mail-Adresse des Empfängers.

mysql_backup_aws_profile: "{{ mysql_backup_name }}"

Um eine Trennung zu schaffen, erstellen wir ein neues AWS-Profil für diesen Skriptkontext, Sie könnten dies auf "default" setzen, um Profile zu ignorieren.

mysql_backup_aws_access_key: "[accesss-key]"

Ihr Amazon AWS-Zugangs-Schlüssel.

mysql_backup_aws_secret_key: "[secret-key]"

Ihr Amazon AWS-Geheimschlüssel.

mysql_backup_aws_region: eu-west-1

Der Regionsname, in dem sich der S3-Bucket befindet.

mysql_backup_aws_format: text

Ausgabeformat von der AWS CLI.

mysql_backup_gpg_secret_key: False

GPG-Geheimschlüssel, mit dem die Backups verschlüsselt werden.

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

Ort zum Speichern des GPG-Geheimschlüssels.

mysql_backup_system_user: root

Benutzer, der das Backup-Skript sowie den Cron-Job besitzt und ausführt.

mysql_backup_config: []

Anpassungen am Backup-Skript selbst (Werte verwenden Bash-Syntax).

  • timestamp: "$(date +"%Y-%m-%d_%H%M")" Datum und Uhrzeit zum Erstellen von Backup-Verzeichnissen "YYYY-MM-DD_HHII".
  • backup_dir: "/tmp/mysql-s3-backups/${timestamp}" Lokaler Backup-Verzeichnispfad zum Speichern von Dateien vor dem Upload.
  • backup_dir_remove: "true" Lokales Backup-Verzeichnis nach Abschluss des Skripts entfernen.
  • aws_bucket: "mysql-s3-backups" Standardname des AWS S3-Buckets.
  • aws_dir: "$timestamp" Standardverzeichnis in AWS zum Speichern der Backups.
  • aws_extra_arguments: "--endpoint https://s3-compatable-endpoint.example.com" Zusätzliche Argumente, die an die AWS CLI übergeben werden.
  • aws_enabled: "true" Hochladen zu Amazon S3 aktivieren, wenn falsch, wird die Option "backup_dir_remove" auf falsch gesetzt.
  • aws_profile: "mysql-s3-backup" Das zu verwendende AWS-Profil festlegen (~/.aws/credentials und ~/.aws/config).
  • mysql_slave: "false" Auf wahr setzen, wenn von einem MySQL-Slave-Server gesichert wird; dies stoppt den Slave und startet ihn wieder, wenn das Skript abgeschlossen ist.
  • mysql_using_rds: "false" Auf wahr setzen, wenn von einer RDS-Lese-Replikat gesichert wird; dies stellt sicher, dass wir die Funktionen mysql.rds_stop_replication und mysql.rds_start_replication verwenden, anstelle der Standardbefehle STOP / START SLAVE (die nicht die erforderlichen Berechtigungen auf RDS haben).
  • mysql_use_defaults_file: "true" Standard-MySQL-Konfigurationsdatei verwenden.
  • mysql_defaults_file: "" Genauer die Standarddatei-Standort festlegen, z. B. "/etc/my.cnf".
  • mysql_user: "", mysql_password: "", mysql_host: "" Wenn mysql_use_defaults_file falsch ist, wird versucht, diese Parameter zu verwenden, um eine Verbindung zu MySQL herzustellen.
  • mysql_exclude: "information_schema|performance_schema|mysql|sys" Liste der Datenbanken, die vom Export ausgeschlossen werden sollen, dies ist eine durch Pipes getrennte Liste (RegEx).
  • mysqldump_args: "--triggers --routines --force --opt --add-drop-database" Standardflags, die für den Datenbankdump verwendet werden.
  • gpg_enabled: "false" Wenn wahr, werden Backups mit GPG verschlüsselt und die Endung ".gpg" wird zu jeder der Backup-Dateien hinzugefügt.
  • gpg_args: "--encrypt --batch --trust-model always" Standardflags, die für die GPG-Verschlüsselung verwendet werden.
  • gpg_recipient: "" Empfänger der mit dem öffentlichen Schlüssel verschlüsselten Dateien.
  • gpg_sign: "false" Flag zur Durchsetzung der Signierung der Backups.
  • gpg_signer: "" Standard-GPG-Schlüssel, mit dem signiert wird.

Abhängigkeiten

Beispiel-Playbook

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

Innerhalb von vars/main.yml:

mysql_backup_aws_access_key: "access_key_here"
mysql_backup_aws_secret_key: "secret_key_here"
mysql_backup_aws_region: eu-west-1
mysql_backup_config:
  aws_profile: "{{ mysql_backup_aws_profile }}"
  aws_bucket: "bucket_name_here"
  backup_dir: "{{ mysql_backup_dir }}/backups/${timestamp}"

Lizenz

MIT / BSD

Autor-Information

Diese Rolle wurde 2016 von Memiah Limited erstellt.

Über das Projekt

MySQL to Amazon S3 backup.

Installieren
ansible-galaxy install memiah.mysql-s3-backup
Lizenz
Unknown
Downloads
699
Besitzer