[MCOL-4796] Change STANDALONE layout dirs for /etc and /var Created: 2021-07-04  Updated: 2023-07-01

Status: Open
Project: MariaDB ColumnStore
Component/s: Build
Affects Version/s: 6.1.1
Fix Version/s: 23.10

Type: Task Priority: Major
Reporter: Alexander Barkov Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Blocks
blocks MCOL-4793 Make Columnstore installation relocat... Open

 Description   

By default, ColumnStore installs configuration files into the root /etc and /var directories.

This is fine for RPM and DEB builds. However, this is not good for STANDALONE builds.

With standalone builds we're going to allow non-root installations of ColumnStore.
Also, with standalone builds everything should reside inside the same directory, so one can do:

cmake -DCMAKE_INSTALL_PREFIX=/tmp/mariadb
make
make install
tar -zcf mariadb-standalone-binary-distribution.tar.gz /tmp/mariadb/

Note, this generally works with MariaDB - unless ColumnStore is enabled.

This patch does the trick:

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,6 +43,10 @@ SET (ENGINE_DATADIR    "/var/lib/columnstore")
 SET (ENGINE_LOGDIR    "/var/log/mariadb/columnstore")
 IF (INSTALL_LAYOUT)
+    IF (INSTALL_LAYOUT MATCHES "STANDALONE")
+       SET (ENGINE_DATADIR    "${CMAKE_INSTALL_PREFIX}/var/lib/columnstore")
+       SET (ENGINE_SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc")
+    ENDIF ()
     # We are building from MariaDB server submodule if this is set
     SET(MARIADB_PLUGINDIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_PLUGINDIR}")
     IF (INSTALL_SYSCONF2DIR)

However it makes the following directory layout:

[bar@home mariadb-10.6-cs]$ ls -l --group-directories-first /opt/mariadb-10.6-cs
total 204
drwxr-xr-x.  2 bar bar  4096 Apr 26 16:19 bin
drwx------.  9 bar bar  4096 Apr 27 06:43 data           <--- MariaDB data directory
drwxr-xr-x.  3 bar bar  4096 Apr 26 16:19 include
drwxr-xr-x.  4 bar bar  4096 Apr 26 16:19 lib
drwxr-xr-x.  4 bar bar  4096 Apr 26 16:19 man
drwxrwxr-x.  9 bar bar  4096 Apr 26 16:19 mysql-test
drwxr-xr-x.  2 bar bar  4096 Apr 26 16:19 scripts
drwxr-xr-x. 32 bar bar  4096 Apr 26 16:19 share
drwxr-xr-x.  4 bar bar  4096 Apr 26 16:19 sql-bench
drwxr-xr-x.  3 bar bar  4096 Apr 26 16:19 support-files
drwxr-xr-x.  3 bar bar  4096 Apr 26 16:19 var             <--- ColumnStore data directory
-rw-r--r--.  1 bar bar 17987 Apr 26 06:21 COPYING
-rw-r--r--.  1 bar bar  2093 Apr 26 06:21 CREDITS
-rw-r--r--.  1 bar bar  8245 Apr 26 06:21 EXCEPTIONS-CLIENT
-rw-r--r--.  1 bar bar  8782 Apr 26 06:21 INSTALL-BINARY
-rw-r--r--.  1 bar bar  2973 Apr 26 06:21 README.md
-rw-r--r--.  1 bar bar 19520 Apr 26 06:21 README-wsrep
-rw-r--r--.  1 bar bar 86263 Apr 26 06:21 THIRDPARTY

It is probably not good that the installation will have separate data directories:

  • /data for MariaDB data
  • /var for ColumnStore data. Note /var sounds too generic.

So the ColumnStore data directory could be columnstore-data instead of just var.

Serg also proposed to consider putting ColumnStore data directory inside MariaDB data directory: data/.ColumnStore.
In MariaDB one cannot create or drop databases starting with the DOT character. So this should be safe against a query like this:

DROP DATABASE `.ColumnStore`

Note, do avoid .ColumnStore to pop up in SHOW DATABASES we can add this line inside the server sources:

   push_ignored_db_dir(".ColumnStore");


Generated at Thu Feb 08 02:53:03 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.