Posts Tagged ‘backup’

 

Di Chuyển File Khi Khôi Phục Dữ liệu

Khi bạn cần khôi phục (restore) database từ file backup từ một server khác, sự phân bố file trên server kia có thể khác với server này và khi restore bạn cần lưu ý đến điều đó. Ví dụ, trên server nguồn (server 1) data file nằm ở ổ E: và log file nằm ở ổ F:; trong khi server mà bạn đang restore lên (server 2) không có ổ E: và F: mà thay vào đó data file được chứa ở ổ P: và log file ở ổ Q:. Khi đó lệnh RESTORE thông thường sẽ gây ra thông báo lỗi:

RESTORE FILELISTONLY
FROM DISK='\\Server1\E$\Backup\TestDB.bak' 
--kết quả
--LogicalName	PhysicalName
--TestDB	E:\Data\TestDB.mdf
--TestDB_log	F:\Log\TestDB_log.LDF
 
RESTORE DATABASE TestDB
FROM DISK='\\Server1\E$\Backup\TestDB.bak'


Msg 5133, Level 16, State 1, Line 1
Directory lookup for the file “E:\Data\TestDB.mdf” failed with the operating system error 3(The system cannot find the path specified.).
Msg 3156, Level 16, State 3, Line 1
File ‘TestDB’ cannot be restored to ‘E:\Data\TestDB.mdf’. Use WITH MOVE to identify a valid location for the file.
Msg 5133, Level 16, State 1, Line 1
Directory lookup for the file “F:\Log\TestDB_log.LDF” failed with the operating system error 2(The system cannot find the file specified.).
Msg 3156, Level 16, State 3, Line 1
File ‘TestDB_log’ cannot be restored to ‘F:\Log\TestDB_log.LDF’. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 1
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

Lỗi dài dòng nhưng tóm lại là nó phàn nàn là không thể restore data file vào ổ E và log file vào ổ F như yêu cầu, và gợi ý dùng “WITH MOVE” để chọn địa điểm khác. Cách khắc phục là bạn đưa lựa chọn “WITH MOVE” vào lệnh RESTORE và cung cấp địa điểm thích hợp:

RESTORE DATABASE TestDB
FROM DISK='\\Server1\E$\Backup\TestDB.bak' 
WITH MOVE 'TestDB' TO 'P:\Data\TestDB.mdf',
MOVE 'TestDB_log' TO 'Q:\Log\TestDB_log.ldf'
Posted on 13/8/2013 by Vũ Huy Tâm | Categories: Database Administration

Tạo SQL Job Dùng Để Backup Database Hàng Ngày

Backup là công việc tối quan trọng cho mỗi DBA để đảm bảo an toàn dữ liệu. Khi có sự cố xảy ra, backup file là nguồn duy nhất giúp bạn khôi phục dữ liệu trở lại. Trong thời đại dữ liệu trở thành trung tâm của các hoạt động doanh nghiệp, mất mát dữ liệu làm ảnh hưởng nghiêm trọng, thậm chí làm tê liệt hoạt động của công ty. Vì thế không có gì ngạc nhiên khi trong các yêu cầu trách nhiệm của DBA, backup database luôn được liệt kê ở phần đầu.
Chưa nói đến các phương án sao lưu/khôi phục dữ liệu phức tạp, như backup/restore transaction log… ở mức độ tối thiểu bạn cần backup database hàng ngày để khi có sự cố, ít nhất bạn cũng có bản backup từ ngày hôm trước để khôi phục. Việc làm này có thể được tự động hóa một cách dễ dàng thông qua SQL Server Agent. Đây là module trong SQL Server … đọc tiếp »

Posted on 27/2/2011 by Vũ Huy Tâm | Categories: Database Administration

Lấy Lại Dữ Liệu Sau Khi Xóa

Bạn đã bao giờ nhỡ tay xóa mất một bảng (DROP TABLE) hoặc xóa sạch dữ liệu trong bảng (DELETE) của một database đang hoạt động rất nhộn nhịp, để rồi giật mình nhận ra mình vừa phạm một lỗi tày đình? Mồ hôi vã ra đầm đìa, nghe chuông điện thoại kêu mà giật mình thon thót, đầu óc quay cuồng nghĩ cách ăn nói thế nào cho phải… Hì hì làm cho kịch tính tí, nhưng quả thật những hoàn cảnh tương tự như vậy không phải hiếm. Đối với các DBA thường xuyên phải làm việc trực tiếp trên dữ liệu, những sự cố xảy ra do nhầm lẫn là không tránh khỏi. Rất may SQL Server đã tính đến tình huống này, và cung cấp các phương tiện cần thiết để lấy lại dữ liệu, với điều kiện database phải có những thiết lập đúng đắn từ trước. … đọc tiếp »

Posted on 7/12/2010 by Vũ Huy Tâm | Categories: Database Administration

Một Ví Dụ Sao Lưu/Khôi Phục Dữ Liệu

Tiếp theo bài “Các Kiểu Backup Trong SQL Server“, trong bài này tôi sẽ giới thiệu script để thực hiện việc sao lưu/khôi phục sử dụng cả ba loại backup đã nêu.

Script 1. backup database

USE master
GO
IF DB_ID('TEST') IS NOT NULL DROP DATABASE TEST
GO
CREATE DATABASE TEST
GO
USE TEST
GO
CREATE TABLE dbo.Table1(c INT)
GO
INSERT dbo.Table1 VALUES(1)
 
-- thời điểm t1: full backup
BACKUP DATABASE TEST TO DISK = 'D:\Backup\Test_FULL.bak' WITH INIT
 
-- thêm một bản ghi mới
INSERT dbo.Table1 VALUES(2)
 
-- thời điểm t2: differential backup
BACKUP DATABASE TEST TO DISK = 'D:\Backup\Test_DIFF.bak'
WITH INIT, DIFFERENTIAL
 
-- thêm một bản ghi mới thứ ba
INSERT dbo.Table1 VALUES(3)
 
-- thời điểm t3: transaction log backup
BACKUP LOG TEST TO DISK = 'D:\Backup\Test_TRAN.trn'
WITH INIT
 
-- thêm một bản ghi mới thứ tư
INSERT dbo.Table1 VALUES(4)
 
-- thời điểm t4: transaction log backup lần nữa
BACKUP LOG TEST TO DISK = 'D:\Backup\Test_TRAN.trn'

… đọc tiếp »

Posted on 13/9/2010 by Vũ Huy Tâm | Categories: Database Administration

Các Kiểu Backup Trong SQL Server

Khái niệm backup (sao lưu) và restore (khôi phục) chắc hẳn đã quen thuộc đối với đa số chúng ta: bạn thường xuyên backup, ví dụ copy toàn bộ thư mục sang một thiết bị lưu trữ khác, để phòng khi gặp sự cố gây mất mát dữ liệu thì có thể copy ngược trở lại. Với database thì việc backup diễn ra có khác, khi hệ thống đang vận hành thì bạn không thể đơn giản copy các data file và log file vì chúng bị khóa hoàn toàn. Bạn phải dựa vào cơ chế backup của hệ QTCSDL. SQL Server cung cấp ba loại backup như sau:

· Full backup: backup toàn bộ dữ liệu tại thời điểm đó. Đây có lẽ là loại được dùng thường xuyên nhất.
· Differential backup: backup các trang dữ liệu mới được cập nhật kể từ lần full backup trước đó.
· Transaction log backup: backup các log record hiện có trong log file, nghĩa là nó sao lưu các hành động (các thao tác xảy ra đối với database) chứ không sao lưu dữ liệu. Đồng thời nó cũng cắt bỏ (truncate) log file, loại bỏ các log record vừa được backup ra khỏi log file. Vì thế khi thấy log file tăng quá lớn, có nhiều khả năng là bạn chưa từng backup transaction log bao giờ. … đọc tiếp »

Posted on 8/9/2010 by Vũ Huy Tâm | Categories: Database Administration