krs1
krs1

Reputation: 1135

Ejabberd mnesia database to mysql

I have an mnesia database dump from an ejabberd server (DCD, DCL, and DAT files), and I'm trying to recover any data I can from this database. It would be ideal to convert it to some kind of SQL database, however I would settle for a simple text dump (from there I could probably rebuild the database).

I'm an erlang/mnesia newbie, but here is what I managed to do from the online docs:

bash$> erl -mnesia dir '"ejabberd_dump_dir"'
...Erlang loads...
1> mnesia:start().
2> mnesia:info().
[snip]
stopped db nodes = [ejabberd_dump_dir]
[snip]
remote           = [ list of the tables from ejabberd_dump_dir ]
[snip]
3> tv:start().

When tv starts it simply shows to table names and says they have 0 records. I'm guessing there's some way of loading it into memory again, but I have yet to figure out how based on the docs.

Another thought I had was to attempt to load it using another installation of ejabberd, however it seems the only way to this using ejabberdctl is to load it from a text file.

How do I load this database and either dump it into sql or dump it to a format that can be imported by sql? What am I missing?

UPDATE: I've been attempting to restore this database to a temporary ejabberd server like so:

bash$> ejabberdctl --auth admin ejabberd passwd restore ejabberd /home/user/ejabberddmpdir/
bash$> ejabberdctl --auth admin ejabberd passwd export2odbc ejabberd /home/user/mnesiatosql/

The first command fails and forced me to conclude I'm quickly losing the war between man and machine. I'm not positive, but I think that using ejabberd as the host will use localhost as the node. Any ideas?

UPDATE: I think it might be a permissions issue as trying to export the default ejabberd db will result in {{badmatch,{error,eacces}} among other errors. This email shows the error I'm getting, but I'm not sure why.

Upvotes: 2

Views: 5512

Answers (3)

djadk
djadk

Reputation: 84

based on the man page of ejabberdctl ejabberdctl export2odbc host directory

ejabberdctl export2odbc localhost /tmp/sql

Upvotes: 0

rcoup
rcoup

Reputation: 5758

Ejabberd can dump its mnesia database to a structured text file using the ejabberdctl utility:

ejabberdctl dump /tmp/ejabberd.db.txt

Upvotes: 2

krs1
krs1

Reputation: 1135

I'm still working out the details as to how the whole mnesia node system works, but I ended up using this to load the database into mnesia:

bash$> erl -name ejabberd@localhost -mnesia dir '"/home/usr/ejabberd@localhost/"'

Thanks to anyone who took a look.

Upvotes: 0

Related Questions