From fb2e7aebab634132dcce6130eb8115e368f42702 Mon Sep 17 00:00:00 2001
From: Giancarlo Razzolini <grazzolini@archlinux.org>
Date: Thu, 23 Jul 2020 17:35:36 -0300
Subject: [PATCH] roles/mariadb: Set the nocow attribute when using btrfs

To improve mysql performance when using btrfs, set the nocow attribute
before running initdb, so all the files created under the mysql datadir have
the attribute.
---
 roles/mariadb/defaults/main.yml |  1 +
 roles/mariadb/tasks/main.yml    | 11 +++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/roles/mariadb/defaults/main.yml b/roles/mariadb/defaults/main.yml
index f72c3e376..875f76afb 100644
--- a/roles/mariadb/defaults/main.yml
+++ b/roles/mariadb/defaults/main.yml
@@ -1,4 +1,5 @@
 ---
+mariadb_data_dir: '/var/lib/mysql'
 mariadb_skip_name_resolve: False
 mariadb_skip_networking: True
 
diff --git a/roles/mariadb/tasks/main.yml b/roles/mariadb/tasks/main.yml
index 820cbd523..e3d405719 100644
--- a/roles/mariadb/tasks/main.yml
+++ b/roles/mariadb/tasks/main.yml
@@ -2,10 +2,17 @@
 - name: install mariadb
   pacman: name=mariadb,python-mysqlclient state=present
 
+- name: set the nocow attribute for btrfs
+  file:
+    path: "{{ mariadb_data_dir }}"
+    state: directory
+    attributes: '+C'
+  when: filesystem == 'btrfs'
+
 - name: initialize mariadb
-  command: mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
+  command: mysql_install_db --user=mysql --basedir=/usr --datadir="{{ mariadb_data_dir }}"
   args:
-    creates: /var/lib/mysql/mysql
+    creates: "{{ mariadb_data_dir }}/mysql"
 
 - name: configure mariadb
   template: src=server.cnf.j2 dest=/etc/my.cnf.d/server.cnf
-- 
GitLab