Существует довольно поддерживаемое действие для перехода от Mnesia к SQL, специальная команда ejabberdctl экспорт2sql
(в старых версиях он назывался экспорт2odbc
). Некоторым настройкам это может понадобиться, потому что Mnesia ограничена 2 ГБ и бла-бла-бла.
В моем случае действительно нет необходимости иметь внешнюю базу данных. Активных пользователей около 10-15, а всего пользователей не более 30, а размер экспорта из базы данных SQL составляет около 200 КБ.
Кто-то в прошлом делал это, экспортируя базу данных в SQL (в частности, MySQL). Как я могу отменить это изменение?
Может export_piefxis
помочь мне как-то? Что оно делает?
Обновление 1. После некоторых исследований я обнаружил, что только два модуля имеют некоторые данные в базе данных SQL: mod_roster
и mod_vcard
. Так что только они должны быть преобразованы. Есть ли способ преобразовать их данные извне и загрузить в ejabberd? Я имею в виду, есть ejabberdctl dump_table
, но снова нет обратной команды.
Также, export_piefxis
не похоже, чтобы помочь. Он просто экспортирует нулевой контент, в то время как в базе данных есть данные, и они извлекаются, когда я подключаюсь, например. только что созданный клиент.
Обновление 2. Программное обеспечение: контейнер Debian 11.2 LXC, работающий на хосте Proxmox VE 6.4-1. Ejabberd 21.01-2 установлен с подходящий
из стандартного репозитория Debian.
База данных была перенесена со старого Ejabberd версии 2.1, которая работала на Gentoo и последний раз обновлялась в 2015 году.У меня больше нет этой машины на мое усмотрение. Миграция базы данных Mnesia была выполнена следующим образом:
# на старой машине
резервная копия ejabberdctl /tmp/[email protected]
ejabberdctl mnesia_change_nodename ejabberd@localhost ejabberd@jabber2 \
/tmp/[email protected] /tmp/[email protected]
# на новой машине (начиная с пустой базы данных)
ejabberdctl install_fallback /tmp/[email protected]
ejabberdctl стоп
запуск ejabberdctl
Конфигурация на новой машине просто ссылается на ту же базу данных MySQL для mod_roster
и mod_vcard
.
ejabberd.yml
:
уровень логирования: информация
log_rotate_count: 0
хосты:
- "example.org"
host_config:
«rterm.ru»:
sql_type: mysql
sql_server: "сервер базы данных"
sql_database: "эджабберд"
sql_username: "еджабберд"
sql_password: "пароль"
auth_method: [внешний]
файлы сертификатов:
- "/etc/ejabberd/ejabberd.pem"
акме:
авто: ложь
определить_макрос:
'TLS_CIPHERS': "HIGH:!aNULL:!eNULL:!3DES:@STRENGTH"
'TLS_OPTIONS':
- "no_sslv3"
- "нет_тлсв1"
- "но_тлсв1_1"
- "cipher_server_preference"
- "без_сжатия"
c2s_ciphers: 'TLS_CIPHERS'
s2s_ciphers: 'TLS_CIPHERS'
c2s_protocol_options: 'TLS_OPTIONS'
s2s_protocol_options: 'TLS_OPTIONS'
Слушать:
-
порт: 5222
ИП: "::"
модуль: ejabberd_c2s
max_stanza_size: 262144
формирователь: c2s_shaper
доступ: c2s
starttls_required: правда
протокол_опции: 'TLS_OPTIONS'
-
порт: 5223
ИП: "::"
модуль: ejabberd_c2s
max_stanza_size: 262144
формирователь: c2s_shaper
доступ: c2s
тлс: правда
протокол_опции: 'TLS_OPTIONS'
-
порт: 5269
ИП: "::"
модуль: ejabberd_s2s_in
max_stanza_size: 524288
-
порт: 5443
ИП: "::"
модуль: ejabberd_http
тлс: правда
протокол_опции: 'TLS_OPTIONS'
запрос_обработчики:
/admin: ejabberd_web_admin
/апи: mod_http_api
/бош: mod_bosh
/загрузить: mod_http_upload
/ws: ejabberd_http_ws
-
порт: 5280
ИП: "::"
модуль: ejabberd_http
тлс: ложь
запрос_обработчики:
# Это работает за обратным HTTP-прокси с Let's Encrypt, который является соседним контейнером на том же хосте, так что это безопасно
/admin: ejabberd_web_admin
/бош: mod_bosh
/загрузить: mod_http_upload
-
порт: 1883
ИП: "::"
модуль: mod_mqtt
отставание: 1000
auth_method: [внешний]
extauth_program: "/etc/ejabberd/auth_mysql.py"
extauth_pool_size: 5
отключить_sasl_механизмы:
- "Х-ОАУТ2"
s2s_use_starttls: требуется
акк:
администратор:
пользователь:
- "[email protected]"
местный:
user_regexp: ""
обратная связь:
IP:
- 127.0.0.0/8
- ::1/128
правила_доступа:
местный:
разрешить: местный
с2с:
отрицать: заблокирован
позволять все
объявить:
разрешить: администратор
настроить:
разрешить: администратор
muc_create:
разрешить: местный
pubsub_createnode:
разрешить: местный
доверенная_сеть:
разрешить: петля
API_разрешения:
"консольные команды":
от:
- ejabberd_ctl
кто: все
какие: "*"
"доступ администратора":
кто:
доступ:
позволять:
- acl: петля
- акк: админ
авторизация:
область действия: "ejabberd:admin"
доступ:
позволять:
- acl: петля
- акк: админ
какие:
- "*"
- "!останавливаться"
- "!Начало"
"общедоступные команды":
кто:
IP-адрес: 127.0.0.1/8
какие:
- положение дел
- число подключенных_пользователей
формирователь:
нормальный:
ставка: 3000
Burst_size: 20000
быстро: 200000
shaper_rules:
max_user_sessions: 10
max_user_offline_messages:
5000: администратор
100: все
c2s_shaper:
нет: администратор
нормальный: все
s2s_shaper: быстро
модули:
mod_adhoc: {}
mod_admin_extra: {}
mod_announce:
доступ: объявить
mod_avatar: {}
мод_блокировка: {}
mod_bosh: {}
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
mod_configure: {}
мод_диско: {}
mod_fail2ban: {}
mod_http_api: {}
mod_http_upload:
put_url: https://@HOST@:5443/upload
custom_headers:
"Access-Control-Allow-Origin": "https://@HOST@"
"Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
"Access-Control-Allow-Headers": "Content-Type"
мод_последний: {}
mod_mqtt: {}
mod_muc:
доступ:
- позволять
access_admin:
- разрешить: админ
access_create: muc_create
access_persistent: muc_create
доступ_мам:
- позволять
default_room_options:
мама: правда
mod_muc_admin: {}
мод_оффлайн:
access_max_user_messages: max_user_offline_messages
мод_пинг: {}
mod_pres_counter:
количество: 5
интервал: 60
mod_privacy: {}
mod_private: {}
mod_proxy65:
доступ: локальный
макс_подключения: 5
mod_pubsub:
access_createnode: pubsub_createnode
плагины:
- плоский
- бодрость духа
force_node_config:
"eu.siacs.conversations.axolotl.*":
модель доступа: открытая
хранилище: закладки:
access_model: белый список
mod_push: {}
mod_push_keepalive: {}
mod_roster:
db_type: sql # Это то, от чего я хочу избавиться
версия: правда
mod_s2s_dialback: {}
mod_shared_roster: {}
mod_sic: {}
mod_stream_mgmt:
resend_on_timeout: if_offline
mod_stun_disco: {}
mod_vcard:
db_type: sql # И это
поиск: ложь
mod_vcard_xupdate: {}
версия_мода: {}