diff options
Diffstat (limited to 'deploy/adapters/ansible/roles/database')
9 files changed, 268 insertions, 42 deletions
diff --git a/deploy/adapters/ansible/roles/database/files/my.cnf b/deploy/adapters/ansible/roles/database/files/my.cnf index 8575d978..e4a23d96 100644 --- a/deploy/adapters/ansible/roles/database/files/my.cnf +++ b/deploy/adapters/ansible/roles/database/files/my.cnf @@ -17,38 +17,38 @@ # escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] -port = 3306 -socket = /var/run/mysqld/mysqld.sock +port = 3306 +socket = /var/run/mysqld/mysqld.sock # 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 +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 +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 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. -bind-address = 0.0.0.0 +bind-address = 0.0.0.0 # # * Fine Tuning # -key_buffer = 16M +key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 @@ -57,7 +57,7 @@ thread_cache_size = 8 myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 -#thread_concurrenc = 10 +#thread_concurrency = 10 # # * Query Cache Configuration # @@ -69,27 +69,27 @@ query_cache_size = 16M # 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 +#general_log_file = /var/log/mysql/mysql.log +#general_log = 1 # # Error log - should be very few entries. # log_error = /var/log/mysql/error.log # # Here you can see queries with especially long duration -#log_slow_queries = /var/log/mysql/mysql-slow.log -#long_query_time = 2 +#log_slow_queries = /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. -#server-id = 1 -#log_bin = /var/log/mysql/mysql-bin.log -expire_logs_days = 10 -max_binlog_size = 100M -#binlog_do_db = include_database_name -#binlog_ignore_db = include_database_name +#server-id = 1 +#log_bin = /var/log/mysql/mysql-bin.log +expire_logs_days = 10 +max_binlog_size = 100M +#binlog_do_db = include_database_name +#binlog_ignore_db = include_database_name # # * InnoDB # @@ -108,20 +108,20 @@ max_binlog_size = 100M # ssl-key=/etc/mysql/server-key.pem default-storage-engine = innodb innodb_file_per_table -collation-server = utf8_general_ci -init-connect = 'SET NAMES utf8' -character-set-server = utf8 +collation-server = utf8_general_ci +init-connect = 'SET NAMES utf8' +character-set-server = utf8 [mysqldump] quick quote-names -max_allowed_packet = 16M +max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] -key_buffer = 16M +key_buffer = 16M # # * IMPORTANT: Additional settings that can override those from this file! diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb.yml index 50618bfc..dbd76c68 100644 --- a/deploy/adapters/ansible/roles/database/tasks/mariadb.yml +++ b/deploy/adapters/ansible/roles/database/tasks/mariadb.yml @@ -1,16 +1,17 @@ --- - name: install python-mysqldb - action: "{{ ansible_pkg_mgr }} name={{ item }} state=present force=yes" - with_items: maridb_packages + action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" + with_items: maridb_packages | union(packages_noarch) - name: create mysql log directy file: path=/var/log/mysql state=directory owner=mysql group=mysql mode=0755 -- name: update mariadb my.cnf - template: src=my.cnf dest=/etc/mysql/my.cnf backup=yes +- name: update mariadb config file + template: src={{ item }} dest={{ mysql_config_file_path }}/{{ item }} backup=yes + with_items: mysql_config_file_name - name: update galera wsrep.cnf - template: src=wsrep.cnf dest=/etc/mysql/conf.d/wsrep.cnf backup=yes + template: src=wsrep.cnf dest={{ wsrep_config_file_path }}/wsrep.cnf backup=yes - name: update wsrep_sst_rsync uid lineinfile: dest=/usr/bin/wsrep_sst_rsync state=absent regexp="\s*uid = \$MYUID$" backup=yes @@ -29,8 +30,7 @@ - name: generate mysql service list shell: echo {{ item }} >> /opt/service - with_items: - - mysql + with_items: services_noarch - name: create database/user shell: /opt/data.sh diff --git a/deploy/adapters/ansible/roles/database/tasks/mysql.yml b/deploy/adapters/ansible/roles/database/tasks/mysql.yml index 8005292e..809d6172 100644 --- a/deploy/adapters/ansible/roles/database/tasks/mysql.yml +++ b/deploy/adapters/ansible/roles/database/tasks/mysql.yml @@ -6,10 +6,9 @@ - name: create mysql log directy file: path=/var/log/mysql state=directory owner=mysql group=mysql mode=0755 -- name: update mysql my.cnf - copy: src=my.cnf - dest=/etc/mysql/my.cnf - backup=yes +- name: update mysql config file + copy: src= {{ item }} dest={{ mysql_config_file_path }}/{{ item }} backup=yes + with_items: mysql_config_file_name - name: manually restart mysql server shell: service mysql restart diff --git a/deploy/adapters/ansible/roles/database/templates/my-huge.cnf b/deploy/adapters/ansible/roles/database/templates/my-huge.cnf new file mode 100644 index 00000000..c561858c --- /dev/null +++ b/deploy/adapters/ansible/roles/database/templates/my-huge.cnf @@ -0,0 +1,151 @@ +# Example MariaDB config file for very large systems. +# +# This is for a large system with memory of 1G-2G where the system runs mainly +# MariaDB. +# +# MariaDB programs look for option files in a set of +# locations which depend on the deployment platform. +# You can copy this option file to one of those +# locations. For information about these locations, do: +# 'my_print_defaults --help' and see what is printed under +# Default options are read from the following files in the given order: +# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html +# +# In this file, you can use all long options that a program supports. +# If you want to know which options a program supports, run the program +# with the "--help" option. + +# The following options will be passed to all MySQL clients +[client] +#password = your_password +port = 3306 +socket = /var/lib/mysql/mysql.sock + +# Here follows entries for some specific programs + +# The MySQL server +[mysqld] +port = 3306 +socket = /var/lib/mysql/mysql.sock +skip-external-locking +key_buffer_size = 384M +max_allowed_packet = 1M +table_open_cache = 512 +sort_buffer_size = 2M +read_buffer_size = 2M +read_rnd_buffer_size = 8M +myisam_sort_buffer_size = 64M +thread_cache_size = 8 +query_cache_size = 32M +# Try number of CPU's*2 for thread_concurrency +thread_concurrency = 8 + +# Point the following paths to a dedicated disk +#tmpdir = /tmp/ + +# Don't listen on a TCP/IP port at all. This can be a security enhancement, +# if all processes that need to connect to mysqld run on the same host. +# All interaction with mysqld must be made via Unix sockets or named pipes. +# Note that using this option without enabling named pipes on Windows +# (via the "enable-named-pipe" option) will render mysqld useless! +# +#skip-networking + +# Replication Master Server (default) +# binary logging is required for replication +log-bin=mysql-bin + +# required unique id between 1 and 2^32 - 1 +# defaults to 1 if master-host is not set +# but will not function as a master if omitted +server-id = 1 + +# Replication Slave (comment out master section to use this) +# +# To configure this host as a replication slave, you can choose between +# two methods : +# +# 1) Use the CHANGE MASTER TO command (fully described in our manual) - +# the syntax is: +# +# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, +# MASTER_USER=<user>, MASTER_PASSWORD=<password> ; +# +# where you replace <host>, <user>, <password> by quoted strings and +# <port> by the master's port number (3306 by default). +# +# Example: +# +# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, +# MASTER_USER='joe', MASTER_PASSWORD='secret'; +# +# OR +# +# 2) Set the variables below. However, in case you choose this method, then +# start replication for the first time (even unsuccessfully, for example +# if you mistyped the password in master-password and the slave fails to +# connect), the slave will create a master.info file, and any later +# change in this file to the variables' values below will be ignored and +# overridden by the content of the master.info file, unless you shutdown +# the slave server, delete master.info and restart the slaver server. +# For that reason, you may want to leave the lines below untouched +# (commented) and instead use CHANGE MASTER TO (see above) +# +# required unique id between 2 and 2^32 - 1 +# (and different from the master) +# defaults to 2 if master-host is set +# but will not function as a slave if omitted +#server-id = 2 +# +# The replication master for this slave - required +#master-host = <hostname> +# +# The username the slave will use for authentication when connecting +# to the master - required +#master-user = <username> +# +# The password the slave will authenticate with when connecting to +# the master - required +#master-password = <password> +# +# The port the master is listening on. +# optional - defaults to 3306 +#master-port = <port> +# +# binary logging - not required for slaves, but recommended +#log-bin=mysql-bin +# +# binary logging format - mixed recommended +#binlog_format=mixed + +# Uncomment the following if you are using InnoDB tables +#innodb_data_home_dir = /var/lib/mysql +#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend +#innodb_log_group_home_dir = /var/lib/mysql +# You can set .._buffer_pool_size up to 50 - 80 % +# of RAM but beware of setting memory usage too high +#innodb_buffer_pool_size = 384M +#innodb_additional_mem_pool_size = 20M +# Set .._log_file_size to 25 % of buffer pool size +#innodb_log_file_size = 100M +#innodb_log_buffer_size = 8M +#innodb_flush_log_at_trx_commit = 1 +#innodb_lock_wait_timeout = 50 + +[mysqldump] +quick +max_allowed_packet = 16M + +[mysql] +no-auto-rehash +# Remove the next comment character if you are not familiar with SQL +#safe-updates + +[myisamchk] +key_buffer_size = 256M +sort_buffer_size = 256M +read_buffer = 2M +write_buffer = 2M + +[mysqlhotcopy] +interactive-timeout diff --git a/deploy/adapters/ansible/roles/database/templates/server.cnf b/deploy/adapters/ansible/roles/database/templates/server.cnf new file mode 100644 index 00000000..e0893c0f --- /dev/null +++ b/deploy/adapters/ansible/roles/database/templates/server.cnf @@ -0,0 +1,47 @@ +# +# These groups are read by MariaDB server. +# Use it for options that only the server (but not clients) should see +# +# See the examples of server my.cnf files in /usr/share/mysql/ +# + +# this is read by the standalone daemon and embedded servers +[server] + +# this is only for the mysqld standalone daemon +[mysqld] +log_error = /var/log/mysql/error.log +max_connections = 2000 +max_connect_errors = 8000 +skip-host-cache +skip-name-resolve +bind-address = {{ HA_VIP }} +# +# * Galera-related settings +# +[galera] +# Mandatory settings +#wsrep_provider= +#wsrep_cluster_address= +#binlog_format=row +#default_storage_engine=InnoDB +#innodb_autoinc_lock_mode=2 +#bind-address=0.0.0.0 +# +# Optional setting +#wsrep_slave_threads=1 +#innodb_flush_log_at_trx_commit=0 + +# this is only for embedded server +[embedded] + +# This group is only read by MariaDB servers, not by MySQL. +# If you use the same .cnf file for MySQL and MariaDB, +# you can put MariaDB-only options here +[mariadb] + +# This group is only read by MariaDB-10.0 servers. +# If you use the same .cnf file for MariaDB of different versions, +# use this group for options that older servers don't understand +[mariadb-10.0] + diff --git a/deploy/adapters/ansible/roles/database/templates/wsrep.cnf b/deploy/adapters/ansible/roles/database/templates/wsrep.cnf index b9e94245..81699796 100644 --- a/deploy/adapters/ansible/roles/database/templates/wsrep.cnf +++ b/deploy/adapters/ansible/roles/database/templates/wsrep.cnf @@ -39,7 +39,7 @@ bind-address={{ HA_VIP }} ## # Full path to wsrep provider library or 'none' -wsrep_provider=/usr/lib/galera/libgalera_smm.so +wsrep_provider={{ wsrep_provider_file }} # Provider specific configuration options #wsrep_provider_options= diff --git a/deploy/adapters/ansible/roles/database/vars/Debian.yml b/deploy/adapters/ansible/roles/database/vars/Debian.yml index d23c18de..5c014b4b 100644 --- a/deploy/adapters/ansible/roles/database/vars/Debian.yml +++ b/deploy/adapters/ansible/roles/database/vars/Debian.yml @@ -1,4 +1,5 @@ --- + mysql_packages: - python-mysqldb - mysql-server @@ -10,3 +11,10 @@ maridb_packages: - python-mysqldb - mysql-server-wsrep - galera + +services: [] + +mysql_config_file_path: "/etc/mysql" +mysql_config_file_name: "my.cnf" +wsrep_config_file_path: "/etc/mysql/conf.d" +wsrep_provider_file: "/usr/lib/galera/libgalera_smm.so" diff --git a/deploy/adapters/ansible/roles/database/vars/RedHat.yml b/deploy/adapters/ansible/roles/database/vars/RedHat.yml new file mode 100644 index 00000000..1e4b427a --- /dev/null +++ b/deploy/adapters/ansible/roles/database/vars/RedHat.yml @@ -0,0 +1,16 @@ +--- +mysql_packages: + - python-mysqldb + - mysql-server + +maridb_packages: + - MariaDB-client + - MariaDB-server + - galera + +services: [] + +mysql_config_file_path: "/etc/my.cnf.d" +mysql_config_file_name: ["my-huge.cnf", "server.cnf"] +wsrep_config_file_path: "/etc/my.cnf.d" +wsrep_provider_file: "/usr/lib64/galera/libgalera_smm.so" diff --git a/deploy/adapters/ansible/roles/database/vars/main.yml b/deploy/adapters/ansible/roles/database/vars/main.yml new file mode 100644 index 00000000..e497cd92 --- /dev/null +++ b/deploy/adapters/ansible/roles/database/vars/main.yml @@ -0,0 +1,5 @@ +--- +packages_noarch: [] + +services_noarch: + - mysql |