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.
ansible-galaxy install memiah.mysql-s3-backup