Database
 sql >> база данни >  >> RDS >> Database

Срещи на работното място:Възстановяване на пространство от огромна база данни

ВЪВЕДЕНИЕ

Този документ записва стъпки, скриптове и идеология зад поддръжката, извършена на производствена база данни между 22 април 2015 г. и 23 април 2015 г. Подробностите са специфични за дадено приложение, но принципите могат да бъдат полезни за други, които се нуждаят от подобни операции в производството .

ФОН

Базата данни нарасна до над 1,44 TB с таблицата EPOEvents консумират над половината от този размер (792GB). В миналото бяха положени усилия за изтриване на записи в тази таблица, по-стари от 90 дни. За съжаление се оказа безполезно. Работата, планирана за постигане на това, никога не може да бъде завършена по време на нито една сесия. Причината е лошото представяне на базата данни.

След обсъждане беше взето решение за изчистване на целия EPOEvents таблица, като я съкратите. По-нататъшното решение беше базата да се подготви правилно за очаквания растеж на данните в бъдеще.

Подробностите за въпросния сървър на база данни са по-долу:

ИМЕ НА СЪРВЪР SVR-EPO-02
ИМЕ НА ИНСТАНЦИЯ SVR-EPO-02\ENG_AVSERVER
ВЕРСИЯ НА ОС Windows 2008 R2 Enterprise (SP1) 64-битова
ВЕРСИЯ DB Microsoft SQL Server 2008 R2 (SP1) 64-битов
IP АДРЕС XX.XX.XX.XX
ИМЕ НА БАЗА ДАННИ ePO4_SVR-EPO-02

ТАБЛИЦА ЗА СЪБИТИЯ

Скриптът, дефиниращ EPOEvents таблицата е документирана в Приложение I.

Струва си да се спомене, че колоната AutoID на тази таблица е във връзки с външни ключове с таблиците HIP8_EventInfo, HIP8_IPSEventParameter и SCOR_EVENTS. Това се отрази на подхода, използван за съкращаване на таблицата EPOEvents. Обобщените подробности са в таблицата по-долу:

Тази информация е извлечена с помощта на израза в листинг 1.

USE [ePO4_SVR-EPO-02]
GO
EXEC sp_fkeys 'EPOEvents'

ОБОБЩЕНИЕ НА ПРОЦЕДУРАТА

Обобщение на процедурата, използвана по време на промяната:

  • Разгръщане на пет 200GB диска
  • Спиране на EPO Application Services
  • Архивирайте базата данни на EPO
  • Създайте нова файлова група
  • Отрежете таблицата EPOEvents
  • Преместете EPOEvents в новата файлова група
  • Пресъздаване на чужди ключове върху дъщерна таблица
  • Напишете скрипт за дефиницията на таблицата EPOEvents
  • Архивирайте базата данни на EPO
  • Свиване на файлове с данни в ОСНОВНАТА файлова група
  • Архивирайте базата данни на EPO
  • Изхвърлете базата данни на EPO
  • Форматиране на устройство J
  • Възстановете базата данни на EPO с MOVE
  • Преместете TempDB в Drive Q
  • Стартирайте EPO Application Services
  • Потвърдете, че EPOEvents е попълнено

Разгръщане на пет 200GB диска

Пет нови диска бяха разположени на сървъра. Пълният списък на всички устройства на сървъра е както следва:

DRIVE ИЗПОЛЗВАНЕ НОВО? КОМЕНТАР
C Системно устройство НЕ Размер на клъстера по подразбиране (4KB)
D Приложно устройство НЕ Размер на клъстера по подразбиране (4KB)
I MSSQL данни (СТАРИ) НЕ Размер на клъстера по подразбиране (4KB)
J Регистър на MSSQL НЕ Препоръчителен размер на клъстера за SQL (64K)
M MSSQL данни (FG_LARGE FileGroup) ДА Препоръчителен размер на клъстера за SQL (64K)
N MSSQL данни (FG_LARGE FileGroup) ДА Препоръчителен размер на клъстера за SQL (64K)
O MSSQL данни (FG_LARGE FileGroup) ДА Препоръчителен размер на клъстера за SQL (64K)
P MSSQL данни (PRIMARY FileGroup) ДА Препоръчителен размер на клъстера за SQL (64K)
В MSSQL TempDB ДА Препоръчителен размер на клъстера за SQL (64K)

Всички нови устройства бяха форматирани с помощта на размер на клъстер 64K, както се препоръчва от Microsoft за устройства, съдържащи данни или регистрационни файлове на MS SQL Server[1]. Устройството J също беше преформатирано след правене на резервно копие на базата данни.

[1] Пълната дискусия е достъпна на https://msdn.microsoft.com/en-us/library/dd758814.aspx

Спиране на EPO Application Services

Всички приложни услуги бяха спрени, за да се гарантира липса на актуализация на базата данни през периода на промяната. Услугите за приложения, спрени (или потвърдени неработещи), са както следва:

  1. McAfee ePolicy Orchestrator 4.6.8 Сървър на приложения
  2. McAfee ePolicy Orchestrator 4.6.8 Анализатор на събития
  3. Сървър McAfee ePolicy Orchestrator 4.6.8

Архивирайте базата данни на EPO

Първото архивиране на базата данни е направено преди да се извърши каквото и да е действие върху съществуващата структура, като се използва скриптът в листинг 2.

Списък 2:Първо архивиране на базата данни ePO4_SVR-EPO-02

BACKUP DATABASE [ePO4_SVR-EPO-02] to
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A10.bak'
WITH STATS = 5, COMPRESSION, NAME = N'ePO4_SVR-EPO-02 First Backup Before Purge'

Създайте нова файлова група

Нова файлова група, наречена FG_LARGE, беше създадена с еквивалента на скрипта в листинг 3. Всички файлове, добавени към файловата група, бяха дефинирани с 40GB първоначален размер, 1G увеличение и 100GB максимален размер.

Списък 3:Създаване на файлова група FG_LARGE

USE [master]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILEGROUP [FG_LARGE]
GO

USE [master]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_01', FILENAME = N'M:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_01.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_02', FILENAME = N'M:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_02.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_03', FILENAME = N'N:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_03.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_04', FILENAME = N'N:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_04.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_05', FILENAME = N'O:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_05.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_06', FILENAME = N'O:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_06.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO

Отрежете таблицата EPOEvents

Списък 4 показва пълния набор от задачи, необходими за успешно съкратяване на таблицата EPOEvents. Сценарият включва бележки за по-голяма яснота.

Основният проблем, който трябва да се отбележи, е, че е невъзможно да се съкрати таблица, която участва като родител във връзка с външния ключ. Това би нарушило референтната цялост. Изтриването би работило и би запазило референтната цялост, тъй като външните ключове обикновено се дефинират с клаузи ON DELETE CASCADE или ON DELETE SET NULL.

Списък 4:Съкращаване на таблицата EPOEvents и преместване в ново пространство за таблици

/****** Check Foreign Keys Referencing EPOEvents ******/

USE [ePO4_SVR-EPO-02]
GO
EXEC sp_fkeys 'EPOEvents'


/****** Script Identified Foreign Keys ******/

USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER] CHECK CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS]
GO


USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO] CHECK CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS]
GO

USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[SCOR_EVENTS]  WITH CHECK ADD  CONSTRAINT [SCOR_EVENTS_EPO_EVENTS] FOREIGN KEY([EPO_EVENT_AUTO_ID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[SCOR_EVENTS] CHECK CONSTRAINT [SCOR_EVENTS_EPO_EVENTS]
GO

/****** Backup the Child Tables ******/

USE [ePO4_SVR-EPO-02]
GO
SELECT * INTO HIP8_IPSEVENTPARAMETER_BAK FROM HIP8_IPSEVENTPARAMETER;
SELECT * INTO HIP8_EVENTINFO_BAK FROM HIP8_EVENTINFO;
SELECT * INTO SCOR_EVENTS_BAK FROM SCOR_EVENTS;
GO

/****** Truncate Child Tables ******/

USE [ePO4_SVR-EPO-02]
GO
TRUNCATE TABLE HIP8_IPSEVENTPARAMETER;
TRUNCATE TABLE HIP8_EVENTINFO;
TRUNCATE TABLE SCOR_EVENTS;

/****** Drop Foreign Keys ******/

USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE HIP8_IPSEVENTPARAMETER DROP CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS];
ALTER TABLE HIP8_EVENTINFO DROP CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS];
ALTER TABLE SCOR_EVENTS DROP CONSTRAINT [SCOR_EVENTS_EPO_EVENTS];

/***** Truncate EPOEvents Table ******/


USE [ePO4_SVR-EPO-02]
GO
TRUNCATE TABLE EPOEVENTS;

Преместете EPOEvents в новата файлова група

Таблицата EPOEvents беше преместена във файловата група FG_LARGE с помощта на скрипта в листинг 5.

Списък 5:Преместване на файлова група EPOEvents FG_LARGE

/***** Move EPOEvents to the New Filegroup FG_LARGE ******/
-- This is achieved by recreating the Clustered Index used by Primary Key on this table
-- First Step is to Script the Clustered Index

USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [PK_EPOEvents_AutoID] PRIMARY KEY CLUSTERED 
(
	[AutoID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

-- Second Step is to drop and recreate the Clustered Index after changing
-- the Filegroup the Script (observe the ON Clause in the create statement below:
-- Filegroup was previously PRIMARY and is now FG_LARGE)

-- Drop Statement
USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE [dbo].[EPOEvents] DROP  CONSTRAINT [PK_EPOEvents_AutoID] 

-- Create Statement
USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [PK_EPOEvents_AutoID] PRIMARY KEY CLUSTERED 
(
	[AutoID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [FG_LARGE]
GO

Пресъздаване на външни ключове върху дъщерни таблици

Външните ключове на дъщерни таблици, идентифицирани в стъпка 4.1.5, бяха пресъздадени със скрипта в листинг 6.

Списък 6:Съкращаване на таблицата EPOEvents и преместване в нова файлова група

USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER] CHECK CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS]
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO] CHECK CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS]
GO

ALTER TABLE [dbo].[SCOR_EVENTS]  WITH CHECK ADD  CONSTRAINT [SCOR_EVENTS_EPO_EVENTS] FOREIGN KEY([EPO_EVENT_AUTO_ID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[SCOR_EVENTS] CHECK CONSTRAINT [SCOR_EVENTS_EPO_EVENTS]
GO

Напишете скрипт на дефиницията на таблицата EPOEvents

Като резервно копие, той беше идеален за скриптиране на екстракта от DDL на таблицата EPOEvents. Това беше направено чрез щракване с десния бутон и избор на опцията Таблица на скриптове като> СЪЗДАВАНЕ до> Нов прозорец на редактора на заявки от SSMS[1] Object Explorer. Полученият скрипт може да бъде запазен в .sql файл.

Архивирайте базата данни на EPO

Второ архивиране на базата данни на EPO беше направено със скрипта в листинг 7, за да се подготви за следващия етап (свиване на файла с данни).

Списък 7:Второ архивиране на базата данни на EPO

BACKUP DATABASE [ePO4_SVR-EPO-02] TO
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C10.bak'
WITH STATS = 5, COMPRESSION, NAME = N'ePO4_SVR-EPO-02 Backup After Purge'

Свиване на файлове с данни в ОСНОВНАТА файлова група

Свиването е необходимо, за да се възстанови освободеното пространство чрез съкращаване на таблицата EPOEvents. Това също беше от решаващо значение в този случай, тъй като файловете с данни изискваха преместване на по-малък диск.

Файловете с данни бяха преместени от устройство I – 3 TB устройство към устройство P, 200 GB устройство.

Трите файла с данни в ОСНОВНАТА файлова група бяха логически наречени ePO4_SVR-EPO-01 (~300GB), ePO4_SVR-EPO-02 (~500GB) и ePO4_SVR-EPO-03 (~400 GB).

Целта беше да се свият всички файлове до 40 000 MB всеки. Задачата изисква пет до седем итерации, всяка от които е премахнала 50 000 MB.

Списък 8:Свиване на файлове с данни в ОСНОВНАТА файлова група

USE [ePO4_SVR-EPO-02]
GO
DBCC SHRINKFILE (N'ePO4_SVR-EPO-01' , 40000)
DBCC SHRINKFILE (N'ePO4_SVR-EPO-02' , 40000)
DBCC SHRINKFILE (N'ePO4_SVR-EPO-03' , 40000)
GO

Архивирайте базата данни на EPO

Второ архивиране на базата данни на EPO беше направено с помощта на скрипта в листинг 5 за подготовка за следващия етап (изтриване на съществуващата база данни). Скриптът присъства в листинг 9 .

Списък 9:Първо архивиране на базата данни ePO4_SVR-EPO-02

BACKUP DATABASE [ePO4_SVR-EPO-02] TO
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E10.bak'
WITH STATS = 5, COMPRESSION, NAME = N'ePO4_SVR-EPO-02 Backup After Shrink'

Изхвърлете базата данни на EPO

Базата данни беше премахната с помощта на SSMS GUI – щракнете с десния бутон върху базата данни и изберете опцията „изтриване“ от падащото меню. Еквивалентният SQL е в листинг 10 .

Списък 10:Изхвърлете базата данни на EPO

USE [master]
GO
DROP DATABASE [ePO4_SVR-EPO-02]
GO

Форматиране на устройство J

Тази стъпка форматира устройството J, използвайки размера на клъстера 64K, както е препоръчано от Microsoft за оптимална I/O производителност. Тази задача преди това беше изпълнена на новите устройства, внедрени в стъпка 4.1.1.

Фигура 3 показва опцията, избрана в диалоговия прозорец Форматиране...

Възстановете базата данни на EPO с MOVE

Операцията по възстановяване беше необходима по три причини:

  1. За форматиране на устройство J, съдържащо регистрационните файлове на транзакциите (както по-горе).
  2. За да премахнете всякаква фрагментация, причинена от операцията за свиване.
  3. За да преместите базата данни на нови устройства.

Скриптът в листинг 11 служи за възстановяване. Имайте предвид, че наборът от архиви, използван за това възстановяване, е последното архивиране, направено в стъпка 4.1.8. Също така имайте предвид, че опцията MOVE служи за преместване на файловете с данни в ОСНОВНАТА файлова група, за да управлява P.

Списък 11:Изхвърлете базата данни на EPO

RESTORE DATABASE [ePO4_SVR-EPO-02] FROM
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E10.bak'
WITH STATS = 5,
MOVE 'ePO4_SVR-EPO-02' TO 'P:\MSSQL\DATA\ePO4_SVR-EPO-02.mdf',
MOVE 'ePO4_SVR-EPO-01' TO 'P:\MSSQL\DATA\ePO4_SVR-EPO-01.ndf',
MOVE 'ePO4_SVR-EPO-03' TO 'P:\MSSQL\DATA\ePO4_SVR-EPO-03.ndf'

Преместете TempDB в устройство Q

За оптимална производителност на големи бази данни се препоръчва също така да намерите TempDB файлове на специално устройство.

Използвайки скрипта в листинг 9, TempDB беше преместен на устройство Q. Имайте предвид, че излишните файлове с данни TempDB бяха премахнати по време на тази операция. Броят на TempDB файлове с данни трябва да съответства на броя на физическите процесори, налични за SQL Server.

Списък 12:Преместване на TempDB

-- Drop unnecessary TempDB files
-- The following script was run several times and required several restarts of the -- SQL instance

USE [tempdb]
GO
ALTER DATABASE [tempdb]  REMOVE FILE [tempdev_xx]
GO


-- Relocate TempDB files

USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'Q:\MSSQL\DATA\tempdev.mdf');
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev_01, FILENAME = 'Q:\MSSQL\DATA\tempdev_01.mdf');
GO
ALTER DATABASE  tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'J:\MSSQL\LOG\templog.ldf');
GO

-- Restart SQL Server
-- Confirm the location of TempDB files

SELECT name as 'File Name', physical_name as 'File Directory'
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
GO

Стартирайте EPO Application Services

Всички приложни услуги бяха стартирани, след като екземплярът на SQL Server беше потвърден ОК. Стартираните услуги за приложения са както следва:

  1. McAfee ePolicy Orchestrator 4.6.8 Сървър на приложения
  2. McAfee ePolicy Orchestrator 4.6.8 Анализатор на събития
  3. Сървър McAfee ePolicy Orchestrator 4.6.8

Потвърдете, че таблиците са попълнени

Скриптът в листинг 13 потвърждава, че таблицата EPOEvents и дъщерните таблици се попълват след завършване на целия процес.

Списък 13:Преместване на TempDB

USE [ePO4_SVR-EPO-02]
GO
SELECT COUNT(*) EPOEvents_CNT FROM EPOEvents;
SELECT COUNT(*) HIP8_EventInfo_CNT FROM HIP8_EventInfo;
SELECT COUNT(*) HIP8_IPSEventParameter_CNT FROM HIP8_IPSEventParameter;
SELECT COUNT(*) SCOR_EVENTS_CNT FROM SCOR_EVENTS;

Публикуване на ЗАДАЧИТЕ ЗА ПРОМЯНА

Резюме на задачите след промяна

1 Заданието Custom_Purge EPO Events е създаден, за да запази броя на събитията, заснети в рамките на 100 дни. От решаващо значение е тази работа да е винаги успешна.

2 Прекалено пространство, разпределено по-рано на сървъра на базата данни на EPO, може да бъде възстановено, особено устройството I – в момента 1 TB.

3 Задача за архивиране Custom_Daily_Backup е създадена по време на промяната. Архивите, направени от това задание, ще премахнат наборите за архивиране до I:/MSSQL/Backup/ . Важно е да промените този път, ако устройството I ще бъде премахнато от системата. Също така е необходимо тези резервни копия да бъдат запазени съгласно правилата за групово архивиране.

ПРИЛОЖЕНИЯ

ПРИЛОЖЕНИЕ I

ТАБЛИЦА ЗА ЕПОЕВЕНТИ DDL

USE [ePO4_SVR-EPO-02]
GO

/****** Object:  Table [dbo].[EPOEvents]    Script Date: 04/23/2015 01:40:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[EPOEvents](
	[AutoID] [int] IDENTITY(1,1) NOT NULL,
	[AutoGUID] [uniqueidentifier] NOT NULL,
	[ServerID] [nvarchar](16) NOT NULL,
	[ReceivedUTC] [datetime] NOT NULL,
	[DetectedUTC] [datetime] NOT NULL,
	[AgentGUID] [uniqueidentifier] NOT NULL,
	[Analyzer] [nvarchar](16) NOT NULL,
	[AnalyzerName] [nvarchar](64) NOT NULL,
	[AnalyzerVersion] [nvarchar](20) NOT NULL,
	[AnalyzerHostName] [nvarchar](128) NULL,
	[AnalyzerIPV4] [int] NULL,
	[AnalyzerIPV6] [binary](16) NULL,
	[AnalyzerMAC] [nvarchar](16) NULL,
	[AnalyzerDATVersion] [nvarchar](20) NULL,
	[AnalyzerEngineVersion] [nvarchar](20) NULL,
	[AnalyzerDetectionMethod] [nvarchar](128) NULL,
	[SourceHostName] [nvarchar](266) NULL,
	[SourceIPV4] [int] NULL,
	[SourceIPV6] [binary](16) NULL,
	[SourceMAC] [nvarchar](16) NULL,
	[SourceUserName] [nvarchar](128) NULL,
	[SourceProcessName] [nvarchar](128) NULL,
	[SourceURL] [nvarchar](1024) NULL,
	[TargetHostName] [nvarchar](266) NULL,
	[TargetIPV4] [int] NULL,
	[TargetIPV6] [binary](16) NULL,
	[TargetMAC] [nvarchar](16) NULL,
	[TargetUserName] [nvarchar](128) NULL,
	[TargetPort] [int] NULL,
	[TargetProtocol] [nvarchar](16) NULL,
	[TargetProcessName] [nvarchar](128) NULL,
	[TargetFileName] [nvarchar](266) NULL,
	[ThreatCategory] [nvarchar](128) NOT NULL,
	[ThreatEventID] [int] NOT NULL,
	[ThreatSeverity] [tinyint] NOT NULL,
	[ThreatName] [nvarchar](128) NOT NULL,
	[ThreatType] [nvarchar](32) NOT NULL,
	[ThreatActionTaken] [nvarchar](24) NOT NULL,
	[ThreatHandled] [bit] NULL,
	[TheTimestamp] [timestamp] NOT NULL,
 CONSTRAINT [PK_EPOEvents_AutoID] PRIMARY KEY CLUSTERED 
(
	[AutoID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_EventID]  DEFAULT (newid()) FOR [AutoGUID]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ServerID]  DEFAULT (N'SVR-EPO-02') FOR [ServerID]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ReceivedUTC]  DEFAULT (getutcdate()) FOR [ReceivedUTC]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ThreatSeverity]  DEFAULT ((1)) FOR [ThreatSeverity]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ThreatActionTaken]  DEFAULT ('none') FOR [ThreatActionTaken]
GO

ПРИЛОЖЕНИЕ II

РАБОТА CUSTOM_PURGE EPO СЪБИТИЯ

USE [msdb]
GO

/****** Object:  Job [Custom_Purge EPO Events]    Script Date: 04/25/2015 19:47:51 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 04/25/2015 19:47:51 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Custom_Purge EPO Events', 
		@enabled=1, 
		@notify_level_eventlog=0, 
		@notify_level_email=0, 
		@notify_level_netsend=0, 
		@notify_level_page=0, 
		@delete_level=0, 
		@description=N'No description available.', 
		@category_name=N'[Uncategorized (Local)]', 
		@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [Step 1]    Script Date: 04/25/2015 19:47:51 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'Step 1', 
		@step_id=1, 
		@cmdexec_success_code=0, 
		@on_success_action=1, 
		@on_success_step_id=0, 
		@on_fail_action=2, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'DECLARE @NbLignes int ; 
SELECT @NbLignes = COUNT(*) FROM EPOEvents WHERE DATEDIFF(day, DetectedUTC, GETDATE()) > ''100''; 

PRINT ''Total number of lines to delete:''; 
PRINT @NbLignes; 

WHILE (@NbLignes > 0) 
BEGIN 

        PRINT ''Total number of lines LEFT to delete: :''; 
        PRINT @NbLignes; 
        PRINT ''Start deleting 50000 lines'';
        BEGIN TRAN DEL_SET;
        DELETE TOP(500000) FROM EPOEvents WHERE DATEDIFF(day, DetectedUTC, GETDATE()) > ''100''; 
        COMMIT;
        SET @NbLignes = @NbLignes - ''50000''; 
        WAITFOR DELAY ''00:05'';
END 
PRINT ''End of Maintenance'' ; 
', 
		@database_name=N'ePO4_SVR-EPO-02', 
		@output_file_name=N'D:\MSSQL\JOBLOG\purgeepoevents.txt', 
		@flags=2
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @[email protected], @name=N'Purge Schedule', 
		@enabled=1, 
		@freq_type=4, 
		@freq_interval=1, 
		@freq_subday_type=1, 
		@freq_subday_interval=0, 
		@freq_relative_interval=1, 
		@freq_recurrence_factor=0, 
		@active_start_date=20130312, 
		@active_end_date=99991231, 
		@active_start_time=200000, 
		@active_end_time=235959, 
		@schedule_uid=N'3d0b8826-691d-4d3c-aca9-00cb5ce246b2'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

GO

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разрушете стените! Как да деблокирате данните си

  2. Промяна на начина, по който isql изпълнява SQL

  3. Развитието на информацията за контакт означава ли промяна на вашата база данни?

  4. Обосноваване на новия Mac Pro

  5. Добавяне на още разширени функции като управление на категории и гласуване в теми и публикации