===== Wechsel von mnesia zu MariaDB =====
==== Voraussetzung ====
* Diese Howtos setzt ejabberd Installation voraus.
==== Einleitung ====
mnesia hat eine Größenbeschränkung von 2GB. Je nach dem, wie viele Benutzer:innen dein XMPP Server haben wird und wie großzügig du mit den Speicherlimits (z.B. für MAM) bist, kann das schnell zu klein sein. Mit MariaDB gibt es diese Einschränkung nicht.
==== Einrichtung ====
MariaDB installieren:
$ apt -y install mariadb-server mariadb-client
MariaDB Installation absichern:
$ mysql_secure_installation
Change the root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Zum Datenbankserver verbinden und Datenbank erstellen:
$ mysql -u root -p
$ mysql> CREATE DATABASE ejabberd;
$ mysql> CREATE USER 'ejabberd'@'localhost' IDENTIFIED BY '';
$ mysql> GRANT ALL PRIVILEGES ON ejabberd . * TO 'ejabberd'@'localhost';
$ mysql> FLUSH PRIVILEGES;
$ mysql> exit;
Als ejabberd weiterarbeiten:
$ su - ejabberd
SQL Schema laden und in Datenbank importieren:
$ wget https://raw.githubusercontent.com/processone/ejabberd/master/sql/mysql.sql
$ mysql -D ejabberd -u ejabberd -p < mysql.sql
Enter password:
ejabberd Konfiguration anpassen:
$ jed opt/ejabberd/conf/ejabberd.yml
Suche nach:
auth_password_format: scram
auth_scram_hash: sha512
Und füge darunter ein:
sql_type: mysql
sql_server: "localhost"
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: ""
auth_method: sql
default_db: sql
default_ram_db: sql
Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.
Für die Migration von mnesia zu MariaDB musst du den ejabberd stoppen und manuell im DEBUG Modus starten:
$ exit
$ systemctl stop ejabberd.service
$ su - ejabberd
$ ./opt/ejd/bin/ejabberdctl debug
...
2022-12-04 10:36:33.999069+01:00 [info] Start accepting UDP connections at [::]:3478 for ejabberd_stun
2022-12-04 10:36:33.999215+01:00 [info] Start accepting TCP connections at [::]:5280 for ejabberd_http
2022-12-04 10:36:33.999280+01:00 [info] Start accepting TLS connections at [::]:5443 for ejabberd_http
2022-12-04 10:36:33.999409+01:00 [info] Start accepting TCP connections at [::]:5269 for ejabberd_s2s_in
2022-12-04 10:36:33.999453+01:00 [info] Start accepting TLS connections at [::]:5223 for ejabberd_c2s
2022-12-04 10:36:33.999505+01:00 [info] Start accepting TCP connections at [::]:5222 for ejabberd_c2s
...
$ (ejabberd@localhost)2> ejd2sql:export(<<"">>, sql).
ok
Die Konsole mit [STRG] + [C] und [STRG] + [C] verlassen und ejabberd wieder starten:
$ exit
$ systemctl start ejabberd.service