Удаленное резервное копирование контейнера Docker SQL Server с помощью Powershell

У меня есть SQL Server в док-контейнере (microsoft/mssql-server-linux). Я хочу сделать резервную копию базы данных удаленно с помощью команды Powershell.

Итак, окончательным результатом будет то, что в контейнер будет добавлен файл .bak. Кто-нибудь знает, возможно ли это и как?


person daniel the man    schedule 08.11.2018    source источник


Ответы (2)


да! microsoft/mssql-server-linux основан на ubuntu 16.04, и можно использовать scp из контейнера на хосте! Используйте docker exec -it {container_id} bash для доступа к контейнерному терминалу! после создания файла .bak с этим руководством:

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-2017

файл находится внутри вашего контейнера! используйте scp для копирования по ssh!

вот подсказка о том, как scp с Linux на Windows: https://stackoverflow.com/a/37712656/4708874

person Mehdi Akbarian Rastaghi    schedule 08.11.2018
comment
Могу ли я использовать команду резервного копирования, не получая доступ к bash внутри контейнера, моя цель - использовать запрос на остаточное время для прослушивающего контейнера sql для резервного копирования. - person daniel the man; 11.11.2018
comment
Я получаю следующий bash: mysqldump: команда не найдена - person daniel the man; 11.11.2018
comment
для первого комментария вы можете, но вам нужно написать веб-сервис, или вы можете использовать проект с открытым исходным кодом здесь: github.com/arut/nginx-mysql-module - person Mehdi Akbarian Rastaghi; 12.11.2018
comment
mysql != mssql. Таким образом, я бы не ожидал, что команда резервного копирования для первого будет работать на втором. - person Ben Thul; 12.11.2018
comment
о, извините! в эти дни я работаю над разными проектами с разными СУБД, и я их перепутал! Я отредактировал свой ответ, спасибо @BenThul - person Mehdi Akbarian Rastaghi; 12.11.2018

Резервное копирование базы данных не должно работать по-другому только потому, что SQL Server работает в контейнере. То есть выдача backup database [yourDB] to disk = '«some file path»'; будет работать. Теперь, является ли этот путь к файлу внутренним по отношению к контейнеру или внешним (т. е. вы используете постоянный том), зависит от того, как вы запустили экземпляр докера.

person Ben Thul    schedule 11.11.2018