summaryrefslogtreecommitdiffstats
path: root/deploy/adapters/ansible/roles/database
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/adapters/ansible/roles/database')
-rw-r--r--deploy/adapters/ansible/roles/database/files/my.cnf60
-rw-r--r--deploy/adapters/ansible/roles/database/tasks/mariadb.yml14
-rw-r--r--deploy/adapters/ansible/roles/database/tasks/mysql.yml7
-rw-r--r--deploy/adapters/ansible/roles/database/templates/my-huge.cnf151
-rw-r--r--deploy/adapters/ansible/roles/database/templates/server.cnf47
-rw-r--r--deploy/adapters/ansible/roles/database/templates/wsrep.cnf2
-rw-r--r--deploy/adapters/ansible/roles/database/vars/Debian.yml8
-rw-r--r--deploy/adapters/ansible/roles/database/vars/RedHat.yml16
-rw-r--r--deploy/adapters/ansible/roles/database/vars/main.yml5
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