Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F24894216
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
Mode
rOPS Nasqueron Operations
Attached
Detach File
Event Timeline
Log In to Comment