Я создал сценарий для копирования базы данных MongoDB на свой компьютер. Я создаю SSH-туннель (ssh -L ...
) затем я подключаюсь к туннельному порту с помощью mongodump
затем я передаю его вывод в mongorestore
:
mongodump --host=127.0.0.1:##### --db=***** --archive | mongorestore --host={mongo_dest} --drop --archive
Хотелось бы ускорить копирование. --gzip
не имеет смысла использовать в этом случае - потому что одна и та же машина и память используются mongodump
и mongorestore
. Данные поступают в несжатом виде через сокет SSH.
Есть ли способ убежать mongodump
на машине SSHed и передать его вывод процессу на моей машине?
Конечно, я мог сбросить базу данных, заархивировать, скопировать через SSH и восстановить ее. Но я не хочу занимать временное пространство.
Не знаю, почему я не подумал об этом:
ssh *** ". /etc/profile; mongodump --host=127.0.0.1:27017 --db=**** --archive --gzip" | mongorestore --host=127.0.0.1:27017 --drop --archive --gzip
Был 1603.96 real 45.24 user 43.57 sys
.
Сейчас 209.52 real 7.25 user 6.03 sys
.