On this page we state the minimum requirements for a MariaDB MySQL installation to support PhixFlow, and present an example installation.
The example installation incorporates the minimum requirements for MariaDBMySQL. It is suitable as an initial configuration for many instances of PhixFlow, but note that some of the options may need to change over time as the work carried out by PhixFlow increases.
Windows/Antivirus
MariaDB is MySQL may not be compatible with on-access anti-virus software, so this must be disabled for the MariaDB MySQL data folder(s).
For full details for creating an exception see https://support.microsoft.com/en-us/windows/add-an-exclusion-to-windows-security-811816c0-4dfd-af4a-47e4-c301afe13b26#:~:text=Go%20to%20Start%20%3E%20Settings%20%3E%20Update,%2C%20file%20types%2C%20or%20process. However, for example, if you are on Windows, and using Windows Defender, do the following:
Start → Settings → Update & Security → Windows Security → Virus & threat protection → [Virus & threat protection Manage settings] → Exclusions [Add or remove exclusions] → Add an exclusion
Select Process and enter the exact path and name of the executable for the service e.g.
C:\Program Files\MariaDB 10.4[mysql install dir]\bin\mysqld.exe
Minimum requirements
The following are the minimum requirements for a MariaDB MySQL installation to support PhixFlow.
Installation
Option | Setting |
---|---|
Version | |
The following configuration parameters must be set in | |
| Ensure that the data directory being used has sufficient space for the initial period of PhixFlow operation. This is in the |
|
This must be added to the |
|
This must be in the |
The following configuration parameters can optionally be set in my.cnf | |
|
This must be in the This setting is needed because PhixFlow's migration scripts sometimes require the use of non-deterministic functions |
Example
If you add all parameters above to my.cnf
, including the optional parameters, then the [mysqld]
section of your my.cnf file should look something like this:
Code Block | ||
---|---|---|
| ||
[mysqld] ... datadir = /var/lib/mysql ... wait_timeout = 28800 ... binlog_format = mixed log_bin_trust_function_creators = 1 |
Database
The following settings are required for the PhixFlow database. All of these parameters are reflected in the example MariaDB MySQL database creation command given here: Install the PhixFlow Database Schema.
...
Option | Setting |
---|---|
|
|
|
|
Example installation
The following configuration is suggested as a guide. It incorporates the minimum requirements for MariaDB MySQL databases above.
It is based on an installation of MariaDB MySQL Community Edition on the Ubuntu distribution of Linux. Installation on other distributions of Linux will follow a very similar pattern. For Debian-based distributions, many of the commands will be identical. For RHEL-based distributions, the commands will be similar, replacing apt
with yum
. However, in all cases, please check with in the MariaDB MySQL documentation (https://mariadbdev.mysql.com/kb/doc/refman/8.0/en/getting-installing-and-upgrading-mariadb/linux-installation.html) to check the exact details for installation on your platform. In particular, instructions for downloading and installing tailored to your Linux distribution and target version of MariaDB are provided here: https://downloads.mariadb.org/mariadb/repositories.
For Ubuntu
...
22.04 and
...
MySQL 8.0:
Configure repository
Install
...
Code Block | ||
---|---|---|
| ||
sudo apt-get |
...
update sudo apt |
...
|
...
install |
...
Either add the repo for 10.3:
Code Block | ||
---|---|---|
| ||
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.ukfast.co.uk/sites/mariadb/repo/10.3/ubuntu bionic main' |
...
Or 10.4:
Code Block | ||
---|---|---|
| ||
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.ukfast.co.uk/sites/mariadb/repo/10.4/ubuntu bionic main' |
Install
Code Block | ||
---|---|---|
| ||
sudo apt-get update
sudo apt install mariadb-server |
Edit my.cnf
...
mysql-server |
Set configuration
The command below sets the configuration you need to run PhixFlow. This creates a phixflow specific configuration file (/etc/mysql/conf.d/phixflow.cnf
) which will be included by the main configuration file (/etc/mysql/my.cnf
)
Note |
---|
Determine a suitable |
Code Block | ||
---|---|---|
| ||
sudo nano /etc/mysql/my.cnf |
In the [mysqld]
section, update or add the below variables to match these values:
Code Block | ||
---|---|---|
| ||
[mysqld] ...echo "[mysqld] datadir = /var/lib/mysql ... wait_timeout = 28800 ... binlog_format = mixed log_bin_trust_function_creators = 1 ... expire_logs_days = 2 binlog_expire_logs_seconds = 172800 ... slow_query_log = 1 long_query_time = 5 loginnodb_buffer_slowpool_verbosity = query_plan,explain |
Info |
---|
For versions earlier than 10.6, the setting |
Also in the [mysqld]
section check that the following are either present, and if not add them (next to other innodb settings, although the placement of these does not actually matter, as long as they are in the [mysqld]
section):
Code Block | ||
---|---|---|
| ||
size = <INNODB BUFFER POOL SIZE>M OR <INNODB BUFFER POOL SIZE>G
innodb_default_row_format = dynamic
innodb_file_per_table = 1
innodb_strict_mode = OFF |
Note |
---|
Check the |
...
table_open_cache = 2000
log_error = $mysqlDBErrorLog" | sudo tee /etc/mysql/conf.d/phixflow.cnf |
Restart MySQL:
Code Block | ||
---|---|---|
| ||
sudo systemctl stop mysql.service sudo systemctl start mysql.service |
Hardening
To harden the installation, run:
...
If the first option does not come up, respond to Set root password?
with y instead. This should only happen if you're installing an old version of MariaDBMySQL.
Post-install
Firewall
If you want to access your database from another server:
Open your firewall for inbound TCP connections to your server's port (default port is 3306).
Add Admin Users
You could now use the root user for everything, but
it is better practice from a security viewpoint to create individual users with their own passwords,
by default, the root user doesn't allow remote access
You can add admin users using mysql:
...