GIỚI THIỆU
Tài liệu này ghi lại các bước, tập lệnh và tư tưởng đằng sau quá trình bảo trì được thực hiện trên cơ sở dữ liệu sản xuất từ ngày 22 tháng 4 năm 2015 đến ngày 23 tháng 4 năm 2015. Các chi tiết dành riêng cho một ứng dụng, nhưng các nguyên tắc có thể hữu ích cho những người khác cần thực hiện các hoạt động tương tự trong sản xuất .
BỐI CẢNH
Cơ sở dữ liệu đã tăng lên hơn 1,44TB với bảng EPOEvents tiêu thụ hơn một nửa kích thước này (792GB). Trước đây đã có nhiều nỗ lực để xóa các mục nhập trong bảng này cũ hơn 90 ngày. Thật không may, nó tỏ ra vô ích. Công việc được lên lịch để đạt được điều này không bao giờ có thể hoàn thành trong bất kỳ phiên nào. Nguyên nhân là do hiệu suất kém của cơ sở dữ liệu.
Sau khi thảo luận, một quyết định đã được đưa ra để thanh lọc toàn bộ EPOEvents bảng bằng cách cắt bớt nó. Quyết định tiếp theo là chuẩn bị cơ sở dữ liệu một cách chính xác cho sự tăng trưởng dữ liệu dự kiến trong tương lai.
Dưới đây là chi tiết của máy chủ cơ sở dữ liệu được đề cập:
SERVERNAME | SVR-EPO-02 |
TÊN CƠ SỞ | SVR-EPO-02 \ ENG_AVSERVER |
PHIÊN BẢN HĐH | Windows 2008 R2 Enterprise (SP1) 64-bit |
PHIÊN BẢN DB | Microsoft SQL Server 2008 R2 (SP1) 64-bit |
ĐỊA CHỈ IP | XX.XX.XX.XX |
TÊN CƠ SỞ DỮ LIỆU | ePO4_SVR-EPO-02 |
BẢNG EPOEVENTS
Tập lệnh xác định EPOEvents bảng được ghi trong Phụ lục I.
Điều đáng nói là cột AutoID của bảng này nằm trong mối quan hệ Khóa ngoại với các bảng HIP8_EventInfo, HIP8_IPSEventParameter và SCOR_EVENTS. Điều này ảnh hưởng đến cách tiếp cận được sử dụng để cắt ngắn bảng EPOEvents. Chi tiết tóm tắt có trong bảng dưới đây:
Thông tin này được trích xuất bằng cách sử dụng câu lệnh trong Liệt kê 1.
USE [ePO4_SVR-EPO-02]
GO
EXEC sp_fkeys 'EPOEvents'
TÓM TẮT THỦ TỤC
Tóm tắt quy trình được sử dụng trong quá trình thay đổi:
- Triển khai năm ổ đĩa 200GB
- Ngừng Dịch vụ Ứng dụng EPO
- Sao lưu Cơ sở dữ liệu EPO
- Tạo một nhóm tệp mới
- Cắt ngắn EPOEvents Bảng
- Di chuyển EPOEvents sang Nhóm tệp mới
- Tạo lại các phím ngoại trên bảng con
- Tập lệnh cho Định nghĩa Bảng EPOEvents
- Sao lưu Cơ sở dữ liệu EPO
- Thu nhỏ các tệp dữ liệu trong nhóm tệp CHÍNH
- Sao lưu Cơ sở dữ liệu EPO
- Bỏ Cơ sở dữ liệu EPO
- Định dạng Drive J
- Khôi phục Cơ sở dữ liệu EPO với MOVE
- Định vị lại TempDB sang Drive Q
- Khởi động Dịch vụ Ứng dụng EPO
- Xác nhận EPOEvents đã được phổ biến
Triển khai năm ổ đĩa 200GB
Năm ổ đĩa mới đã được triển khai trên máy chủ. Danh sách đầy đủ của tất cả các ổ đĩa trên máy chủ như sau:
DRIVE | SỬ DỤNG | MỚI? | BÌNH LUẬN |
C | Ổ đĩa hệ thống | KHÔNG | Kích thước cụm mặc định (4KB) |
Đ | Ổ ứng dụng | KHÔNG | Kích thước cụm mặc định (4KB) |
I | Dữ liệu MSSQL (CŨ) | KHÔNG | Kích thước cụm mặc định (4KB) |
J | Nhật ký MSSQL | KHÔNG | Kích thước cụm được đề xuất cho SQL (64K) |
M | Dữ liệu MSSQL (FG_LARGE FileGroup) | CÓ | Kích thước cụm được đề xuất cho SQL (64K) |
N | Dữ liệu MSSQL (FG_LARGE FileGroup) | CÓ | Kích thước cụm được đề xuất cho SQL (64K) |
O | Dữ liệu MSSQL (FG_LARGE FileGroup) | CÓ | Kích thước cụm được đề xuất cho SQL (64K) |
P | Dữ liệu MSSQL (Nhóm Tệp CHÍNH) | CÓ | Kích thước cụm được đề xuất cho SQL (64K) |
Q | MSSQL TempDB | CÓ | Kích thước cụm được đề xuất cho SQL (64K) |
Tất cả các ổ đĩa mới đều được định dạng bằng kích thước cụm 64K, theo khuyến nghị của Microsoft cho các ổ đĩa chứa dữ liệu MS SQL Server hoặc tệp nhật ký [1]. Ổ J cũng đã được định dạng lại sau khi sao lưu cơ sở dữ liệu.
[1] Có thể truy cập toàn bộ cuộc thảo luận tại https://msdn.microsoft.com/en-us/library/dd758814.aspx
Ngừng Dịch vụ Ứng dụng EPO
Tất cả các dịch vụ ứng dụng đã bị dừng để đảm bảo không có cập nhật nào trên cơ sở dữ liệu trong thời gian thay đổi. Các Dịch vụ Ứng dụng bị dừng (hoặc xác nhận ngừng hoạt động) như sau:
- Máy chủ ứng dụng McAfee ePolicy Orchestrator 4.6.8
- McAfee ePolicy Orchestrator 4.6.8 Trình phân tích cú pháp sự kiện
- Máy chủ McAfee ePolicy Orchestrator 4.6.8
Sao lưu Cơ sở dữ liệu EPO
Bản sao lưu đầu tiên của cơ sở dữ liệu đã được thực hiện trước khi bất kỳ hành động nào diễn ra trên cấu trúc hiện có, bằng cách sử dụng tập lệnh trong Liệt kê 2.
Liệt kê 2:Bản sao lưu đầu tiên của cơ sở dữ liệu 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'
Tạo nhóm tệp mới
Một nhóm tệp mới có tên FG_LARGE đã được tạo với tập lệnh tương đương với tập lệnh trong Liệt kê 3. Tất cả các tệp được thêm vào nhóm tệp được xác định với kích thước ban đầu 40GB, gia số 1G và kích thước tối đa 100GB.
Liệt kê 3:Tạo Nhóm tệp 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
Cắt ngắn EPOEvents Bảng
Liệt kê 4 cho thấy tập hợp đầy đủ các nhiệm vụ cần thiết để cắt ngắn bảng EPOEvents thành công. Tập lệnh bao gồm các ghi chú để rõ ràng.
Vấn đề cơ bản cần lưu ý là không thể cắt bớt một bảng tham gia với tư cách là cha trong mối quan hệ Khoá ngoại. Nó sẽ vi phạm tính toàn vẹn tham chiếu. Việc xóa sẽ hoạt động và duy trì tính toàn vẹn của tham chiếu vì Khóa ngoại thường được định nghĩa bằng mệnh đề ON DELETE CASCADE hoặc ON DELETE SET NULL.
Liệt kê 4:Cắt bớt bảng EPOEvents và chuyển đến vùng bảng mới
/****** 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;
Di chuyển EPOEvents sang Nhóm tệp mới
Bảng EPOEvents đã được chuyển đến Nhóm tệp FG_LARGE bằng cách sử dụng tập lệnh trong Liệt kê 5.
Liệt kê 5:Di chuyển nhóm tệp 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
Tạo lại các khóa ngoại trên bảng con
Các khóa ngoại trên bảng con được xác định trong bước 4.1.5, đã được tạo lại bằng tập lệnh trong Liệt kê 6.
Liệt kê 6:Cắt bớt bảng EPOEvents và chuyển đến nhóm tệp mới
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
Tập lệnh cho Định nghĩa Bảng EPOEvents
Như một bản sao lưu, nó lý tưởng để viết kịch bản trích xuất DDL của bảng EPOEvents. Điều này được thực hiện bằng cách nhấp chuột phải và chọn tùy chọn Bảng tập lệnh dưới dạng> TẠO thành> Cửa sổ trình soạn thảo truy vấn mới từ SSMS [1] Object Explorer. Tập lệnh kết quả có thể được lưu vào .sql tệp.
Sao lưu Cơ sở dữ liệu EPO
Bản sao lưu thứ hai của cơ sở dữ liệu EPO đã được thực hiện với tập lệnh trong Liệt kê 7 để chuẩn bị cho giai đoạn tiếp theo (thu nhỏ tệp dữ liệu).
Liệt kê 7:Bản sao lưu thứ hai của Cơ sở dữ liệu 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'
Thu nhỏ các tệp dữ liệu trong nhóm tệp CHÍNH
Thu hẹp là cần thiết để lấy lại không gian được giải phóng bằng cách cắt bớt bảng EPOEvents. Nó cũng rất quan trọng trong trường hợp này, vì các tệp dữ liệu yêu cầu phải di dời sang một ổ đĩa nhỏ hơn.
Các tệp dữ liệu đã được chuyển từ ổ I - ổ 3 TB sang ổ P, ổ 200 GB.
Ba tệp dữ liệu trong Nhóm tệp CHÍNH được đặt tên hợp lý là ePO4_SVR-EPO-01 (~ 300GB), ePO4_SVR-EPO-02 (~ 500GB) và ePO4_SVR-EPO-03 (~ 400GB).
Mục tiêu là thu nhỏ tất cả các tệp xuống 40000 MB mỗi tệp. Tác vụ yêu cầu từ năm đến bảy lần lặp lại, mỗi lần bị xóa 50000 MB.
Liệt kê 8:Thu hẹp tệp dữ liệu trong nhóm tệp CHÍNH
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
Sao lưu Cơ sở dữ liệu EPO
Bản sao lưu thứ hai của cơ sở dữ liệu EPO đã được thực hiện bằng cách sử dụng tập lệnh trong Liệt kê 5 để chuẩn bị cho giai đoạn tiếp theo (bỏ cơ sở dữ liệu hiện có). Tập lệnh có trong Liệt kê 9 .
Liệt kê 9:Bản sao lưu đầu tiên của cơ sở dữ liệu 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'
Thả Cơ sở dữ liệu EPO
Cơ sở dữ liệu đã bị xóa bằng cách sử dụng SSMS GUI - nhấp chuột phải vào cơ sở dữ liệu và chọn tùy chọn “xóa” từ trình đơn thả xuống. SQL tương đương có trong Liệt kê 10 .
Liệt kê 10:Bỏ qua Cơ sở dữ liệu EPO
USE [master]
GO
DROP DATABASE [ePO4_SVR-EPO-02]
GO
Định dạng Drive J
Bước này định dạng ổ đĩa J, sử dụng kích thước cụm 64K, theo khuyến nghị của Microsoft để có hiệu suất I / O tối ưu. Tác vụ này trước đây đã được thực hiện trên các ổ đĩa mới được triển khai ở bước 4.1.1.
Hình 3 cho thấy tùy chọn được chọn trong hộp thoại Định dạng….
Khôi phục Cơ sở dữ liệu EPO với MOVE
Thao tác khôi phục là cần thiết vì ba lý do:
- Để định dạng ổ đĩa J chứa các Tệp nhật ký giao dịch (như trên).
- Để loại bỏ bất kỳ sự phân mảnh nào do hoạt động thu nhỏ gây ra.
- Để chuyển cơ sở dữ liệu sang các ổ đĩa mới.
Tập lệnh trong Liệt kê 11 phục vụ cho việc khôi phục. Lưu ý rằng bộ sao lưu được sử dụng để khôi phục này là bản sao lưu cuối cùng được thực hiện trong bước 4.1.8. Ngoài ra, hãy quan sát rằng tùy chọn MOVE phục vụ để định vị lại các tệp dữ liệu trong Nhóm tệp CHÍNH sang ổ đĩa P.
Liệt kê 11:Bỏ qua Cơ sở dữ liệu 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'
Chuyển TempDB sang Drive Q
Để có hiệu suất tối ưu cho cơ sở dữ liệu lớn, bạn cũng nên định vị tệp TempDB trên một ổ đĩa chuyên dụng.
Sử dụng tập lệnh trong Liệt kê 9, TempDB đã được chuyển đến ổ đĩa Q. Lưu ý rằng các tệp dữ liệu TempDB dư thừa đã bị xóa trong thao tác này. Số lượng tệp dữ liệu TempDB phải khớp với số CPU vật lý có sẵn cho SQL Server.
Liệt kê 12:Định vị lại 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
Khởi động Dịch vụ Ứng dụng EPO
Tất cả các dịch vụ ứng dụng đã được khởi động sau khi phiên bản SQL Server được xác nhận OK. Dịch vụ ứng dụng bắt đầu như sau:
- Máy chủ ứng dụng McAfee ePolicy Orchestrator 4.6.8
- McAfee ePolicy Orchestrator 4.6.8 Trình phân tích cú pháp sự kiện
- Máy chủ McAfee ePolicy Orchestrator 4.6.8
Xác nhận các bảng đã được điền
Tập lệnh liệt kê 13 xác nhận rằng bảng EPOEvents và các bảng con đang được điền sau khi toàn bộ quá trình hoàn tất.
Liệt kê 13:Định vị lại 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;
ĐĂNG NHIỆM VỤ THAY ĐỔI
Tóm tắt các Nhiệm vụ Thay đổi Đăng
1 Công việc Custom_Purge EPO Events được tạo ra để giữ số lượng sự kiện được nắm bắt trong vòng 100 ngày. Điều quan trọng là đảm bảo công việc này luôn thành công.
2 Có thể lấy lại dung lượng dư thừa trước đó đã phân bổ cho máy chủ cơ sở dữ liệu EPO, đặc biệt là ổ I - hiện là 1 TB.
3 Một công việc sao lưu Custom_Daily_Backup đã được tạo trong quá trình thay đổi. Các bản sao lưu được thực hiện bởi công việc này sẽ thả các bộ sao lưu xuống I:/ MSSQL / Backup / . Điều cần thiết là phải thay đổi đường dẫn này nếu ổ đĩa tôi sẽ bị xóa khỏi hệ thống. Cũng cần bảo quản các bản sao lưu này theo Chính sách sao lưu nhóm.
PHỤ LỤC
PHỤ LỤC I
DDL BẢNG EPOEVENTS
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
PHỤ LỤC II
SỰ KIỆN EPO CUSTOM_PURGE CÔNG VIỆC
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