search
HomeDatabaseMysql Tutorial数据库的自动备份

数据库的自动备份

Jun 07, 2016 pm 03:29 PM
Artificialbackupdatabaseautomatictoilet

常常人工备份是不现实的,一定要系统自动定期备份。 备份思想: 0、定期备份,非作业莫属。 1、重要的数据应该每几个小时就做一次差异备份;普通数据每周做一次。(我们的数据库是简单恢复模式) 2、硬盘容量有限,数据库又很大,不能容纳太多备份文件,采用

常常人工备份是不现实的,一定要系统自动定期备份。

备份思想:

0、定期备份,非作业莫属。

1、重要的数据应该每几个小时就做一次差异备份;普通数据每周做一次。(我们的数据库是简单恢复模式)

2、硬盘容量有限,数据库又很大,不能容纳太多备份文件,采用2个备份文件策略,轮流覆盖。所以每个数据库永远都只有2个备份文件。


备份作业:

1、获取单双周函数,用于确定备份文件名称。保持每个数据库永远只有2个备份文件

USE [Master]
GO

-- =============================================
-- Author:		leftfist
-- Create date: 2010
-- Description:	用于为备份文件起名
-- =============================================
CREATE FUNCTION [dbo].[jo_func_byWeek]
(
)
RETURNS TINYINT
AS
BEGIN
	DECLARE @JO INT;
	SET @JO = CONVERT(INT,DATENAME(ww,GETDATE()));
	RETURN (@JO % 2);
END

2、根据数据库名称,创建同名文件夹,用于存放备份文件
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

DECLARE @folder VARCHAR(300);
SET @folder = 'c:\backup\db\';
DECLARE @name VARCHAR(50);
DECLARE @sql VARCHAR(1000);
DECLARE curT CURSOR FOR SELECT name FROM sys.databases where database_id2;
OPEN curT;
FETCH NEXT FROM curT INTO @name;
WHILE @@FETCH_STATUS = 0
BEGIN
	SET @sql = 'mkdir ' + @folder + @name;
	ExEc xp_cmdshell @sql;
    FETCH NEXT FROM curT INTO @name;
END
CLOSE curT;
DEALLOCATE curT;

EXEC sp_configure 'xp_cmdshell', 0
GO
RECONFIGURE
GO
EXEC sp_configure 'show advanced options', 0
GO
RECONFIGURE
GO

3、备份所有数据库(tempdb除外)

USE [master]
GO

DECLARE @name VARCHAR(50);
declare @sql varchar(1000);
DECLARE @jo TINYINT;
DECLARE @filename NVARCHAR(100);

--[jo_func_byWeek]是自定义函数,单周返回0,双周返回1
SET @jo = [Master].dbo.[jo_func_byWeek]();
--备份所有数据库(tempdb除外)
DECLARE curT CURSOR FOR SELECT name FROM sys.databases where database_id2
OPEN curT;
FETCH NEXT FROM curT INTO @NAME;
WHILE @@FETCH_STATUS = 0
BEGIN
	--每个数据库存放于同名的文件夹。文件夹预先建好
	SET @filename = @name + '\' + @name + '_' + CAST(@jo AS CHAR(1)) + '.bak';
	SET @sql='BACKUP DATABASE [' + @name + '] TO DISK = ''C:\backup\db\' + @filename + ''' WITH INIT , NAME = N''' + @name + ''', NOSKIP , STATS = 10, NOFORMAT';
	EXEC(@sql);    
    FETCH NEXT FROM curT INTO @name;
END
CLOSE curT;
DEALLOCATE curT;


将步骤3做成一个作业,定期运行,例如周六凌晨,就可以定期得到备份文件了。

那么,作业本身怎么备份呢?

按我的理解,备份了Master、msdb、model之后,作业应该也在里面了。但怎么单独备份作业呢?

网上有高手写了2篇文章介绍,我看不大懂,先记下地址:

SQL Server 作业的备份(备份作业非备份数据库)

SQL Server 作业同步 (结合备份作业)

好在作业的更新频率并不高,我们完全可以在新增、修改作业以后,手动备份一份。

方法很简单:选中作业,右键选 编写作业脚本 就可以了。



Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
MySQL: BLOB and other no-sql storage, what are the differences?MySQL: BLOB and other no-sql storage, what are the differences?May 13, 2025 am 12:14 AM

MySQL'sBLOBissuitableforstoringbinarydatawithinarelationaldatabase,whileNoSQLoptionslikeMongoDB,Redis,andCassandraofferflexible,scalablesolutionsforunstructureddata.BLOBissimplerbutcanslowdownperformancewithlargedata;NoSQLprovidesbetterscalabilityand

MySQL Add User: Syntax, Options, and Security Best PracticesMySQL Add User: Syntax, Options, and Security Best PracticesMay 13, 2025 am 12:12 AM

ToaddauserinMySQL,use:CREATEUSER'username'@'host'IDENTIFIEDBY'password';Here'showtodoitsecurely:1)Choosethehostcarefullytocontrolaccess.2)SetresourcelimitswithoptionslikeMAX_QUERIES_PER_HOUR.3)Usestrong,uniquepasswords.4)EnforceSSL/TLSconnectionswith

MySQL: How to avoid String Data Types common mistakes?MySQL: How to avoid String Data Types common mistakes?May 13, 2025 am 12:09 AM

ToavoidcommonmistakeswithstringdatatypesinMySQL,understandstringtypenuances,choosetherighttype,andmanageencodingandcollationsettingseffectively.1)UseCHARforfixed-lengthstrings,VARCHARforvariable-length,andTEXT/BLOBforlargerdata.2)Setcorrectcharacters

MySQL: String Data Types and ENUMs?MySQL: String Data Types and ENUMs?May 13, 2025 am 12:05 AM

MySQloffersechar, Varchar, text, Anddenumforstringdata.usecharforfixed-Lengthstrings, VarcharerForvariable-Length, text forlarger text, AndenumforenforcingdataAntegritywithaetofvalues.

MySQL BLOB: how to optimize BLOBs requestsMySQL BLOB: how to optimize BLOBs requestsMay 13, 2025 am 12:03 AM

Optimizing MySQLBLOB requests can be done through the following strategies: 1. Reduce the frequency of BLOB query, use independent requests or delay loading; 2. Select the appropriate BLOB type (such as TINYBLOB); 3. Separate the BLOB data into separate tables; 4. Compress the BLOB data at the application layer; 5. Index the BLOB metadata. These methods can effectively improve performance by combining monitoring, caching and data sharding in actual applications.

Adding Users to MySQL: The Complete TutorialAdding Users to MySQL: The Complete TutorialMay 12, 2025 am 12:14 AM

Mastering the method of adding MySQL users is crucial for database administrators and developers because it ensures the security and access control of the database. 1) Create a new user using the CREATEUSER command, 2) Assign permissions through the GRANT command, 3) Use FLUSHPRIVILEGES to ensure permissions take effect, 4) Regularly audit and clean user accounts to maintain performance and security.

Mastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMay 12, 2025 am 12:12 AM

ChooseCHARforfixed-lengthdata,VARCHARforvariable-lengthdata,andTEXTforlargetextfields.1)CHARisefficientforconsistent-lengthdatalikecodes.2)VARCHARsuitsvariable-lengthdatalikenames,balancingflexibilityandperformance.3)TEXTisidealforlargetextslikeartic

MySQL: String Data Types and Indexing: Best PracticesMySQL: String Data Types and Indexing: Best PracticesMay 12, 2025 am 12:11 AM

Best practices for handling string data types and indexes in MySQL include: 1) Selecting the appropriate string type, such as CHAR for fixed length, VARCHAR for variable length, and TEXT for large text; 2) Be cautious in indexing, avoid over-indexing, and create indexes for common queries; 3) Use prefix indexes and full-text indexes to optimize long string searches; 4) Regularly monitor and optimize indexes to keep indexes small and efficient. Through these methods, we can balance read and write performance and improve database efficiency.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function