mysqldump
Ansible Роль: gcoop-libre.mysqldump
Эта роль настраивает доступ к MySQL/MariaDB/Percona на локальном хосте и создает cron-задание для резервного копирования с помощью команды mysqldump
.
Требования
- python-mysqldb
- MySQL/MariaDB/Percona
Дополнительно
Плагин поиска Ansible Pass Lookup позволяет использовать совместимое хранилище паролей pass для генерации зашифрованных паролей. Он имитирует поведение поиска пароля, но использует pass
вместо текстовых файлов для хранения паролей.
Переменные роли
Доступные переменные с умолчательными значениями (см. defaults/main.yml
).
gcoop_mysqldump_cron_entries:
- name: monthly
minute: 0
hour: 2
day: '*/7'
format: '%b'
database: "{{ gcoop_mysqldump_database }}"
- name: daily
minute: 0
hour: 1
day: '*'
format: '%a'
database: "{{ gcoop_mysqldump_database }}"
- name: hourly
minute: 30
hour: '*'
day: '*'
format: ''
database: 'mysql'
По умолчанию gcoop_mysqldump_cron_entries
генерирует следующие файлы в директории /backup/sql
:
Один файл на каждый день недели:
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
Один файл на каждый месяц (обновляется каждые 7 дней):
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
Один файл, обновляемый с последним дампом (обновляется каждые 1 час)
hostname-dbname1.sql.gz
hostname-dbname2.sql.gz
Syslog
По умолчанию, роль записывает журналы cron в 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
Зависимости
Нет.
Пример плейбука
Если вы хотите создать новую систему и пользователя mysql, используя плагин поиска 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 ) }}"
Когда у вас уже есть система и пользователь 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
Лицензия
GNU General Public License, GPLv3.
Информация об авторе
Эта роль была создана в 2016 году Osiris Alejandro Gomez, рабочей кооперацией gcoop Cooperativa de Software Libre.
ansible-galaxy install gcoop-libre/ansible-role-mysqldump