| {%- from "mysql/map.jinja" import server with context %} |
| {%- set mysql = server %} |
| # |
| # The MySQL database server configuration file. |
| # |
| # You can copy this to one of: |
| # - "/etc/mysql/my.cnf" to set global options, |
| # - "~/.my.cnf" to set user-specific options. |
| # |
| # One can use all long options that the program supports. |
| # Run program with --help to get a list of available options and with |
| # --print-defaults to see which it would actually understand and use. |
| # |
| # For explanations see |
| # http://dev.mysql.com/doc/mysql/en/server-system-variables.html |
| |
| # This will be passed to all mysql clients |
| # It has been reported that passwords should be enclosed with ticks/quotes |
| # escpecially if they contain "#" chars... |
| # Remember to edit /etc/mysql/debian.cnf when changing the socket location. |
| |
| [client] |
| port = {{ server.bind.get('port', '3306') }} |
| socket = /var/run/mysqld/mysqld.sock |
| |
| {%- if server.force_encoding is defined %} |
| default-character-set=utf8 |
| {%- endif %} |
| |
| {%- if server.ssl.enabled and server.replication.role in ['slave'] %} |
| ssl-ca=/etc/mysql/cacert.pem |
| ssl-cert=/etc/mysql/client-cert.pem |
| ssl-key=/etc/mysql/client-key.pem |
| {%- endif %} |
| |
| # Here is entries for some specific programs |
| # The following values assume you have at least 32M ram |
| |
| # This was formally known as [safe_mysqld]. Both versions are currently parsed. |
| [mysqld_safe] |
| socket = /var/run/mysqld/mysqld.sock |
| nice = 0 |
| |
| [mysqld] |
| # |
| # * Basic Settings |
| # |
| user = mysql |
| pid-file = /var/run/mysqld/mysqld.pid |
| socket = /var/run/mysqld/mysqld.sock |
| port = 3306 |
| basedir = /usr |
| datadir = /var/lib/mysql |
| tmpdir = /tmp |
| lc-messages-dir = /usr/share/mysql |
| skip-external-locking |
| |
| {%- if server.sql_mode is defined %} |
| sql-mode={{ server.sql_mode }} |
| {%- endif %} |
| |
| # |
| # Instead of skip-networking the default is now to listen only on |
| # localhost which is more compatible and is not less secure. |
| bind-address = {{ server.bind.address }} |
| |
| {%- if server.force_encoding is defined %} |
| character-set-server=utf8 |
| {%- endif %} |
| |
| # |
| # * Fine Tuning |
| # |
| key_buffer_size = {{ mysql.get('key_buffer', '16') }}M |
| max_allowed_packet = {{ mysql.get('max_allowed_packet', '16') }}M |
| thread_stack = {{ mysql.get('thread_stack', '192') }}K |
| thread_cache_size = {{ mysql.get('thread_cache_size', '8') }} |
| # This replaces the startup script and checks MyISAM tables if needed |
| # the first time they are touched |
| myisam-recover-options = BACKUP |
| max_connections = {{ mysql.get('max_connections', '100') }} |
| #table_cache = 64 |
| #thread_concurrency = 10 |
| # |
| # * Query Cache Configuration |
| # |
| query_cache_limit = {{ mysql.get('query_cache_limit', '1') }}M |
| query_cache_size = {{ mysql.get('query_cache_size', '16') }}M |
| # |
| # * Logging and Replication |
| # |
| # Both location gets rotated by the cronjob. |
| # Be aware that this log type is a performance killer. |
| # As of 5.1 you can enable the log at runtime! |
| #general_log_file = /var/log/mysql/mysql.log |
| #general_log = 1 |
| # |
| # Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf. |
| # |
| # Here you can see queries with especially long duration |
| slow_query_log = 1 |
| slow_query_log_file = /var/log/mysql/mysql-slow.log |
| long_query_time = 2 |
| #log-queries-not-using-indexes |
| # |
| # The following can be used as easy to replay backup logs or for replication. |
| # note: if you are setting up a replication slave, see README.Debian about |
| # other settings you may need to change. |
| {%- if server.replication.role in ['slave', 'master', 'both'] %} |
| |
| server-id = {{ server.server_id }} |
| log_bin = /var/log/mysql/mysql-bin.log |
| expire_logs_days = 10 |
| |
| {%- if server.replication.role in ['both'] %} |
| {%- if server.replication.auto_increment is defined %} |
| auto_increment_increment = {{ server.replication.auto_increment.increment }} |
| auto_increment_offset = {{ server.replication.auto_increment.offset }} |
| {%- endif %} |
| {%- endif %} |
| |
| {%- if server.replication.role in ['slave'] %} |
| relay-log = /var/log/mysql/mysql-relay-bin.log |
| {%- for database_name, database in server.get('database', {}).iteritems() %} |
| binlog_do_db = {{ database_name }} |
| {%- endfor %} |
| {%- endif %} |
| |
| {%- endif %} |
| max_binlog_size = 100M |
| #binlog_ignore_db = include_database_name |
| # |
| # * InnoDB |
| # |
| # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. |
| # Read the manual for more InnoDB related options. There are many! |
| # |
| # * Security Features |
| # |
| # Read the manual, too, if you want chroot! |
| # chroot = /var/lib/mysql/ |
| # |
| # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". |
| # |
| |
| {%- if server.ssl.enabled and server.replication.role in ['master', 'slave', 'both', 'none'] %} |
| #old_passwords = 1 |
| #old_passwords param is deprecated in MySQL 5.7 and currently only accepts values 0 or 2 |
| ssl-ca=/etc/mysql/cacert.pem |
| ssl-cert=/etc/mysql/server-cert.pem |
| ssl-key=/etc/mysql/server-key.pem |
| {%- endif %} |
| |
| [mysqldump] |
| quick |
| quote-names |
| max_allowed_packet = 16M |
| |
| [mysql] |
| #no-auto-rehash # faster start of mysql but no tab completition |
| |
| [isamchk] |
| key_buffer_size = 16M |
| |
| # |
| # * IMPORTANT: Additional settings that can override those from this file! |
| # The files must end with '.cnf', otherwise they'll be ignored. |
| # |
| !includedir /etc/mysql/conf.d/ |