Search code examples
databasereplicationarangodb

ArangoDB Synchronizing System Collections


I recently reformatted my comp and now I'm setting up my dev environment again, which includes ArangoDB. I'm synchronizing data from our production db into my dev db for testing. This works fine except it doesn't sync the system collections, specifically the _users collection. Is this possible to do, or will I have to recreate the users manually in my dev environment?

I tried using the restrictType and restrictCollections arguments, but I must be doing something wrong because it returns:

{
    "error": true,
    "errorMessage": "invalid value for <restrictCollections> or <restrictType>",
    "code": 400,
    "errorNum": 400
}

I'm submitting this: (my actual data replaced for obvious security reasons)

{
    "endpoint": "tcp://myserver.com:8529",
    "database": "mydb",
    "username": "myusername",
    "password": "mypassword",
    "restrictType":"include",
    "restrictCollections":"_users"
}

It works without the restrictType and restrictCollections keys. I think I have the syntax wrong. Any ideas? thanks!

UPDATE: My syntax was wrong, I corrected it below, but unfortunately it still won't sync system databases. Is there a way to do this, or a better option? Thanks!

{
    "endpoint": "tcp://myserver.com:8529",
    "database": "mydb",
    "username": "myusername",
    "password": "mypassword",
    "restrictType":"include",
    "restrictCollections":["_users"] //takes an array, not a list of strings
}

Solution

  • As already mentioned by @stj there is an implemented inclusion and exclusion of system collections for the replication in our devel branch: https://github.com/triAGENS/ArangoDB/commit/909b1300bd119af808ad3d6696617d824abc7c4f

    This should also be in the 2.4 release which is planned for the end of the year.