Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10

Как максимально быстро и надёжно скопировать данные с одного сервера на другой

28.10.2024, 17:01. Показов 942. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Есть главный сервер А. На нём есть 10 небольших таблиц-справочников до 5 тыс. строк каждая.
Есть ещё 10 дочерних серверов. В каждом из них есть таблицы с такими же названиями и структурой.
Нужно с заданной периодичностью (джоб) обновлять данные в таблицах дочерних серверов данными с главного сервера.
Сравнивать не нужно: достаточно очистить каждую таблицу на дочернем сервере и наполнить её данными из таблицы главного сервера.

Как это сделать наиболее быстро?

Родственная моя тема: Обмен данными и выборочная синхронизация между серверами
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2024, 17:01
Ответы с готовыми решениями:

Как скопировать данные с одного хоста на другой.
Есть два независимых сайта на разных хостах (php, mySql). Как взять данные из базы одного сайта (хоста) и скопировать на другой?

Как скопировать данные из одного dataGridView в другой?
У меня есть 2 DataGridView объекта. Один заполнен, другой - нет. Мне нужно как-то скопировать данные из одного DataGridView в другой, так...

Как скопировать данные с одного листа и вставить в другой
Необходимо средствами VBA Excel скопировать данные ФИО(записано в одной ячейке), нужно скопировать эти данные на Лист2 но уже в три ячейки....

15
 Аватар для Andrey-MSK
3339 / 2226 / 387
Регистрация: 14.08.2018
Сообщений: 7,515
Записей в блоге: 4
28.10.2024, 17:41
Цитата Сообщение от Jack Famous Посмотреть сообщение
достаточно очистить каждую таблицу на дочернем сервере и наполнить её данными из таблицы главного сервера
Эмммм...
T-SQL
1
2
3
4
5
TRUNCATE TABLE MyTable
 
INSERT INTO MyTable
SELECT 
FROM таблица_на_удалённом_сервере.
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
28.10.2024, 17:57
только стоит помнить что триггера на удаление не работают при truncate, да и из журнала транзакций если что таблицу не восстановишь. зато быстро
2
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
28.10.2024, 18:03  [ТС]
Andrey-MSK, я пробовал наоборот: из мастера наполнять дочерние сервера. И делать это с помощью динамического SQL, потому что 10 серверов по 10 это 100 блоков кода.
В динамике ругался "слишком много префиксов, максимум можно 2".
Сервер.БД.схема.таблица это 3 префикса. Как уменьшить — не знаю.

Аватар, спасибо
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
28.10.2024, 18:31
Лучший ответ Сообщение было отмечено Jack Famous как решение

Решение

процедуру на принимающем сервере, там и динамика не потребуется. а вызов с передающего
1
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
28.10.2024, 18:34  [ТС]
Аватар, так и Андрей советовал. Это быстрее или просто единственный нормально работающий напрямую способ?
Динамику исключить? Это не проблема, в принципе, если без неё заметно быстрее...
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
28.10.2024, 18:44
Цитата Сообщение от Jack Famous Посмотреть сообщение
Это быстрее или просто единственный нормально работающий напрямую способ
а с чем сравнивать? удалить еще можно drop table и созданием по новой, но это так сильно не в тему и навряд ли быстрей. а insert он и в африке такой же) избавление от динамики чуть ускорит, но не намного, все таки на копирование основное время, ну по сети еще
1
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
28.10.2024, 18:59  [ТС]
Аватар, сравнивать можно с отправкой из мастера на рабов.
Получается, тянуть быстрее и/или проще, чем толкать?)
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
28.10.2024, 19:09
в любом случае отправляет мастер, а инсертит раб, поэтому скорее всего без разницы, не проверял. проведи свой эксперимент, проверь предположение
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
28.10.2024, 20:56
Источник - bcp out
Приемник - забрать файлы из источника, truncate, bcp in
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
28.10.2024, 23:06
bcp наверняка же select для копирования и insert или bulk insert для записи использует. да еще промежуточный файл. сомнительно что быстрее будет
1
 Аватар для Andrey-MSK
3339 / 2226 / 387
Регистрация: 14.08.2018
Сообщений: 7,515
Записей в блоге: 4
29.10.2024, 08:48
Цитата Сообщение от Jack Famous Посмотреть сообщение
Получается, тянуть быстрее и/или проще, чем толкать?)
Настраивать проще. На дочернем сервере все права есть, даже чтение под гостем на удалённом сервере, а на главном нужно их настроить, TRUNCATE требует чуть ли не админских прав...
Цитата Сообщение от Аватар Посмотреть сообщение
да и из журнала транзакций если что таблицу не восстановишь
Ну как бы
Операцию TRUNCATE TABLE можно откатить в рамках транзакции.
TRUNCATE TABLE (Transact-SQL)
1
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,089
29.10.2024, 09:58
Лучший ответ Сообщение было отмечено Jack Famous как решение

Решение

1. Вынести все справочники в отдельную базу.
2. Сформировать в продуктовой базе алиасы, нацеленные на таблицы данной базы
3. Распространять базу справочников через бэкап/рестор.
(Замечу, что это можно делать с 0-вым временем простоя, т.к. восстанавливать БД справочников можно в рядомстоящую базу, а по окончании этого - просто пересоздавать алиасы в продакщене на другую БД).

Или:
1. Копировать данные в таблицы, аналогичные таблицам справочников по структуре, с помощью bcp / bulk insert из предварительно подготовленного bcp плоского файла / задачи ssis / просто insert into c удаленного сервера.
2. Переключить таблицы справочников в эти рядомстоящие таблицы, с помощью alter table switch
Тоже нулевое время простоя.

Кроме того, обратите внимание, что эти способы исключают вариант с недокопированностью данных (при правильном подходе, разумеется).
1
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
29.10.2024, 09:58  [ТС]
Andrey-MSK, Аватар, invm, uaggster, большое вам спасибо!
Для больших объёмов я бы использовал bcp, но тут не думаю, что он как-то заметно выиграет, зато гемора больше с ним.
Попробую толкать и тянуть. Отпишусь по результатам.

Если не понравится, буду разбирать варианты от invm и uaggster (всё равно нужно уметь).
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
29.10.2024, 10:18
Плюс, это стандартная задача для снепшот-репликации
1
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
29.10.2024, 15:36  [ТС]
Цитата Сообщение от invm Посмотреть сообщение
стандартная задача для снепшот-репликации
как бы да, но такое ощущение, что снимок это как-то сложно(долго) если мне просто нужно очистить таблицы и наполнить их.
Вот задача, когда справочники пополняются на каждом сервере — это да. Тут, наверное, придётся погрузится…

UPD:
Цитата Сообщение от Jack Famous Посмотреть сообщение
Попробую толкать и тянуть. Отпишусь по результатам.
абсолютно однозначно можно сказать, что тянуть гораздо быстрее: таблица с 4мя небольшими полями и 8,5 тыс. строк "толкалась" более 4-ёх минут (отменил), а "тянулась" всего 4 секунды.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2024, 15:36
Помогаю со студенческими работами здесь

Apache poi, как скопировать данные с одного листа на другой
в vba есть такая функция Sheets("tmp").Copy Before:=Sheets(1) То есть мне надо скопировать лист целиком. Не получая предварительно...

Как скопировать данные из одного листа Excel на другой в Java?
Как скопировать данные из одного листа Excel на другой в Java?

Как передать данные с одного сервера на другой?
Имеется сервер Oracle, на нем представление, имеется хостинг MySQL. Как передать данные из Oracle на хостинг? В какую сторону рыть?

Скопировать данные из одного файла в другой
&НаКлиенте Процедура ip(Команда) ПолноеИмяФайла = "input.txt"; ВыбранныйФайл = Новый Файл(ПолноеИмяФайла); ПолноеИмяФайла2 =...

Скопировать данные из одного StringGrid-а в другой
Добрый день, столкнулся с небольшой проблемкой, надо скопировать данные из StringGrid1 в StringGrid2. StringGrid2 размером 10х725 а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru