Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:wechsel_von_mnesia_zu_mariadb

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: <supergeheim> 
Re-enter new password: <supergeheim> 
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 '<geheim>';
$ 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: <geheim>

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: "<geheim>"
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(<<"<beispiel.de>">>, sql).
ok

Die Konsole mit [STRG] + [C] und [STRG] + [C] verlassen und ejabberd wieder starten:

$ exit
$ systemctl start ejabberd.service
de/wechsel_von_mnesia_zu_mariadb.txt · Zuletzt geändert: 04.12.2022, 13:08 von Christoph Stoltz