Yandex Cloud Managed Service: создание и перенос баз (реальные кейсы)

30.10.21

Интеграция - Облачные сервисы, хостинг

О том, почему нельзя просто переехать в Yandex Cloud Managed Service for SQL и как работать с бэкапами.

Содержание статей:

Напоминаю:

У нас теперь нет роли dbcreator. Это важно!

У нас теперь нет возможности копировать базы через бэкапы!

 

Кейс 1: Перенос баз 1с через dt

Нет смысла долго объяснять про перенос баз через dt, есть только одно, но...

Нет роли dbcreator, а это значит, у Вас не сработает галка «В случае отсутствия базы создать».

1 Читаем про создание базы тут -> https://cloud.yandex.ru/docs/managed-sqlserver/operations/databases

2 После создания пустой базы и создания пользователя с правами DB_OWNER на вновь созданную базу, подключаем ее через Администрирование серверов.

3 Заходим в конфигуратор и загружаем базу из dt.

 

Кейс 2: Необходимо было установить WMS на Managed Service for SQL Server в Yandex.Cloud

В апреле 2021 мы решили установить WMS сразу в Managed Service. Я наивно подумал, что там будет 1 база и 1 пользователь, поэтому я создал пустую базу и создал пользователя с ролью db_owner на эту базу.

На следующий день меня попросили пользователю дать роль dbcreator, так как во время установки WMS системы создаются базы и пользователи скриптами. Я, естественно, был удивлен, так как ранее было доходчиво объяснено о том, что нет возможности дать такую роль. Я еще раз пересказал всю информацию из статьи «Как мы на Managed Service for SQL Server в Yandex.Cloud переезжали» и предложил способ решения.

Но мне было сказано:

— Это хорошо, что у нас есть план Б, но все-таки создай обращение. Нужно официальное подтверждение о том, что такую роль дать нельзя.

Обращение:

 

 

Вырезка из https://cloud.yandex.ru/docs/managed-sqlserver/operations/databases

 

 

Идем по предложенному мной плану Б:

1 Узнаю версию MSSQL в YC через SQL Management Studio

SELECT @@version.

2 Создаю стенд и устанавливаем на него MSSQL нужной версии (Версия полностью идентична с Managed Service)

3 Разворачиваем WMS систему на стенде

4 Создал в Managed Service базы пустышки с такими же именами и пользователей, которые были созданы при установке WMS.

5 Дал пользователям права db_owner на базы WMS системы

6 *Выгрузил бэкапы баз со стенда и передал их специалистам в YC

7 *Они подняли бэкапы на Managed Service в заранее заготовленные базы пустышки

8 Под созданными пользователями настроили систему WMS

Согласитесь, такой вариант не сильно удобен. Очень много телодвижений и плюсом задействованы специалисты Yandex.

*Пункты, выделенные синим цветом, можно решить своими силами, но этот способ впервые был проделан мной в июне, до этого был только вариант, описанный выше.

 

Кейс 3: Необходимо было скриптами создать базу в Yandex.Cloud Managed Service for SQL Server

События перед 3 кейсом

В мае нам понадобились бэкапы, и мы запросили их у специалистов из Yandex. На этот момент у нас уже было несколько десятков баз. Специалисты опять спросили, не пробовали ли мы sqlpackage. Я сказал, что пробовали, не вышло, и дал ссылку на статью со всеми телодвижениями.

Нам выкачали бэкапы и спустя какое-то время предложили гипотезу с использованием sqlpackage.

Гипотеза была отложена, но в начале июня про нее пришлось вспомнить.

 

В отличие от предыдущего кейса сроки горели, да и стенд из предыдущего кейса уже был снесен.

1 Я установил SQL Server 2019 Developerэто была моя ошибка, хотя без нее кейс 3 не состоялся бы.

SQL Server 2019 Developer — это бесплатный выпуск с полным набором функций, лицензируемый для использования в качестве базы данных для разработки и тестирования и не предназначенный для применения в рабочей среде.

2 Скриптами создал базу

3 В Managed Service создал базу пустышку и пользователя. Дал права пользователю на вновь созданную базу.

4 Снял бэкап с базы, поднятой на SQL Server 2019 Developer, и попросил поднять его в базу, созданную на Managed Service у специалистов из YC

5 Для подстраховки параллельно вечером начал пробовать перенос через sqlpackage

 

Вечером поступает первый звоночек:

Специалисты Y.C:

 

 

Вот тут я и вспоминаю, что Managed Service for SQL Server в Yandex.Cloud работает на MS SQL 2016...

Кстати, только сейчас до меня дошло выражение "трудности = возможности"!)

 

Смысл гипотезы с SqlPackage:

Первоначально sqlpackage был придуман для того, чтобы базы данных распространять в виде инсталляции.

Далее он же стал использоваться для загрузки баз данных в Azure.

И он же пока единственная возможность снимать бекапы и закидывать базы в YC MS SQL самостоятельно

 

Необходимо на стенде повторить окружение Yandex.Cloud Managed Service for SQL Server, а точнее, повторить окружение у конкретной переносимой базы. Все это нужно для того, чтобы «автоматика склеилась».

То есть база приемник (Yandex.Cloud Managed Service for SQL Server) по внешним свойствам должна полностью совпадать с передаваемой базой (Стенд)

Действия на Managed Service for SQL Server:

1 Создаем базу приемник на Managed Service for SQL Server с таким же именем, как и база на стенде

 

 

2 Дожидаемся выполнения операции (если не дожидаться, тогда при следующем действии получим ошибку)

 

 

 

3 Создаем пользователя и даем ему права на базу

 

4 Дожидаемся выполнения операции

 

 

 

Действия на стенде:

1 Параметры сортировки (Collation) должны совпадать с настройками Managed Service for SQL

«Cyrillic_General_CI_AS» -> «Кириллица», «Большая буква = малая буква» и «е <> ё»

В противном случае могут некорректно работать сортировки и соединения.

Самое противное - если создать и перенести с неправильным параметром, тогда переделать будет практически невозможно.

 

 

2 Модель восстановления должна быть Полная (Full) и Включен компонент Broker (Service Broker = True)

 

 

3 В базе источнике убрать всех виндовых пользователей, оставить только SQL-ных, далее создать таких же пользователей с теми же паролями в YC MS SQL.

В общем, SQL-ные пользователи должны совпадать и на стенде, и на YC MS SQL. Одинаковые пароли и одинаковые роли.

 

 

Владельца (Owner) базы сделать SA.

 

4 Качаем sqlpackage (я качал под Windows)

https://docs.microsoft.com/ru-ru/sql/tools/sqlpackage/sqlpackage-download?view=sql-server-ver15

Запускаем установщик DacFramework.msi для Windows.

Программа sqlpackage устанавливается в папку C:\Program Files\Microsoft SQL Server\150\DAC\bin

Открываем новое окно командной строки и запустите файл sqlpackage.exe

Пример показывает версию sqlpackage:

 

 

5 Смотрим информацию по sqlpackage

Команда:

sqlpackage.exe /help

Также можно почитать тут -> https://docs.microsoft.com/ru-ru/sql/tools/sqlpackage/sqlpackage?view=sql-server-ver15

 

Выгрузка базы со стенда при виндовой авторизации:

sqlpackage.exe /a:Extract /ssn:ИМЯ_ХОСТА /sdn:ИМЯ_БАЗЫ /tf:"С:\ПАПКА_ДЛЯ_БАЗЫ\test.dacpac" /p:ExtractAllTableData=True /p:ExtractReferencedServerScopedElements=False

Выгрузка базы со стенда при SQL-ной авторизации:

sqlpackage.exe /a:Extract /ssn:ИМЯ_ХОСТА /sdn:ИМЯ_БАЗЫ /tf:"С:\ПАПКА_ДЛЯ_БАЗЫ\test.dacpac" /p:ExtractAllTableData=True /p:ExtractReferencedServerScopedElements=False /su:ПОЛЬЗОВАТЕЛЬ /sp:"ПАРОЛЬ"

 

Информация:

ИМЯ_ХОСТА – может быть localhost

/a:Extract: Создает файл приложения уровня данных (DACPAC), содержащий только схему или схему и пользовательские данные из подключенной базы данных SQL.

/p:ExtractAllTableData: Указывает, извлекаются ли данные из всех пользовательских таблиц. Если задано значение true, данные извлекаются из всех пользовательских таблиц и нельзя указать отдельные пользовательские таблицы для извлечения данных. Если задано значение false, укажите одну или несколько пользовательских таблиц для извлечения данных.

/p:ExtractReferencedServerScopedElements: Если задано значение true, извлекаются объекты имени для входа, аудита сервера и учетных данных, на которые ссылаются объекты из базы данных-источника.

 

Загрузка базы в YC MS SQL:

sqlpackage.exe /a:Publish /sf:"C:\ ПАПКА_ДЛЯ_БАЗЫ\test.dacpac" /tsn:АДРЕС_МАНАДЖЕТ_СЕРВИСА_В_ОБЛАКЕ /tdn: ИМЯ_БАЗЫ /tec:True /ttsc:True /tu:ПОЛЬЗОВАТЕЛЬ /tp:"ПАРОЛЬ" /p:AllowIncompatiblePlatform=True /p:IgnoreCryptographicProviderFilePath=True /p:IgnoreExtendedProperties=True /p:IgnoreFileAndLogFilePath=True /p:IgnoreFilegroupPlacement=True /p:IgnoreFileSize=True /p:IgnoreFullTextCatalogFilePath=True /p:IgnoreLoginSids=True /p:ScriptRefreshModule=False

 

Что особенно порадовало, дак это то, что я смог с 2019 MS SQL затащить базу на 2016 в YC MS SQL, при загрузке увидев вот такое предупреждение:

 

 

Информация:

/a:Publish: выполняет добавочное обновление схемы базы данных в соответствии со схемой исходного DACPAC-файла. Если база данных не существует на сервере, операция публикации создаст ее. В противном случае обновляется существующая база данных.

 

П.С. Про то, что гипотеза сработала, я сообщил в Яндекс и думаю, по этим рельсам уже кто-то проехал 😉

 

Кейс 4: Перенос базы из Managed Service for SQL Server к себе через SqlPackage

В 3 кейсе мы переносили со стенда в Managed Service for SQL Server. В этом кейсе ситуация обратная.

Выгрузка базы из YC MS SQL:

sqlpackage.exe /a:Extract /ssn:АДРЕС_МАНАДЖЕТ_СЕРВИСА_В_ОБЛАКЕ /sdn:ИМЯ_БАЗЫ /tf:"С:\ПАПКА_ДЛЯ_БАЗЫ\test.dacpac" /p:ExtractAllTableData=True /p:ExtractReferencedServerScopedElements=False  /su:ПОЛЬЗОВАТЕЛЬ /sp:"ПАРОЛЬ"

 

Загрузка базы:

sqlpackage.exe /a:Publish /sf:"С:\ПАПКА_ДЛЯ_БАЗЫ\test.dacpac" /tsn:ИМЯ_ХОСТА /tdn:ИМЯ_БАЗЫ /tec:True /ttsc:True /tu:ПОЛЬЗОВАТЕЛЬ /tp:"ПАРОЛЬ" /p:AllowIncompatiblePlatform=True /p:IgnoreCryptographicProviderFilePath=True /p:IgnoreExtendedProperties=True /p:IgnoreFileAndLogFilePath=True /p:IgnoreFilegroupPlacement=True /p:IgnoreFileSize=True /p:IgnoreFullTextCatalogFilePath=True /p:IgnoreLoginSids=True /p:ScriptRefreshModule=False

 

Парадокс SqlPackage:

Очень часто ко мне приходили люди и говорили: нам нужна копия базы.

Поработав с Managed Service for SQL Server в ответ, я стал говорить - есть 2 варианта:

1 Через dt, но в нерабочее время.

2 Через SqlPackage.

Знаете, сколько раз мне сказали: - Да, давай через SqlPackage!

Ровно ноль (0) раз!!!

Знаете, почему?

Потому, что я не встретил ни одного человека, который слышал про SqlPackage. Правда, я знаю двух, которым пришлось в итоге им пользоваться.

Не буду голословным, давайте загуглимЗаинфостартим SqlPackage и посмотрим, насколько он часто встречается в статьях:

 

 

2-е статьи!!!

Заинфостартите, например: git (753 статьи), http-сервис (320 статей), scrum (179 статей), sonar (40 статей).

Чувствуете «Популярность» и замыленность тем?

А между тем SqlPackage:

  1. С недавних пор стал опенсорсным, самостоятельным продуктом
  2. Есть под Windows, macOS и Linux
  3. Позволяет накатывать базы на разные версии MS SQL
  4. Отлично подойдет для непрерывной разработки
  5. Поддерживает языки: Китайский, Английский, Французский, Немецкий, Итальянский, Японский, Корейский, Португальский, Русский, Испанский
  6. Да и обновление релизов, думаю, тоже можно прикрутить. В общем, надо пробовать!

 

На этом статью заканчиваю. Следующая статья будет про мониторинг, регламенты, немного про бэкапы и станет финальной.

Всем удачи, надеюсь, информация для Вас полезна!

Yandex Cloud Managed Service SQL PostgreSQL SqlPackage Ola Hallengren Мониторинг бэкап Query store Масштабирование DACPAC dt MSSQL

См. также

Внешние источники данных Облачные сервисы, хостинг Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 8.3.14 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бытовые услуги, сервис Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Гостиничный бизнес Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Легкая промышленность, мода и одежда Управленческий учет Платные (руб)

Расширение позволяет автоматизировать управление картами лояльности и взаимодействие с покупателями при помощи интеграции корпоративной системы 1С и специализированного облачного сервиса "CARDPR". Автоматическая онлайн синхронизация сведений о владельце электронной карты лояльности и баланса бонусных баллов на карте между корпоративной системой 1С и мобильным устройством покупателя. Оповещение покупателя об изменении баланса его электронной карты лояльности и проведении каких-либо маркетинговых акций в компании при помощи рассылки push-сообщений на его мобильное устройство.

36000 руб.

20.07.2023    3250    2    2    

11

Управление взаимоотношениями с клиентами (CRM) Телефония, SIP Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Продукт интеграции возможностей Облачной АТС Билайн в систему 1С Предприятие 8. Звонки прямо из программы 1С, уведомления о текущих звонках, регистрация пропущенных и завершенных вызовов, ведение журнала, анализ данных об использовании мобильной связи.

12000 руб.

20.03.2019    23014    54    0    

37

Облачные сервисы, хостинг Linux Тестирование QA Сервера Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Завершающая публикация цикла "В облако на работу:.. Рецепты от Капитана", в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием, отказоустойчивостью и прочая, прочая... В этой статье мы определяемся с быстродействием системы, проводим нагрузочное тестирование и отпускаем ее в свободное плавание (зачеркнуто) выпускаем ее в продуктовый контур, где, конечно же, придется отлавливать ошибки, мониторить состояние и т.п.

31.10.2024    1400    capitan    0    

0

Облачные сервисы, хостинг Linux Сервера Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Одна из завершающих публикаций цикла "В облако на работу:.. Рецепты от Капитана", в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием и прочая, прочая... На закуску разбираемся с отказоустойчивостью. В этой публикации для серверов 1С заодно попробуем подобно сериалу «Разрушители легенд» подтвердить или опровергнуть пару устойчивых мифов о требованиях назначения функциональности.

18.10.2024    1826    capitan    5    

12

Облачные сервисы, хостинг Бесплатно (free)

Перенос 1С в облако — это процесс, который требует тщательного планирования и грамотного исполнения, чтобы избежать простоев и обеспечить бесперебойную работу системы. В этой статье рассмотрим пошаговую инструкцию по переносу 1С в облако, уделяя особое внимание минимизации рисков и обеспечению беспрерывной работы вашего бизнеса.

02.09.2024    471    EFSOL_oblako    0    

-2

Облачные сервисы, хостинг Системный администратор Программист Бесплатно (free)

Примеры решения некоторых насущных проблем при работе с облачными сервисами, покрываемых CLI версией Открытого пакета интеграций - OInt CLI.

05.08.2024    1882    bayselonarrend    7    

27

Облачные сервисы, хостинг Linux Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Одна из завершающих публикаций цикла "В облако на работу:.. Рецепты от Капитана" в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием и прочая прочая... Это основное блюдо, на закуску разберемся с отказоустойчивостью. В этой публикации для PostgreSQL, заодно попробуем сделать это по новому.

17.06.2024    7815    capitan    18    

40

Облачные сервисы, хостинг Linux Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

В прошлых публикациях мы, не торопясь, после настройки персонального рабочего места на РедОС 7.3, посмотрели РедОС 8 и почти полностью собрали рабочую сеть 1С на отечественной ОС подходящую для работы среднего размера компании. С веб-серверами, доменной авторизацией и прочая прочая... Осталось настроить регулярное архивирование, чтобы не потерять нажитое.

27.05.2024    1507    capitan    6    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1325 30.10.21 10:44 Сейчас в теме
Кратко: Работать с БД MSSQL как мы привыкли на собственных инсталляциях не получится, скрипты которые рассчитывают на "полные права" так же не будут работать (что в общем логично).
"Популярность" ключевого слова зависит от частотности операций связанных с ним. По администрированию MSSQL немного статей, тем более в облачном варианте, обычный подход "поставил, поправил максимальный объем памяти, настроил типовой план обслуживания" далее область "1С-Эксперт тех вопросов". Если гуглить SqlPackage, то больше ссылок на оф. доку из которой толком непонятно зачем это все, но при по иске по хабру выдает пару толковых статей.
2. dsdred 3639 30.10.21 11:11 Сейчас в теме
3. pbabincev 133 30.10.21 19:36 Сейчас в теме
Коллега, поясните, пожалуйста.
Вы саму базу разместили в облаке Яндекс, и цепляетесь к ней из 1С?
Правильно я понимаю?
В чем профит данного решения?
Спасибо.
4. pbabincev 133 30.10.21 19:44 Сейчас в теме
(3)
И еще вопрос в догонку.
Сама 1С крутится в яндексах? Или на своём сервере? И до перехода где крутилось всё это?
5. dsdred 3639 30.10.21 23:57 Сейчас в теме
(4)крутилась и крутится на Яндекс.
Сразу все крутилось в облаках на яндекс, просто инсталляция скуля переехала в манаджет сервис.
pbabincev; +1 Ответить
6. dsdred 3639 31.10.21 00:05 Сейчас в теме
(3)Была договорённость по максимуму использовать сервисы яндекс еще на старте проекта. То есть вся инфраструктура по максимуму на яндекс облаке, а нужные компоненты докупаются. Например понадобился bi купили даталенс и клик хаус, понадобилось ещё что-то тоже смотрели что есть на яндекс.

Получаем хорошее железо, быстрый канал внутри сервисов и возможности быстрого масштабирования. Это если вкратце,
а вообще я занимался только частью связанной с 1с ну и скуль Первоначально на мне был.
pbabincev; +1 Ответить
7. stepan_shock 112 24.03.24 11:02 Сейчас в теме
Да теперь понятно зачем нужны инженеры. Я всегда знал, что эти облака такоке себе приключение
8. dsdred 3639 24.03.24 11:07 Сейчас в теме
(7) согласен это приключение и квесты.
Но есть и плюсы.

Скоро будет митап на инфостарте про облачные решения. Я думаю там только про плюсы и расскажут.
Оставьте свое сообщение