Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
Добрый день.
Я с ms sql только начал работать, работал только с небольшими объемами mysql для web, так что я плохо еще здесь все понимаю.

Суть такая имеется база на сервере, пишет 21Гб в неделю, места уже не хватает на сервере, принято решение сделать партиции на неделю и каждую неделю сливать партицию на удаленный сервер, а там эту партицию подключать к базе данных.

Неделю пишем партицию 21Гб, далее нужно ее отключить, заархивить, удалить эту партицию(что бы освободить место), слить архив по инету, разархивить, подключить к базе. И так каждую неделю.

Вопрос, как отключать партиции и как ее удалить а также как ее подключить к базе?
Искал, гуглил в интернетах, но по существу ничего не нашел.
Подскажите.
25 июл 11, 10:24    [11021283]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
egaraev
Member

Откуда:
Сообщений: 63
Может лучше использовать BULK INSERT и linked server.
25 июл 11, 10:49    [11021415]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
yazy4nik
Искал, гуглил в интернетах, но по существу ничего не нашел.


Странно, т.к. информации полно
http://msdn.microsoft.com/en-us/library/ms345146(v=sql.90).aspx
25 июл 11, 10:57    [11021460]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
Критик
yazy4nik
Искал, гуглил в интернетах, но по существу ничего не нашел.


Странно, т.к. информации полно
http://msdn.microsoft.com/en-us/library/ms345146(v=sql.90).aspx


про удаление как таковое там нет, удаление граничной точки, то-есть секция удаляется, но просто соседня секция становиться больше. Или я не так понимаю?
25 июл 11, 11:11    [11021556]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
yazy4nik
Добрый день.
Я с ms sql только начал работать, работал только с небольшими объемами mysql для web, так что я плохо еще здесь все понимаю.

Наверное в этом и кроется хроническое молчание присутствующих здесь "гуру"
Т.к. тема, которую Вы затроноли, весьма обширна, да и по_googlе_ив Вы, несомненно, найдете массу информации...
yazy4nik
Суть такая имеется база на сервере, пишет 21Гб в неделю, места уже не хватает на сервере, принято решение сделать партиции на неделю и каждую неделю сливать партицию на удаленный сервер, а там эту партицию подключать к базе данных.

Неделю пишем партицию 21Гб, далее нужно ее отключить, заархивить, удалить эту партицию(что бы освободить место), слить архив по инету, разархивить, подключить к базе. И так каждую неделю.

Вопрос, как отключать партиции и как ее удалить а также как ее подключить к базе?
Искал, гуглил в интернетах, но по существу ничего не нашел.
Подскажите.

Итак, в кратце...
Достичь желаемого можно:
1) Принять к сведению, что оперировать нужно не понятием "партиция", а понятием - файловая группа, которая содержит (одну, или болеее) "партицию"
2) Откусывать/архивировать/добвлять партицию(ии) можно, и нужно, в рамках файловой группы.

Игого, для Вашей задачи:
1) Раз в неделю "расширяем" ф-ию секционирования:
Alter partition function Partiton_function_name split (новая граница)
2) После этого (в случае успеха), "откусываем" самую старую секцию(и) в отделную простую таблицу (или секционированную в рамках откусываемой файловой группы).
Alter table TableName Switch ....
3) Далее Backup_им вместе с группой "PRIMARY"(тут куча своих нюансов) Вашу откусанную файловую группу
4) Drop table (Partition schema, paratiotion function -> в зависимости от реализации алгоритма)
5) Удаляем файловую группу...

Игого, для восстановления в отдельную БД:
1) Восстнавливаем из ранее полученного backup_а отделную БД (Primary + откусанная файловая группа)
2) Далее - по вкусу ....
25 июл 11, 22:47    [11025516]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
mike909,

огромное спасибо!

есть что нибудь кроме этого "статьи Kimberly L. Tripp: SQL Server 2005. Partitioned Tables and Indexes"
почитать про сценарий "скользящего окна"? Это что бы для закрепления материала. А то в инете только эта статья по всем запросам выскакивает, другого не встречал вообще.
26 июл 11, 08:53    [11026189]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
yazy4nik
mike909,

огромное спасибо!

есть что нибудь кроме этого "статьи Kimberly L. Tripp: SQL Server 2005. Partitioned Tables and Indexes"
почитать про сценарий "скользящего окна"? Это что бы для закрепления материала. А то в инете только эта статья по всем запросам выскакивает, другого не встречал вообще.

Перевод этой же статьи.
Если надумаете полностью автоматизировать "движение окна", то вот Вам еще ссылочка
SINGLE_USER(924, 5064, 5068, 5069, 5070) - тема для FAQ
В помощь для выбора способа загрузки ...
Руководство по производительности загрузки данных
26 июл 11, 09:29    [11026264]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
mike909,

я не совсем понял, что делают в пункте "Управление "включаемой" каскадной таблицей" какие данные туда загружаются и как это сделать, там советуют bulk insert, но эта операция для загрузки данных из текстового документа, здесь же не предполагается никакого документа, да и вообще зачем эта таблица? Ведь как я правильно понял switch-им старые данные во вторую каскадную таблицу.
26 июл 11, 10:33    [11026569]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
Kirillich
Member

Откуда:
Сообщений: 581
yazy4nik,

это операция массовой вставки данных.
в выше приведенной ссылке на "Руководство по производительности загрузки данных" расписаны и другие варианты, а так же преимущества и недостаки.
Выбирать Вам чем перносить данные
26 июл 11, 10:52    [11026673]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
Kirillich,

дак какие данные, я осовбождаю секцию, зачем мне в нее что то писать?
Я понимаю так:
Раз в неделю я забираю с сервера бекап данных за прошедшую неделю.
Делаю две файловые группы в них по партиции, за прошлую неделю и текущая неделя.
Я сливаю файловую группу за прошедшую неделю, создаю таблицу, что бы свичнуть партицию туда, друпаю потом таблицу(место освободилось). Далее я меняю функцию партиции, меняю временные границы старой файловой группы и делаю ее следующей в очереди на запись данных(то есть на следующую неделю).
Зачем мне что то писать в ту файловую группу, которую я освобождаю?
26 июл 11, 11:08    [11026765]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
Народ, и еще плиз помощи.
Сижу и не могу придумать сценарий для восстановления из бекапа.
Первый сервер собирает инфу(речь про который шла выше), допустим у меня на нем разбита таблица на 2 партиции(2 файловые группы) одна текущая(в которую пишет) другая старая, которую бекаплю, откусываю удаляю и файловая группа готова принять данные на следующую неделю.
Второй это хранилище все базы с накопленными данными и который будет делать селекты когда потребуется. Я его разбиваю на 52 недели (файловые группы) и партиции будут храниться за каждый год в отдельной папке.
Собственно вопрос, имеется бекапнутая партиция(или файловая группа), что представляет из себя процесс добавления ее ко второму серваку(объединение с остальными данными) как это происходит, ведь схемы секционирования разные и названия файловых групп разное, как это реализовать?
27 июл 11, 10:06    [11032192]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
yazy4nik
Собственно вопрос, имеется бекапнутая партиция(или файловая группа), что представляет из себя процесс добавления ее ко второму серваку(объединение с остальными данными) как это происходит, ведь схемы секционирования разные и названия файловых групп разное, как это реализовать?

1. На SQL_е с архивной БД восстанавливаем в отдельную БД из ранее полученного backup_а (PRIMARY + Откушенная файловая группа).
2. Создаем в архивной БД новую файловую группу и в ней новую секцию.
3. Из свежевосстановленной БД двигаем данные в новую секцию. Для ускорения этого процесса можно применить следующий бубен:
3.1. В архивной БД временно меняем файловую группу по умолчанию на новую файловую группу
3.2. SELECT ... INTO [Архивная БД]..[простая таблица в формате архивной] FROM [восстановленная БД]...
3.3. Строим индексы (если нужно); добавляем ограничения
3.4. Переключаем таблицу в секцию
4. Убиваем восстановленную БД.

P.S. Это черновой вариант. Почти все пункты можно реализовать по разному, в зависимости от конкретной задачи.
27 июл 11, 11:16    [11032594]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
mike909,

капец как все сложно, уже неделю вожусь и полного понимания происходящего нет, каждый день вылезает, что то новое
27 июл 11, 11:27    [11032696]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
я дико извиняюсь, но прошу еще помощи.
Собственно отделить партицию получилось, очитить место тоже, а вот восстановить бекап на целевой базе никак не получается.
Пробовал:
-Делал бекап primary и файловой группы, потом пытался сделать restore в пустую базу и в точно такую же базу(идентичная файловая система) оба варианта не получаются выдают ошибки.
-Делал полный бекап базы восстанавливал и пытался потом подменить файлы, тоже не получается.
Объясните плиз, подробно хоть один сценарий как восстановить данные на целевую базу данных, что бы работал сценарий.
29 июл 11, 09:43    [11043112]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
up
Сорри еще раз, Но очень срочно нужно.
29 июл 11, 12:23    [11044246]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
yazy4nik
up
Сорри еще раз, Но очень срочно нужно.

Ну раз очень срочно, то вот
+ очень кратко

USE [master]
CREATE DATABASE TestFG
GO

ALTER DATABASE TestFG
  ADD FILEGROUP [Cut_FG]
  
GO

ALTER DATABASE TestFG
  ADD FILEGROUP [RW_FG]
GO

ALTER DATABASE [TestFG] 
  ADD FILE ( 
	  NAME = N'CutFG', 
	  FILENAME = N'C:\Temp\CutFG.ndf' 
  ) TO FILEGROUP [Cut_FG]
GO

ALTER DATABASE [TestFG] 
  ADD FILE ( 
	  NAME = N'RWFG', 
	  FILENAME = N'C:\Temp\RWFG.ndf' 
  ) TO FILEGROUP [RW_FG]
GO

USE [TestFG]

GO

--CREATE PARTITION FUNCTION WRK_PF( SMALLDATETIME ) AS RANGE RIGHT FOR VALUES ( '20110729' )
CREATE PARTITION FUNCTION WRK_PF( SMALLDATETIME ) AS RANGE RIGHT FOR VALUES ( DATEADD(DAY,-2,GETDATE()), GETDATE() )

GO

CREATE PARTITION SCHEME WRK_PS AS PARTITION WRK_PF TO ([PRIMARY], [Cut_FG], [RW_FG] )

GO

CREATE TABLE WrokTable(
	 ID INT IDENTITY(1,1),
	 EventDate SMALLDATETIME NOT NULL,
	 SomeValue INT
) ON WRK_PS( EventDate )

GO

INSERT INTO WrokTable( EventDate, SomeValue )
SELECT DATEADD(DAY, -1, GETDATE() ), 1 UNION ALL
SELECT DATEADD(DAY, 1, GETDATE() ), 2

GO

SELECT *
FROM WrokTable
WHERE $PARTITION.WRK_PF( EventDate ) = 2

SELECT *
FROM WrokTable
WHERE $PARTITION.WRK_PF( EventDate ) = 3

GO

CREATE TABLE ArcTable(
	 ID INT IDENTITY(1,1),
	 EventDate SMALLDATETIME NOT NULL,
	 SomeValue INT
) ON [Cut_FG]

GO

ALTER TABLE WrokTable SWITCH PARTITION 2 TO ArcTable  

GO

ALTER DATABASE [TestFG]
   MODIFY FILEGROUP [Cut_FG] READONLY 

GO

CHECKPOINT -- Впрочем это может понадобиться только если перед Backup_ом будете окном секционирования заниматься

GO

BACKUP DATABASE [TestFG]
  FILEGROUP = ('PRIMARY', 'Cut_FG')
  TO DISK='C:\Temp\TestFG.bkp'
  WITH INIT
GO

ALTER DATABASE [TestFG]
   MODIFY FILEGROUP [Cut_FG] READWRITE 

GO

--DROP TABLE ArcTable

GO

--ALTER PARTITION FUNCTION WRK_PF() MERGE( ... ) 

GO

RESTORE FILELISTONLY FROM DISK = 'C:\Temp\TestFG.bkp'

GO

RESTORE DATABASE [ArcTestFG]
  FILEGROUP = ('PRIMARY', 'Cut_FG')
  FROM DISK='C:\Temp\TestFG.bkp'
  WITH 
  	MOVE 'TestFG' TO 'C:\Temp\ArcTestFG.mdf'
  	,MOVE 'CutFG' TO 'C:\Temp\ArcCutFG.ndf'
  	,MOVE 'TestFG_log' TO 'C:\Temp\ArcTestFG_log.mdf'
  
GO

SELECT *
from [ArcTestFG].dbo.ArcTable
29 июл 11, 13:15    [11044709]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
Спасибо.
И эта схема будет работать, когда мне нужно будет добавить в уже существующую архивную базу новую файловую группу с новой неделей?
29 июл 11, 14:07    [11045142]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
yazy4nik
Спасибо.
И эта схема будет работать, когда мне нужно будет добавить в уже существующую архивную базу новую файловую группу с новой неделей?

Если под добавлением "новой файловой группы" Вы подразумеваете движение окна секционирования, то ДА:
ALTER PARTITION SCHEME partition_scheme_name 
NEXT USED [ filegroup_name ] [ ; ]
Если все еще мечтаете подсунуть файловую группу из backup_а, то НЕТ.
29 июл 11, 14:18    [11045237]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
mike909,

Вот уже существует ArcTestFG с одной неделей, на подходе вторая неделя, как мне в ArcTestFG добавить эту новую неделю?
Расширить функцию партиционирования переделать схему добавить файловую группу и файл и потом...?
29 июл 11, 14:22    [11045273]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
yazy4nik
mike909,

Вот уже существует ArcTestFG с одной неделей, на подходе вторая неделя, как мне в ArcTestFG добавить эту новую неделю?
Расширить функцию партиционирования переделать схему добавить файловую группу и файл и потом...?

тоесть новая неделя эта имеется ввиду данные за неделю собраные в файловую группу успешно откусаную в конце недели и запекапленую.
29 июл 11, 14:25    [11045296]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
yazy4nik
mike909,

Вот уже существует ArcTestFG с одной неделей, на подходе вторая неделя, как мне в ArcTestFG добавить эту новую неделю?
Расширить функцию партиционирования переделать схему добавить файловую группу и файл и потом...?

Вам уже советовали 11026264
Прочтите еще раз статью
Особенно внимательно про "Split, Merge и Switch"
29 июл 11, 14:28    [11045322]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
mike909
yazy4nik
mike909,

Вот уже существует ArcTestFG с одной неделей, на подходе вторая неделя, как мне в ArcTestFG добавить эту новую неделю?
Расширить функцию партиционирования переделать схему добавить файловую группу и файл и потом...?

Вам уже советовали 11026264
Прочтите еще раз статью
Особенно внимательно про "Split, Merge и Switch"


да не про базу источник, а про те данные которые накопились за неделю и нужно перенести в базу архив, как эти данные перенести и добавить? в виде архива или просто файловую группу подключить или еще как?
29 июл 11, 15:09    [11045620]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
yazy4nik
да не про базу источник, а про те данные которые накопились за неделю и нужно перенести в базу архив

И я не про нее см. 11025516
Где ArcTestFG - свежевосстановленная БД из п.п. 1
yazy4nik
как эти данные перенести и добавить? в виде архива или просто файловую группу подключить или еще как?

Опять же см. 11025516 п.п. 3 - 4, там как раз про перенос данных.

И еще раз - подсунуть файловую группу из одной БД в другую не получится НИКАК !!!
Да и смысла в этом нет никакого, т.к. метаданные в группе PRIMARY живут.
Именно по этому группу PRIMARY нужно добавлять в backup.
29 июл 11, 15:50    [11045980]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
mike909
Member

Откуда:
Сообщений: 662
mike909,
препутал сообщение
Нужное вот 11032594
29 июл 11, 15:54    [11046012]     Ответить | Цитировать Сообщить модератору
 Re: Backup с помощью партиций, отключение подключение.  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
mike909
1. На SQL_е с архивной БД восстанавливаем в отдельную БД из ранее полученного backup_а (PRIMARY + Откушенная файловая группа).
2. Создаем в архивной БД новую файловую группу и в ней новую секцию.
3. Из свежевосстановленной БД двигаем данные в новую секцию. Для ускорения этого процесса можно применить следующий бубен:
3.1. В архивной БД временно меняем файловую группу по умолчанию на новую файловую группу
3.2. SELECT ... INTO [Архивная БД]..[простая таблица в формате архивной] FROM [восстановленная БД]...
3.3. Строим индексы (если нужно); добавляем ограничения
3.4. Переключаем таблицу в секцию
4. Убиваем восстановленную БД.

P.S. Это черновой вариант. Почти все пункты можно реализовать по разному, в зависимости от конкретной задачи.


а select into не умрет на нескольких десятках миллионов строк?
хотелось бы как то быстрее с метаданными замутить.
1 авг 11, 09:38    [11051281]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить