mirror of
https://github.com/aljazceru/ansible-role-mysql.git
synced 2025-12-19 11:04:19 +01:00
Issue #6: Add replication configuration.
This commit is contained in:
@@ -40,13 +40,29 @@ mysql_innodb_log_buffer_size: "8M"
|
|||||||
mysql_innodb_flush_log_at_trx_commit: "1"
|
mysql_innodb_flush_log_at_trx_commit: "1"
|
||||||
mysql_innodb_lock_wait_timeout: 50
|
mysql_innodb_lock_wait_timeout: 50
|
||||||
|
|
||||||
# mysqldump settings
|
# mysqldump settings.
|
||||||
mysql_mysqldump_max_allowed_packet: "64M"
|
mysql_mysqldump_max_allowed_packet: "64M"
|
||||||
|
|
||||||
# mysqld_safe setting
|
# Logging settings.
|
||||||
mysql_log_error: /var/log/mysqld.log
|
mysql_log_error: /var/log/mysqld.log
|
||||||
mysql_syslog_tag: mysqld
|
mysql_syslog_tag: mysqld
|
||||||
|
|
||||||
# databases and users settings
|
# Databases.
|
||||||
mysql_databases: []
|
mysql_databases: []
|
||||||
|
# Full example:
|
||||||
|
# mysql_databases:
|
||||||
|
# - { name: example, collation: utf8_general_ci, encoding: utf8, replicate: 1 }
|
||||||
|
|
||||||
|
# Users
|
||||||
mysql_users: []
|
mysql_users: []
|
||||||
|
# Full Example:
|
||||||
|
# mysql_users:
|
||||||
|
# - { name: example, host: 127.0.0.1, password: secret, priv: *.*:USAGE }
|
||||||
|
|
||||||
|
# Replication settings (replication is only enabled if master/user have values).
|
||||||
|
mysql_server_id: "1"
|
||||||
|
mysql_max_binlog_size: "100M"
|
||||||
|
mysql_replication_role: master
|
||||||
|
mysql_replication_master: ''
|
||||||
|
# Same keys as `mysql_users` above.
|
||||||
|
mysql_replication_user: []
|
||||||
|
|||||||
8
tasks/databases.yml
Normal file
8
tasks/databases.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure MySQL databases are present.
|
||||||
|
mysql_db:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
collation: "{{ item.collation | default('utf8_general_ci') }}"
|
||||||
|
encoding: "{{ item.encoding | default('utf8') }}"
|
||||||
|
state: present
|
||||||
|
with_items: mysql_databases
|
||||||
@@ -10,4 +10,6 @@
|
|||||||
|
|
||||||
- include: configure.yml
|
- include: configure.yml
|
||||||
- include: secure-installation.yml
|
- include: secure-installation.yml
|
||||||
- include: databases-users.yml
|
- include: databases.yml
|
||||||
|
- include: users.yml
|
||||||
|
- include: replication.yml
|
||||||
|
|||||||
51
tasks/replication.yml
Normal file
51
tasks/replication.yml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure replication user exists on master.
|
||||||
|
mysql_user:
|
||||||
|
name: "{{ mysql_replication_user.name }}"
|
||||||
|
host: "{{ mysql_replication_user.host | default('%') }}"
|
||||||
|
password: "{{ mysql_replication_user.password }}"
|
||||||
|
priv: "{{ mysql_replication_user.priv | default('*.*:REPLICATION SLAVE') }}"
|
||||||
|
state: present
|
||||||
|
when: >
|
||||||
|
(mysql_replication_role == 'master')
|
||||||
|
and mysql_replication_user
|
||||||
|
and (mysql_replication_master != '')
|
||||||
|
|
||||||
|
- name: Check slave replication status.
|
||||||
|
mysql_replication: mode=getslave
|
||||||
|
ignore_errors: true
|
||||||
|
register: slave
|
||||||
|
when: >
|
||||||
|
mysql_replication_role == 'slave'
|
||||||
|
and (mysql_replication_master != '')
|
||||||
|
|
||||||
|
- name: Check master replication status.
|
||||||
|
mysql_replication: mode=getmaster
|
||||||
|
delegate_to: "{{ mysql_replication_master }}"
|
||||||
|
register: master
|
||||||
|
when: >
|
||||||
|
slave|failed
|
||||||
|
and (mysql_replication_role == 'slave')
|
||||||
|
and (mysql_replication_master != '')
|
||||||
|
|
||||||
|
- name: Configure replication on the slave.
|
||||||
|
mysql_replication:
|
||||||
|
mode: changemaster
|
||||||
|
master_host: "{{ mysql_replication_master }}"
|
||||||
|
master_user: "{{ mysql_replication_user.name }}"
|
||||||
|
master_password: "{{ mysql_replication_user.password }}"
|
||||||
|
master_log_file: "{{ master.File }}"
|
||||||
|
master_log_pos: "{{ master.Position }}"
|
||||||
|
ignore_errors: True
|
||||||
|
when: >
|
||||||
|
slave|failed
|
||||||
|
and (mysql_replication_role == 'slave')
|
||||||
|
and (mysql_replication_master != '')
|
||||||
|
and mysql_replication_user
|
||||||
|
|
||||||
|
- name: Start replication.
|
||||||
|
mysql_replication: mode=startslave
|
||||||
|
when: >
|
||||||
|
slave|failed
|
||||||
|
and (mysql_replication_role == 'slave')
|
||||||
|
and (mysql_replication_master != '')
|
||||||
@@ -1,12 +1,4 @@
|
|||||||
---
|
---
|
||||||
- name: Ensure MySQL databases are present.
|
|
||||||
mysql_db:
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
collation: "{{ item.collation | default('utf8_general_ci') }}"
|
|
||||||
encoding: "{{ item.encoding | default('utf8') }}"
|
|
||||||
state: present
|
|
||||||
with_items: mysql_databases
|
|
||||||
|
|
||||||
- name: Ensure MySQL users are present.
|
- name: Ensure MySQL users are present.
|
||||||
mysql_user:
|
mysql_user:
|
||||||
name: "{{ item.name }}"
|
name: "{{ item.name }}"
|
||||||
@@ -8,13 +8,34 @@ port = {{ mysql_port }}
|
|||||||
datadir = {{ mysql_datadir }}
|
datadir = {{ mysql_datadir }}
|
||||||
socket = {{ mysql_socket }}
|
socket = {{ mysql_socket }}
|
||||||
|
|
||||||
|
# Replication
|
||||||
|
server-id = {{ mysql_server_id }}
|
||||||
|
|
||||||
|
{% if mysql_replication_role == 'master' %}
|
||||||
|
log_bin = mysql-bin
|
||||||
|
log-bin-index = mysql-bin.index
|
||||||
|
expire_logs_days = 10
|
||||||
|
max_binlog_size = {{ mysql_max_binlog_size }}
|
||||||
|
|
||||||
|
{% for db in mysql_databases %}
|
||||||
|
{% if db.replicate|default(1) %}
|
||||||
|
binlog_do_db = {{ db.name }}
|
||||||
|
{% else %}
|
||||||
|
binlog_ignore_db = {{ db.name }}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if mysql_replication_role == 'slave' %}
|
||||||
|
read_only
|
||||||
|
relay-log = relay-bin
|
||||||
|
relay-log-index = relay-bin.index
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||||
symbolic-links = 0
|
symbolic-links = 0
|
||||||
|
|
||||||
# Settings user and group are ignored when systemd is used (fedora >= 15).
|
# User is ignored when systemd is used (fedora <= 15).
|
||||||
# If you need to run mysqld under a different user or group,
|
|
||||||
# customize your systemd unit file for mysqld according to the
|
|
||||||
# instructions in http://fedoraproject.org/wiki/Systemd
|
|
||||||
user = mysql
|
user = mysql
|
||||||
|
|
||||||
# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
|
# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
|
||||||
|
|||||||
Reference in New Issue
Block a user