Облік, бази даних і віддалена робота
Як перенести базу BAS на сервер у Європі з мінімальним простоєм
Зміст статті
Для адміністратора або керівника, який переносить базу BAS із сервера в офісі чи в українському дата-центрі на виділений сервер у Європі. У підсумку — план, за яким користувачі зупиняють роботу лише на коротке вечірнє вікно, а шлях назад залишається відкритим.
Чесно про назву: зовсім без простою робочу базу перенести неможливо — поки робиться остаточна копія, вхід користувачам доведеться закрити. Ліцензії на BAS, M.E.Doc і СУБД у статті не розглядаємо.
Що знадобиться#
- Новий сервер із запасом потужності процесора, пам’яті й місця на дисках — див. Сервер під BAS на 5, 10, 20 і 50 користувачів. Сервери з наявності ми видаємо до 12 або до 72 годин після оплати (термін указано в каталозі серверів) — врахуйте це в плані.
- VPN між старим майданчиком і новим сервером, наприклад WireGuard: для передавання копій і для входу користувачів по RDP.
- Узгоджене вікно робіт: вечір або вихідний, але не дні подання звітності чи виплати зарплати.
Крок 1 Інвентаризація#
| Що з’ясувати | Навіщо |
|---|---|
| Версії платформи BAS і конфігурації | На новому сервері потрібна та сама версія платформи: оновлення і переїзд не поєднуйте. |
| Файлова чи клієнт-серверна база | Від цього залежить спосіб копіювання. Для клієнт-серверної з’ясуйте ще СУБД, її версію й редакцію. |
| Розмір бази | Від нього залежать час передавання й тривалість простою. Для файлової бази це розмір її каталогу, для MS SQL Server розмір покаже EXEC sp_helpdb. |
| Файли поза базою | Томи приєднаних файлів, каталоги обміну, зовнішні обробки й друковані форми треба копіювати окремо; шляхи до них доведеться виправити. |
| Обміни та інтеграції | M.E.Doc, клієнт-банк, обміни з іншими базами, сайтом, поштою: адреси, каталоги, облікові записи, розклад. |
| Принтери, сканери, торговельне обладнання, ключі підпису | До чого вони під’єднані і як працюватимуть із віддаленим сервером; де зберігається ключ — у файлі чи на токені. |
Крок 2 Підготовка нового сервера#
- Зробіть базові налаштування (перша година на Windows Server) і закрийте RDP для доступу з інтернету: вхід лише через VPN — див. Безпечний RDP. Створіть каталог для передавання копій (у прикладах —
D:\Transfer, спільний ресурсTransfer); SMB (порт 445) теж має бути доступний лише через VPN. - Установіть ту саму версію платформи BAS, а для клієнт-серверної бази — ще й сервер BAS і СУБД тієї версії, яку підтримує ваша платформа. Версія MS SQL Server має бути не нижчою, ніж на старому сервері: копію з новішої версії на старішій відновити неможливо. Каталоги з прикладів (
D:\SQLData,D:\SQLLog) створіть заздалегідь і надайте службі SQL Server права на них і на каталог для передавання. - Створіть облікові записи користувачів із правом входу по RDP; для файлової бази надайте їм ще й права на її каталог.
Крок 3 Пробне перенесення з вимірюванням часу#
Пробне перенесення показує, скільки триватиме остаточне і що не працює на новому місці; записуйте час кожного етапу. Час передавання легко оцінити: 20 ГБ за швидкості вивантаження 50 Мбіт/с передаються близько години. Копію файлової бази робіть, коли в ній ніхто не працює, інакше вона може виявитися пошкодженою.
Файлова база#
Скопіюйте весь каталог бази через VPN командою robocopy (10.66.0.1 — приклад адреси нового сервера у VPN; каталог для журналу має існувати):
robocopy "D:\Bases\Buh" "\\10.66.0.1\Transfer\Buh" /E /Z /R:5 /W:15 /NP /TEE /LOG:C:\Temp\buh-copy.log/E копіює підкаталоги; /Z вмикає режим відновлення після обриву: копіювання файлу продовжується з місця зупинки; /R:5 /W:15 — п’ять повторних спроб із паузою 15 секунд. Код завершення, менший за 8, означає, що помилок не було. Далі перемістіть каталог туди, де база працюватиме, і додайте її до списку інформаційних баз.
Якщо канал повільний, спершу запакуйте каталог в архів (файл бази добре стискається), передайте його тією самою командою robocopy, а перед розпакуванням перевірте (7z t).
Клієнт-серверна база на MS SQL Server#
На старому сервері зробіть повну резервну копію (bas_buh — приклад імені бази, каталог D:\Backup має існувати). Редакція Express не підтримує стиснення копій — у ній приберіть COMPRESSION. Якщо на старому сервері є планові різницеві копії, додайте COPY_ONLY, щоб не порушити їхній ланцюжок.
BACKUP DATABASE [bas_buh]
TO DISK = N'D:\Backup\bas_buh_full.bak'
WITH INIT, CHECKSUM, COMPRESSION, STATS = 10;Передайте файл на новий сервер (robocopy з /Z), подивіться логічні імена файлів (стовпець LogicalName), підставте їх у MOVE замість bas_buh і bas_buh_log та відновіть базу з новими шляхами:
RESTORE FILELISTONLY FROM DISK = N'D:\Transfer\bas_buh_full.bak';
RESTORE DATABASE [bas_buh]
FROM DISK = N'D:\Transfer\bas_buh_full.bak'
WITH MOVE N'bas_buh' TO N'D:\SQLData\bas_buh.mdf',
MOVE N'bas_buh_log' TO N'D:\SQLLog\bas_buh_log.ldf',
RECOVERY, STATS = 10;Потім зареєструйте базу в кластері сервера BAS, указавши вже наявну базу даних; для пробної копії одразу ввімкніть у властивостях бази блокування регламентних завдань.
Клієнт-серверна база на PostgreSQL#
pg_dump різницевих копій не робить, тому і пробне, і остаточне перенесення — це повний дамп (pg_dump -Fc), передавання й відновлення (pg_restore); команди — у статті Резервні копії баз даних.
Крок 4 Перевірка ключовими користувачами#
Пробна копія — повноцінна база: якщо в ній увімкнено обміни й регламентні завдання, вона може вдруге надіслати документи чи листи. Сучасні типові конфігурації самі запитують, копія це чи переміщена база: відповідайте, що копія, — і роботу із зовнішніми ресурсами буде заблоковано. Якщо запитання не з’явилося, вимкніть обміни вручну. Далі кожен ключовий користувач проводить документ, формує звіт і друкує форму.
- Друк і обладнання. Принтери користувача доступні в сеансі RDP, якщо в параметрах підключення на вкладці «Локальні ресурси» позначено «Принтери»; надрукуйте реальні форми на принтері кожного типу. Сканер штрихкодів, що працює як клавіатура, зазвичай не потребує налаштувань; сканери документів, ваги й касове обладнання перевірте заздалегідь разом із постачальником.
- Ключі електронного підпису. Токен, вставлений у старий сервер, до сервера в європейському дата-центрі не під’єднаєш. Перевірте, чи працює в сеансі RDP токен, під’єднаний до комп’ютера користувача: це залежить від моделі токена й програмного забезпечення. Якщо ні — запитайте про варіанти в надавача, який видав ключ.
- M.E.Doc. Переносьте за інструкцією розробника: зберегти треба не лише базу, а й налаштування програми, доступи користувачів і ключі.
Повторюйте пробне перенесення, доки все не запрацює, і лише тоді призначайте дату переїзду.
Крок 5 Остаточне перенесення#
Увага. Нижче для MS SQL Server використано параметр
REPLACE: він перезаписує наявну базу з таким самим іменем, тож виконуйте цю команду лише на новому сервері. Різницева копія спирається на останню повну: якщо між ними планове завдання зробить на старому сервері ще одну повну копію, різницева на новому сервері не відновиться. На ці дні додайте до планових повних копійCOPY_ONLYабо візьміть за основу саму планову копію.
Для MS SQL Server більшу частину роботи виконайте напередодні: зробіть повну копію тією самою командою BACKUP (без COPY_ONLY), передайте її на новий сервер, видаліть пробну базу з кластера сервера BAS і відновіть копію поверх неї тією самою командою RESTORE, замінивши RECOVERY на REPLACE, NORECOVERY. База залишиться в стані відновлення (Restoring), тож у вікні перенесення залишиться застосувати лише невелику різницеву копію.
- Попередьте користувачів і в призначений час закрийте вхід: у типових конфігураціях це «Блокування роботи користувачів» у розділі адміністрування, для клієнт-серверної бази — ще й у властивостях бази в консолі кластера. Запишіть код для розблокування й переконайтеся, що активних сеансів немає.
- Зупиніть на старому сервері обміни й регламентні завдання, щоб документи не надсилалися з двох місць.
- Зробіть остаточну копію. Для файлової бази — тією самою командою
robocopy(або архівом) у порожній каталог. Для PostgreSQL — дамп. Для MS SQL Server — різницеву копію:BACKUP DATABASE [bas_buh] TO DISK = N'D:\Backup\bas_buh_diff.bak' WITH DIFFERENTIAL, INIT, CHECKSUM, COMPRESSION, STATS = 10; - Передайте копію й відновіть базу (файлову — покладіть на місце пробної). Для MS SQL Server:
За повної моделі відновлення можна застосувати ще й копії журналу транзакцій: різницеву копію й кожну копію журналу (
RESTORE DATABASE [bas_buh] FROM DISK = N'D:\Transfer\bas_buh_diff.bak' WITH RECOVERY, STATS = 10;RESTORE LOG) відновлюйте зNORECOVERY, а останню — зRECOVERY(приклади Microsoft). Потім знову зареєструйте базу в кластері сервера BAS. - Перевірте базу (див. наступний розділ), скопіюйте файли поза базою, що змінилися, й увімкніть обміни на новому сервері. На запитання конфігурації відповідайте, що базу переміщено.
- Зніміть блокування входу в новій базі (у файловій базі воно переїжджає разом із каталогом: запустіть її з параметром
/UCі кодом для розблокування) і роздайте користувачам новий ярлик RDP. - Одразу зробіть першу резервну копію на новому сервері й переконайтеся, що планове копіювання спрацювало.
Як перевірити результат#
- Файлова база: до першого запуску на новому місці порівняйте хеш головного файлу на обох серверах (
Get-FileHashу PowerShell). MS SQL Server: запустіть перевірку цілісності — вона не має повернути помилок:DBCC CHECKDB ([bas_buh]) WITH NO_INFOMSGS; - Вбудована перевірка BAS: у конфігураторі в меню «Адміністрування» запустіть тестування та виправлення інформаційної бази, спершу в режимі лише тестування; для файлової бази є ще утиліта
chdbflу каталозіbinплатформи. Виправлення запускайте, лише маючи копію. - Контрольні звіти: оборотно-сальдова відомість за поточний період, залишки на складах і в касі, кількість документів за останній день — цифри на обох серверах мають збігатися, а останній документ, уведений перед блокуванням, має бути в новій базі.
- Користувач входить через новий ярлик, друкує й підписує тестовий документ; обміни з M.E.Doc і банком працюють.
Старий сервер і план відкату#
Старий сервер не вимикайте й не очищайте ще кілька днів. База на ньому — лише для читання: вхід заблоковано, обміни зупинено, адміністратор входить із кодом для розблокування, тільки щоб звірити звіти.
План відкату запишіть до початку робіт:
- Умова. До якої години і за яких ознак ви повертаєтеся: не збігаються контрольні звіти, не працює друк чи підпис.
- Дія. Зняти блокування на старому сервері, увімкнути там обміни, повернути користувачам старий ярлик, а нову базу закрити для входу.
- Межа. Відкат безболісний, доки на новому сервері не почали вводити документи: потім їх доведеться вводити в стару базу повторно. Тож рішення ухвалюйте до початку робочого дня.
Типові помилки#
- Повну копію MS SQL Server відновили з
RECOVERY: різницева вже не застосується, повну доведеться відновлювати знову. - Сервер BAS не підключається до відновленої бази MS SQL Server: на новому екземплярі треба заново створити його обліковий запис (login) і знову надати йому права на базу.
Що далі#
- Резервні копії з першого дня: Резервні копії баз даних. На основних лінійках до сервера входить місце для резервних копій на окремому сховищі; копіювання ви налаштовуєте самі, параметри підключення надішле підтримка.
- Переїжджає не лише облікова база? Скористайтеся чек-листом переїзду.
- Сервер під облікову базу — у каталозі: радимо лінійки Стандарт і Бізнес; про вибір країни — Локації.