gcoop-libre.mysqldump

Rola Ansible: gcoop-libre.mysqldump

Ta rola konfiguruje dostęp do MySQL/MariaDB/Percona na localhost i ustawia zadania cron do tworzenia kopii zapasowych przy użyciu polecenia mysqldump.

Wymagania

  • python-mysqldb
  • MySQL/MariaDB/Percona

Opcjonalnie

Wtyczka Ansible Pass Lookup pozwala korzystać z kompatybilnego z pass (https://www.passwordstore.org/) magazynu haseł do generowania zaszyfrowanych haseł. Naśladuje ona zachowanie wyszukiwania haseł, ale używa pass zamiast plików plaintext do przechowywania haseł.

Zmienne roli

Dostępne zmienne z domyślnymi wartościami (patrz defaults/main.yml).

gcoop_mysqldump_cron_entries:

  - name: miesięczna
    minute: 0
    hour: 2
    day: '*/7'
    format: '%b'
    database: "{{ gcoop_mysqldump_database }}"

  - name: codzienna
    minute: 0
    hour: 1
    day: '*'
    format: '%a'
    database: "{{ gcoop_mysqldump_database }}"

  - name: godzinowa
    minute: 30
    hour: '*'
    day: '*'
    format: ''
    database: 'mysql'

Domyślne gcoop_mysqldump_cron_entries generują następujące pliki w katalogu /backup/sql:

Jeden plik na każdy dzień tygodnia:

    hostname-dbname1-lun.sql.gz
    hostname-dbname1-mar.sql.gz
    hostname-dbname1-mie.sql.gz
    hostname-dbname1-jue.sql.gz
    hostname-dbname1-vie.sql.gz
    hostname-dbname1-sab.sql.gz
    hostname-dbname1-dom.sql.gz
    hostname-dbname2-lun.sql.gz
    hostname-dbname2-mar.sql.gz
    hostname-dbname2-mie.sql.gz
    hostname-dbname2-jue.sql.gz
    hostname-dbname2-vie.sql.gz
    hostname-dbname2-sab.sql.gz
    hostname-dbname2-dom.sql.gz

Jeden plik na każdy miesiąc (aktualizowany co 7 dni):

    hostname-dbname1-ene.sql.gz
    hostname-dbname1-feb.sql.gz
    ...
    hostname-dbname1-dic.sql.gz
    hostname-dbname2-ene.sql.gz
    ...
    hostname-dbname2-feb.sql.gz
    hostname-dbname2-dic.sql.gz

Jeden plik aktualizowany z najnowszą kopią (aktualizowany co 1 godzinę)

    hostname-dbname1.sql.gz
    hostname-dbname2.sql.gz

Syslog

Domyślnie, rola loguje zadania cron do syslog:

root@dbserver:/backup/sql# tail -f /var/log/syslog

Jun 25 02:30:02 dbserver mysqldump: Start: 2016-06-25 02:30 End: 2016-06-25 02:30 Duration: 00:00:01 File: c2340030bd3ec4c5b890a7e7ae80fd18  /backup/sql/dbserver-mysql.sql.gz
Jun 25 02:30:02 dbserver mysqldump: Start: 2016-06-25 02:30 End: 2016-06-25 02:30 Duration: 00:00:00 File: 5b5f36528df547e08f42db615e22ded6  /backup/sql/dbserver-information_schema-jun.sql.gz
Jun 25 02:30:02 dbserver mysqldump: Start: 2016-06-25 02:30 End: 2016-06-25 02:30 Duration: 00:00:00 File: 6d952bdd7edf0e5663bbd487dbcaf46c  /backup/sql/dbserver-mysql-jun.sql.gz

Zależności

Brak.

Przykładowy Playbook

Jeśli chcesz stworzyć nowy system i użytkownika mysql używając wtyczki lookup pass:

    - hosts: localhost
      become: yes
      remote_user: debian

      roles:
        - role: gcoop-libre.mysqldump
          gcoop_mysqldump_create_mysql_user: yes
          gcoop_mysqldump_create_system_user: yes
          gcoop_mysqldump_mysql_username: mysqlbackup
          gcoop_mysqldump_mysql_password: "{{ lookup( 'pass', 'mysql/' + gcoop_mysqldump_mysql_username ) }}"
          gcoop_mysqldump_mysql_root_password: "{{ lookup( 'pass', 'mysql/root' ) }}"
          gcoop_mysqldump_system_password:     "{{ lookup( 'pass', 'users/' + gcoop_mysqldump_mysql_username ) }}"

Gdy masz już system i użytkownika mysql:

    - hosts: localhost
      become: yes
      remote_user: debian

      roles:
        - role: gcoop-libre.mysqldump
          gcoop_mysqldump_mysql_username: mark
          gcoop_mysqldump_mysql_password: dadada
          gcoop_mysqldump_mysql_root_password: 123456

Licencja

GNU General Public License, GPLv3.

Informacje o autorze

Ta rola została stworzona w 2016 roku przez Osiris Alejandro Gomez, pracownika spółdzielni gcoop Cooperativa de Software Libre.

O projekcie

MySQL Backup using mysqldump

Zainstaluj
ansible-galaxy install gcoop-libre.mysqldump
Licencja
gpl-3.0
Pobrania
2.2k