Există o acțiune destul de acceptată pentru a trece de la Mnesia la SQL, o comandă specială ejabberdctl export2sql
(în versiunile mai vechi se numea export2odbc
). Unele configurații ar putea avea nevoie de asta, deoarece Mnesia este limitată la 2GiB și bla, bla, bla.
În cazul meu, chiar nu este nevoie să aveți o bază de date externă. Există aproximativ 10-15 utilizatori activi și nu mai mult de 30 din totalul utilizatorilor, iar dimensiunea exportului din baza de date SQL este de aproximativ 200 kB.
Cineva în trecut a făcut acest lucru, a exportat o bază de date în SQL (în special, MySQL). Cum pot anula acea modificare?
Poate sa export_piefxis
sa ma ajuti cumva? Ce face?
Actualizare 1. După câteva explorări, am descoperit că doar două module au câteva date în baza de date SQL: mod_roster
și mod_vcard
. Deci doar aceia trebuie convertiți. Există o modalitate de a le converti datele extern și de a le încărca în ejabberd? Adică, există o ejabberdctl dump_table
, dar din nou nicio comandă inversă.
De asemenea, export_piefxis
nu pare să ajute. Doar exportă conținut zero, în timp ce există date în baza de date și este preluat când mă conectez cu, de ex. client nou instanțiat.
Actualizare 2. Software: containerul Debian 11.2 LXC care rulează pe gazda Proxmox VE 6.4-1. Ejabberd 21.01-2 instalat cu apt
din depozitul standard Debian.
Baza de date a fost migrată de la vechiul Ejabberd de aproximativ versiunea 2.1, care rula pe Gentoo și ultima actualizare în 2015.Nu mai am acea mașină la discreția mea. Migrarea bazei de date Mnesia s-a făcut după cum urmează:
# pe vechea mașină
ejabberdctl backup /tmp/[email protected]
ejabberdctl mnesia_change_nodename ejabberd@localhost ejabberd@jabber2 \
/tmp/[email protected] /tmp/[email protected]
# pe noua mașină (începând cu baza de date goală)
ejabberdctl install_fallback /tmp/[email protected]
ejabberdctl stop
ejabberdctl start
Configurația de pe noua mașină face referire doar la aceeași bază de date MySQL pentru mod_roster
și mod_vcard
.
ejabberd.yml
:
loglevel: info
log_rotate_count: 0
gazde:
- „example.org”
host_config:
„rterm.ru”:
sql_type: mysql
sql_server: „dbserver”
sql_database: „ejabberd”
sql_username: „ejabberd”
sql_password: „parolă”
auth_method: [extern]
certificatfiles:
- „/etc/ejabberd/ejabberd.pem”
culme:
auto: fals
define_macro:
„TLS_CIPHERS”: „HIGH:!aNULL:!eNULL:!3DES:@STRENGTH”
„TLS_OPTIONS”:
- „no_sslv3”
- „no_tlsv1”
- „no_tlsv1_1”
- „preferință_server_cifrare”
- „fără_compresie”
c2s_ciphers: „TLS_CIPHERS”
s2s_ciphers: „TLS_CIPHERS”
c2s_protocol_options: „TLS_OPTIONS”
s2s_protocol_options: „TLS_OPTIONS”
asculta:
-
port: 5222
ip: "::"
modul: ejabberd_c2s
Dimensiune_max_stanza: 262144
modelator: c2s_shaper
acces: c2s
starttls_required: adevărat
protocol_options: „TLS_OPTIONS”
-
portul: 5223
ip: "::"
modul: ejabberd_c2s
Dimensiune_max_stanza: 262144
modelator: c2s_shaper
acces: c2s
tls: adevărat
protocol_options: „TLS_OPTIONS”
-
port: 5269
ip: "::"
modul: ejabberd_s2s_in
Dimensiune_max_stanza: 524288
-
port: 5443
ip: "::"
modul: ejabberd_http
tls: adevărat
protocol_options: „TLS_OPTIONS”
request_handlers:
/admin: ejabberd_web_admin
/api: mod_http_api
/bosh: mod_bosh
/upload: mod_http_upload
/ws: ejabberd_http_ws
-
port: 5280
ip: "::"
modul: ejabberd_http
tls: fals
request_handlers:
# Acesta rulează în spatele proxy-ului HTTP invers cu Let's Encrypt, care este un container vecin pe aceeași gazdă, deci este sigur
/admin: ejabberd_web_admin
/bosh: mod_bosh
/upload: mod_http_upload
-
port: 1883
ip: "::"
modul: mod_mqtt
restanță: 1000
auth_method: [extern]
extauth_program: „/etc/ejabberd/auth_mysql.py”
extauth_pool_size: 5
disable_sasl_mechanisms:
- „X-OAUTH2”
s2s_use_starttls: obligatoriu
acl:
admin:
utilizator:
- „[email protected]”
local:
user_regexp: ""
loopback:
ip:
- 127.0.0.0/8
- ::1/128
access_rules:
local:
permite: local
c2s:
nega: blocat
permite: toate
anunta:
permite: admin
configura:
permite: admin
muc_create:
permite: local
pubsub_createnode:
permite: local
rețea_de_încredere:
permite: loopback
api_permissions:
"comenzi console":
din:
- ejabberd_ctl
cine: toti
ce: "*"
„acces administrator”:
OMS:
acces:
permite:
- acl: loopback
- acl: admin
auth:
domeniul de aplicare: „ejabberd:admin”
acces:
permite:
- acl: loopback
- acl: admin
ce:
- "*"
- "!Stop"
- "!start"
"comenzi publice":
OMS:
ip: 127.0.0.1/8
ce:
- stare
- număr_utilizatori_conectați
modelator:
normal:
rata: 3000
dimensiunea exploziei: 20000
rapid: 200000
shaper_rules:
max_user_sessions: 10
max_user_offline_messages:
5000: admin
100: toate
c2s_shaper:
niciunul: admin
normal: toate
s2s_shaper: rapid
module:
mod_adhoc: {}
mod_admin_extra: {}
mod_announce:
acces: anunță
mod_avatar: {}
mod_blocking: {}
mod_bosh: {}
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
mod_configure: {}
mod_disco: {}
mod_fail2ban: {}
mod_http_api: {}
mod_http_upload:
put_url: https://@HOST@:5443/upload
custom_headers:
„Access-Control-Allow-Origin”: „https://@HOST@”
„Acces-Control-Allow-Methods”: „GET, HEAD,PUT,OPTIONS”
„Access-Control-Allow-Headers”: „Content-Type”
mod_last: {}
mod_mqtt: {}
mod_muc:
acces:
- permite
access_admin:
- permit: admin
access_create: muc_create
access_persistent: muc_create
access_mam:
- permite
default_room_options:
mama: adevarat
mod_muc_admin: {}
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
mod_pres_counter:
număr: 5
interval: 60
mod_privacy: {}
mod_private: {}
mod_proxy65:
acces: local
max_conexiuni: 5
mod_pubsub:
access_createnode: pubsub_createnode
pluginuri:
- apartament
- pep
force_node_config:
„eu.siacs.conversations.axolotl.*”:
access_model: deschis
stocare:marcaje:
access_model: lista albă
mod_push: {}
mod_push_keepalive: {}
mod_roster:
db_type: sql # De asta vreau să scap
versiunea: adevărat
mod_s2s_dialback: {}
mod_shared_roster: {}
mod_sic: {}
mod_stream_mgmt:
resend_on_timeout: if_offline
mod_stun_disco: {}
mod_vcard:
db_type: sql # Și asta
căutare: fals
mod_vcard_xupdate: {}
mod_version: {}