diff --git a/defaults/main.yml b/defaults/main.yml index cbb72b0..e327699 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -8,6 +8,7 @@ mysql_vendor: 'mariadb' mysql_root_password: 'change_me_NOW' mysql_notify_restart: true mysql_upstream_apt_src: false +mysql_manage_logrotate: true # ------------------------------------- # Configuration @@ -25,7 +26,7 @@ mysql_socket: '/var/run/mysqld/mysqld.sock' # Slow query log settings. mysql_slow_query_log_enabled: false -mysql_slow_query_log_file: '/var/log/mysql-slow.log' +mysql_slow_query_log_file: '/var/log/mysql/mysql_slow.log' mysql_slow_query_time: 2 # Memory settings (default values optimized ~512MB RAM). @@ -57,8 +58,7 @@ mysql_innodb_lock_wait_timeout: 50 mysql_mysqldump_max_allowed_packet: '64M' # Logging settings. -mysql_log: '' -mysql_log_error: '/var/log/mysql.err' +mysql_log_error: '/var/log/mysql/mysql_error.log' mysql_syslog_tag: 'mysql' # ------------------------------------- diff --git a/tasks/main.yml b/tasks/main.yml index 9c3d16a..b84c129 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -54,3 +54,9 @@ host="{{ item.host | default('localhost') }}" state=present with_items: "{{ mysql_users }}" + +- name: TEMPLATE | Deploy logrotate configuration + template: + src: "etc/logrotate.d/mysql-server.j2" + dest: "/etc/logrotate.d/mysql-server" + when: mysql_manage_logrotate diff --git a/templates/etc/logrotate.d/mysql-server.j2 b/templates/etc/logrotate.d/mysql-server.j2 new file mode 100644 index 0000000..f988812 --- /dev/null +++ b/templates/etc/logrotate.d/mysql-server.j2 @@ -0,0 +1,24 @@ +# +# {{ ansible_managed }} +# + +# - I put everything in one block and added sharedscripts, so that mysql gets +# flush-logs'd only once. +# Else the binary logs would automatically increase by n times every day. +# - The error log is obsolete, messages go to syslog now. +{{ mysql_log_error }} {% if mysql_slow_query_log_enabled %}{{ mysql_slow_query_log_file }}{% endif %} { + daily + rotate 7 + missingok + create 640 mysql adm + compress + sharedscripts + postrotate + test -x /usr/bin/mysqladmin || exit 0 + if [ -f `my_print_defaults --mysqld | grep -m 1 -oP "pid-file=\K.+$"` ]; then + # If this fails, check debian.conf! + mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log \ + flush-engine-log flush-general-log flush-slow-log + fi + endscript +} diff --git a/templates/etc/mysql/my.cnf.j2 b/templates/etc/mysql/my.cnf.j2 index a7e21d5..62edc63 100644 --- a/templates/etc/mysql/my.cnf.j2 +++ b/templates/etc/mysql/my.cnf.j2 @@ -14,21 +14,15 @@ socket = {{ mysql_socket }} {# TODO: FIX later #} # Logging configuration. -{% if mysql_log_error == 'syslog' or mysql_log == 'syslog' %} +{% if mysql_log_error == 'syslog' %} syslog syslog-tag = {{ mysql_syslog_tag }} {% else %} -{% if mysql_log %} -log = {{ mysql_log }} -{% endif %} log-error = {{ mysql_log_error }} {% endif %} {% if mysql_slow_query_log_enabled %} # Slow query log configuration. -{% if mysql_vendor not in ['mariadb', 'mariadbgalera'] or mysql_mariadb_version | version_compare('10.0', '<') %} -log_slow_queries = 1 -{% endif %} slow_query_log = 1 slow_query_log_file = {{ mysql_slow_query_log_file }} long_query_time = {{ mysql_slow_query_time }} diff --git a/tests/group_vars/all b/tests/group_vars/all index a6ea88c..c687c4e 100644 --- a/tests/group_vars/all +++ b/tests/group_vars/all @@ -3,3 +3,4 @@ mysql_extra_configuration: innodb_commit_concurrency: 0 mysql_use_percona_apt: true mysql_install_xtrabackup_package: true +mysql_slow_query_log_enabled: true