มีการกระทำที่รองรับค่อนข้างมากในการย้ายจาก Mnesia ไปยัง SQL ซึ่งเป็นคำสั่งพิเศษ ejabberdctl ส่งออก2sql
(ในเวอร์ชั่นเก่าจะเรียกว่า ส่งออก2odbc
). การตั้งค่าบางอย่างอาจจำเป็นต้องใช้เนื่องจาก Mnesia จำกัดไว้ที่ 2GiB และ blah blah blah
ในกรณีของฉันไม่จำเป็นต้องมีฐานข้อมูลภายนอก มีผู้ใช้ที่ใช้งานอยู่ประมาณ 10-15 รายและไม่เกิน 30 รายจากผู้ใช้ทั้งหมด และขนาดของการส่งออกจากฐานข้อมูล SQL อยู่ที่ประมาณ 200 kB
ในอดีตมีคนทำสิ่งนั้นส่งออกฐานข้อมูลไปยัง 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 ติดตั้งด้วย ฉลาด
จาก repo Debian มาตรฐาน
ฐานข้อมูลถูกย้ายจาก Ejabberd เก่าประมาณเวอร์ชัน 2.1 ซึ่งทำงานบน Gentoo และอัปเดตล่าสุดในปี 2558ฉันไม่มีเครื่องนั้นตามดุลยพินิจของฉันอีกต่อไป การโยกย้ายฐานข้อมูล 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: "ejabberd"
sql_username: "ejabberd"
sql_password: "รหัสผ่าน"
auth_method: [ภายนอก]
ไฟล์ใบรับรอง:
- "/etc/ejabberd/ejabberd.pem"
จุดสุดยอด:
อัตโนมัติ: เท็จ
กำหนด_มาโคร:
'TLS_CIPHERS': "สูง:!aNULL:!eNULL:!3DES:@STRENGTH"
'TLS_OPTIONS':
- "no_sslv3"
- "no_tlsv1"
- "no_tlsv1_1"
- "cipher_server_preference"
- "no_compression"
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: จริง
protocol_options: 'TLS_OPTIONS'
-
พอร์ต: 5223
ไอพี: "::"
โมดูล: ejabberd_c2s
max_stanza_size: 262144
เชปเปอร์: c2s_shaper
การเข้าถึง: c2s
tls: จริง
protocol_options: 'TLS_OPTIONS'
-
พอร์ต: 5269
ไอพี: "::"
โมดูล: ejabberd_s2s_in
max_stanza_size: 524288
-
พอร์ต: 5443
ไอพี: "::"
โมดูล: ejabberd_http
tls: จริง
protocol_options: 'TLS_OPTIONS'
request_handlers:
/admin: ejabberd_web_admin
/api: mod_http_api
/bosh: mod_bosh
/อัพโหลด: mod_http_upload
/ws: ejabberd_http_ws
-
พอร์ต: 5280
ไอพี: "::"
โมดูล: ejabberd_http
tls: เท็จ
request_handlers:
# สิ่งนี้ทำงานหลังพร็อกซี HTTP ย้อนกลับด้วย Let's Encrypt ซึ่งเป็นคอนเทนเนอร์เพื่อนบ้านในโฮสต์เดียวกัน ดังนั้นจึงปลอดภัย
/admin: ejabberd_web_admin
/bosh: mod_bosh
/อัพโหลด: mod_http_upload
-
พอร์ต: 1883
ไอพี: "::"
โมดูล: mod_mqtt
ค้าง: 1,000
auth_method: [ภายนอก]
extauth_program: "/etc/ejabberd/auth_mysql.py"
extauth_pool_size: 5
ปิดการใช้งาน_sasl_กลไก:
- "X-OAUTH2"
s2s_use_starttls: จำเป็น
บัญชี:
ผู้ดูแลระบบ:
ผู้ใช้:
- "[email protected]"
ท้องถิ่น:
user_regexp: ""
ย้อนกลับ:
ไอพี:
- 127.0.0.0/8
- ::1/128
access_rules:
ท้องถิ่น:
อนุญาต: ท้องถิ่น
ซีทูเอส:
ปฏิเสธ: ถูกบล็อก
อนุญาต: ทั้งหมด
ประกาศ:
อนุญาต: ผู้ดูแลระบบ
กำหนดค่า:
อนุญาต: ผู้ดูแลระบบ
muc_create:
อนุญาต: ท้องถิ่น
pubsub_createโหนด:
อนุญาต: ท้องถิ่น
trust_network:
อนุญาต: ย้อนกลับ
api_permissions:
"คำสั่งคอนโซล":
จาก:
- ejabberd_ctl
ใคร: ทั้งหมด
อะไร: "*"
"การเข้าถึงของผู้ดูแลระบบ":
ใคร:
เข้าไป:
อนุญาต:
- acl: ย้อนกลับ
- บัญชี: ผู้ดูแลระบบ
คำสาบาน:
ขอบเขต: "ejabberd:admin"
เข้าไป:
อนุญาต:
- acl: ย้อนกลับ
- บัญชี: ผู้ดูแลระบบ
อะไร:
- "*"
- "!หยุด"
- "!เริ่ม"
"คำสั่งสาธารณะ":
ใคร:
ไอพี: 127.0.0.1/8
อะไร:
- สถานะ
-connected_users_number
รูปร่าง:
ปกติ:
อัตรา: 3000
ระเบิดขนาด: 20,000
รวดเร็ว: 200,000
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_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:
"การควบคุมการเข้าถึงอนุญาตแหล่งกำเนิด": "https://@HOST@"
"การเข้าถึง-การควบคุม-อนุญาต-วิธีการ": "GET,HEAD,PUT,OPTIONS"
"Access-Control-Allow-Headers": "ประเภทเนื้อหา"
mod_last: {}
mod_mqtt: {}
mod_muc:
เข้าไป:
- อนุญาต
access_admin:
- อนุญาต: ผู้ดูแลระบบ
access_create: muc_create
access_persistent: muc_create
access_mam:
- อนุญาต
default_room_options:
ม๊า: จริงค่ะ
mod_muc_admin: {}
mod_ออฟไลน์:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
mod_pres_counter:
นับ: 5
ช่วงเวลา: 60
mod_privacy: {}
mod_private: {}
mod_proxy65:
การเข้าถึง: ท้องถิ่น
max_connections: 5
mod_pubsub:
access_createnode: pubsub_createnode
ปลั๊กอิน:
- แบน
- ห้าวหาญ
force_node_config:
"eu.siacs.conversations.axolotl.*":
access_model: เปิด
ที่เก็บข้อมูล: ที่คั่นหน้า:
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_ออฟไลน์
mod_stun_disco: {}
mod_vcard:
db_type: sql # และนี่
ค้นหา: เท็จ
mod_vcard_xupdate: {}
mod_version: {}