Page MenuHomeDevCentral

No OneTemporary

diff --git a/roles/dbserver-mysql/mysql-server/cnf.sls b/roles/dbserver-mysql/mysql-server/cnf.sls
index 83dfe1b..ffaa617 100644
--- a/roles/dbserver-mysql/mysql-server/cnf.sls
+++ b/roles/dbserver-mysql/mysql-server/cnf.sls
@@ -1,74 +1,68 @@
# -------------------------------------------------------------
# Salt — Database server — MySQL
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Project: Nasqueron
# Created: 2017-10-27
# License: Trivial work, not eligible to copyright
# -------------------------------------------------------------
{% from "map.jinja" import dirs with context %}
{% set use_zfs = salt['node.has']('zfs:pool') %}
{% set is_devserver = salt['node.has_role']('devserver') %}
# -------------------------------------------------------------
# Required directories
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/var/run/mysql:
file.directory:
- user: mysql
- group: mysql
- dir_mode: 755
-/var/db/mysql:
- file.directory:
- - user: mysql
- - group: mysql
- - dir_mode: 755
-
{{ dirs.etc }}/mysql:
file.directory:
- user: root
- group: mysql
- dir_mode: 755
# -------------------------------------------------------------
# Configuration files
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{ dirs.etc }}/mysql/conf.d:
file.recurse:
- source: salt://roles/dbserver-mysql/mysql-server/files/conf.d
- clean: True # remove wsrep.cnf values (and empty config files)
- template: jinja
- context:
nodename: {{ grains['id'] }}
etc: {{ dirs.etc }}
share: {{ dirs.share }}
use_zfs: {{ use_zfs }}
{% if is_devserver %}
listen_ip: 127.0.0.1
{% else %}
listen_ip: 0.0.0.0
{% endif %}
{{ dirs.etc }}/mysql/stopwords.txt:
file.managed:
- source: salt://roles/dbserver-mysql/mysql-server/files/stopwords.txt
# -------------------------------------------------------------
# Service
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% if grains['os'] == 'FreeBSD' %}
/etc/rc.conf.d/mysql:
file.managed:
- source: salt://roles/dbserver-mysql/mysql-server/files/mysql.rc
- template: jinja
- context:
use_zfs: {{ use_zfs }}
{% endif %}
diff --git a/roles/dbserver-mysql/mysql-server/files/conf.d/server.cnf b/roles/dbserver-mysql/mysql-server/files/conf.d/server.cnf
index c47d2c0..e3a0e99 100644
--- a/roles/dbserver-mysql/mysql-server/files/conf.d/server.cnf
+++ b/roles/dbserver-mysql/mysql-server/files/conf.d/server.cnf
@@ -1,111 +1,111 @@
# -------------------------------------------------------------
# MariaDB configuration :: servers
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Project: Nasqueron
# License: Trivial work, not eligible to copyright
# Source file: roles/dbserver-mysql/mysql-server/files/conf.d/server.cnf
# -------------------------------------------------------------
#
# <auto-generated>
# This file is managed by our rOPS SaltStack repository.
#
# Changes to this file may cause incorrect behavior
# and will be lost if the state is redeployed.
# </auto-generated>
# -------------------------------------------------------------
# Server wrapper
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[mariadb-safe]
pid-file = /var/run/mysql/mysqld.pid
socket = /var/run/mysql/mysqld.sock
nice = 0
# -------------------------------------------------------------
# Generic server settings
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[mysqld]
user = mysql
pid-file = /var/run/mysql/mysqld.pid
basedir = /usr
tmpdir = /tmp
-datadir = /var/db/mysql
+datadir = /var/db/mysql/data
lc-messages-dir = {{ share }}/mysql
bind-address = {{ listen_ip }}
socket = /var/run/mysql/mysqld.sock
port = 3306
net_retry_count = 16384
log_error = /var/log/mysql/mysqld.err
sql_mode = STRICT_ALL_TABLES
explicit_defaults_for_timestamp
log_bin
log_basename = {{ nodename }}
binlog_cache_size = 1M
max_binlog_size = 1000M
binlog_expire_logs_seconds = 1209600 # 14 days
binlog_format = MIXED
# -------------------------------------------------------------
# InnoDB / XtraDB configuration
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
default-storage-engine = InnoDB
innodb_buffer_pool_size = 410M
{% if use_zfs %}
innodb_data_home_dir = /var/db/mysql/mysql-innodb-data
innodb_log_group_home_dir = /var/db/mysql/mysql-innodb-logs
innodb_file_per_table = off
innodb_doublewrite = 0
innodb_flush_method = O_DSYNC
{% endif %}
# -------------------------------------------------------------
# Performance schema
#
# Wikimedia production servers on s3 have this configuration
# with only 100MB of overhead. This is an acceptable cost
# for a valuable information.
#
# Reference: https://phabricator.wikimedia.org/T99485
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
performance_schema = 1
performance_schema_max_thread_instances = 500
performance_schema_max_cond_instances = 1000
performance_schema_accounts_size = 300
performance_schema_hosts_size = 300
performance_schema_events_statements_history_size = 10
performance_schema_events_statements_history_long_size = 1000
performance_schema_events_waits_history_size = 10
performance_schema_events_waits_history_long_size = 1000
performance_schema_events_stages_history_size = 10
performance_schema_events_stages_history_long_size = 1000
performance_schema_max_mutex_instances = 5000
performance_schema_max_rwlock_instances = 2000
performance_schema_max_socket_instances = 500
performance_schema_max_table_instances = 1000
# -------------------------------------------------------------
# Applications configuration
#
# :: Phabricator
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Phabricator
max_allowed_packet = 32M
ft_stopword_file = {{ etc }}/mysql/stopwords.txt
ft_min_word_len = 3
ft_boolean_syntax = ' |-><()~*:""&^'
diff --git a/roles/dbserver-mysql/mysql-server/files/mysql.rc b/roles/dbserver-mysql/mysql-server/files/mysql.rc
index 952af32..38e025e 100644
--- a/roles/dbserver-mysql/mysql-server/files/mysql.rc
+++ b/roles/dbserver-mysql/mysql-server/files/mysql.rc
@@ -1,13 +1,13 @@
# -------------------------------------------------------------
# Database server — MySQL — rc configuration
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Project: Nasqueron
# Created: 2017-11-05
# License: Trivial work, not eligible to copyright
# -------------------------------------------------------------
mysql_enable="YES"
mysql_rundir="/var/run/mysql"
mysql_pidfile="/var/run/mysql/mysqld.pid"
-mysql_dbdir=/var/db/mysql
+mysql_dbdir=/var/db/mysql/data
diff --git a/roles/dbserver-mysql/mysql-server/software.sls b/roles/dbserver-mysql/mysql-server/software.sls
index da0341e..31a70bd 100644
--- a/roles/dbserver-mysql/mysql-server/software.sls
+++ b/roles/dbserver-mysql/mysql-server/software.sls
@@ -1,18 +1,30 @@
# -------------------------------------------------------------
# Salt — Database server — MySQL
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Project: Nasqueron
# Created: 2017-10-27
# License: Trivial work, not eligible to copyright
# -------------------------------------------------------------
{% from "map.jinja" import packages with context %}
# -------------------------------------------------------------
# MySQL server
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mysql_server_software:
pkg.installed:
- pkgs:
- {{ packages.mariadb }}
+
+# -------------------------------------------------------------
+# Root directory for MySQL
+#
+# :: /var/db/mysql is required by both zfs and cnf states
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+/var/db/mysql:
+ file.directory:
+ - user: mysql
+ - group: mysql
+ - dir_mode: 755
diff --git a/roles/dbserver-mysql/mysql-server/zfs.sls b/roles/dbserver-mysql/mysql-server/zfs.sls
index 46eef6d..00f8dd5 100644
--- a/roles/dbserver-mysql/mysql-server/zfs.sls
+++ b/roles/dbserver-mysql/mysql-server/zfs.sls
@@ -1,45 +1,45 @@
# -------------------------------------------------------------
# Salt — Database server — MySQL
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Project: Nasqueron
# Created: 2017-10-27
# License: Trivial work, not eligible to copyright
# -------------------------------------------------------------
{% if salt['node.has']('zfs:pool') %}
{% set tank = salt['node.get']("zfs:pool") %}
{{ tank }}/mysql-root:
zfs.filesystem_present:
# This one is optimized for MyISAM
- properties:
- mountpoint: /var/db/mysql
+ mountpoint: /var/db/mysql/data
compression: lz4
recordsize: 8K
{% for mysqldir in ['innodb-data', 'innodb-logs'] %}
/var/db/mysql/mysql-{{ mysqldir }}:
file.directory:
- user: mysql
- group: mysql
- dir_mode: 711
{% endfor %}
{{ tank }}/mysql-innodb-data:
zfs.filesystem_present:
- properties:
mountpoint: /var/db/mysql/mysql-innodb-data
compression: lz4
recordsize: 16K
primarycache: metadata
{{ tank }}/mysql-innodb-logs:
zfs.filesystem_present:
- properties:
mountpoint: /var/db/mysql/mysql-innodb-logs
compression: lz4
recordsize: 128K
primarycache: metadata
{% endif %}

File Metadata

Mime Type
text/x-diff
Expires
Wed, Mar 18, 12:44 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3539750
Default Alt Text
(9 KB)

Event Timeline