Mongorestore 4.2 может работать с AWS DocumentDB 4.0?

Я пытаюсь перенести свой mongodb (4.2) на AWS DocumentDB (4.0). Когда я пытаюсь восстановить данные из резервной копии с помощью mongorestore, я сталкиваюсь со следующей проблемой:

$ time sudo mongorestore \
> --host="x.x.x.x:27017" \
> --ssl --sslCAFile ~/rds-combined-ca-bundle.pem \
> --username=user --password=passwd \
> --db db \
> --dir /mongodump \
> -vvvvv \
> --numInsertionWorkersPerCollection 128 \
>
2020-11-19T07:46:39.507+0000    using --dir flag instead of arguments
2020-11-19T07:46:39.507+0000    using write concern: &{majority false 0}


2020-11-19T07:47:09.508+0000    error connecting to host: could not connect to server: server selection error: server selection timeout
current topology: Type: Single
Servers:
Addr: shw-docdb-test-migration.cluster-caxwucwjitxo.ap-southeast-2.docdb.amazonaws.com:27017, Type: Unknown, State: Connected, Average RTT: 0, Last error: connection(shw-docdb-test-migration.cluster-caxwucwjitxo.ap-southeast-2.docdb.amazonaws.com:27017[-121]) connection is closed 

Есть идеи по поводу этой ошибки?

Спасибо, Шон


person ShawnTT    schedule 19.11.2020    source источник


Ответы (2)


Думая, что я нашел способ решить эту проблему, я использовал докер для запуска этого mongorestore 4.0, после чего данные дампа можно восстановить в docdb:

docker run --detach  \
--volume /home/ec2-user:/ec2-user \
--volume /mongodump:/dumpdir \
mongo:4.0.18-xenial


dockerid=`docker ps|grep -v IMAGE|awk '{print $1}'`

time sudo docker exec -it $dockerid \
mongorestore --host xxxx \
--ssl --sslCAFile /ec2-user/rds-combined-ca-bundle.pem \
--port 27017 \
--verbose \
-u xxx -p xxxx \
--db dbtest \
--dir /dumpdir/dbtest \
-vvvvv \
--numInsertionWorkersPerCollection 128 \

Таким образом, данные из MongoDB v4.2 могут быть восстановлены в DocumentDB v 4.0, единственное, что нужно сделать, это выбрать mongorestore v4.0.

Надеюсь, этот ответ поможет вам.

Спасибо, Шон

person ShawnTT    schedule 20.11.2020

похоже, что клиент, который вы используете для mongorestore, не может подключиться к кластеру DocumentDB. Типичные причины этого: 1 / клиент не находится в том же VPC, что и кластер DocumentDB, 2 / группа безопасности для кластера DocumentDB не разрешает входящие соединения на порте по умолчанию 27017.

Дополнительные возможности устранения неполадок см. В разделе «Проблемы с подключением»: https://docs.aws.amazon.com/documentdb/latest/developerguide/troubleshooting.connecting.html.

person Joseph Idziorek    schedule 19.11.2020
comment
Я могу войти в docdb из того же окна, это означает, что mongorestore 4.2 несовместим с docdb? [ec2-user@ip-10-84-0-29 ~]$ mongo --host xxx --ssl --sslCAFile ~/rds-combined-ca-bundle.pem --username xxx --password xxx 2020-11-19T23:19:23.252+0000 W CONTROL [main] Option: ssl is deprecated. Please use tls instead. 2020-11-19T23:19:23.252+0000 W CONTROL [main] Option: sslCAFile is deprecated. Please use tlsCAFile instead. MongoDB shell version v4.2.1 ..... ..... rs0:PRIMARY> show dbs testdb 0.000GB tbl-dms-ctl 0.000GB - person ShawnTT; 20.11.2020
comment
С mongorestore 4.2 вам нужно использовать tls вместо ssl в строке подключения. Итак, tlsCAFile и tls вместо sslCAFile и ssl. - person meet-bhagdev; 24.11.2020