SQL 数据库备份
本教程将说明如何在MySQL和MS SQL Server中对数据库进行备份。由于可能因为电力波动或磁盘崩溃等原因导致数据丢失,因此创建数据库备份非常重要。总体而言,定期进行数据库备份对确保关键数据的长期可用性至关重要。
备份MySQL数据库
可以使用MySQL的 mysqldump 命令对给定的数据库进行完整备份。此操作将在命令行中执行,并需要数据库用户名和密码,最好是管理员权限。
$ mysqldump -u username -p"password" -R testDB > testDB.sql
我们正在使用-p标志,紧跟我们的密码,以实现与数据库的连接,中间没有空格。-R是要求 mysqldump 将存储过程和函数与数据库中的普通数据一起复制。
根据数据库的大小,上述命令可能需要一些时间来创建最终的输出文件testDB.sql。一旦命令执行完成,您将在testDB.sql文件中获得一个完整的数据库备份,您可以将其安全保存在任何地方。以后可以使用此文件来还原数据库。
恢复MySQL数据库
如果我们有一个数据库备份,那么我们可以使用下面两个步骤来恢复我们的数据库。第一步是使用 mysqladmin 提示命令来创建我们的新数据库:
$ mysqladmin -u username -p"password" create tutorialsDB;
下一步是将旧数据库导入到新数据库中,步骤如下:
$ mysql -u username -p"password" tutorialsDB < testDB.sql;
如果你想保留数据库名称与旧数据库相同,请在将旧数据导入到这个数据库之前删除旧数据库并重新创建它,但请确保这个数据库中没有你不想丢失的任何数据。
备份 MS SQL 数据库
如果你在使用 MS SQL Server,那么为了备份现有数据库,SQL 提供了一个简单的 SQL BACKUP DATABASE 命令。
语法
以下是 SQL 中 BACKUP DATABASE 命令的语法−
BACKUP DATABASE database_name
TO DISK = 'filepath'
GO
示例
以下是一个创建数据库 testDB 在 D 盘上的备份文件的示例。
SQL> BACKUP DATABASE testDB
TO DISK = 'D:\testDB.bak'
GO
要执行备份或恢复操作,您应具有管理员和系统管理员的权限。您还应该将数据库备份到与实际数据库不同的磁盘上。即使磁盘崩溃,我们也不会丢失备份文件和数据库。
输出
当我们执行上述查询时,输出结果如下所示:
Processed 344 pages for database 'testDB', file 'testDB' on file 1.
Processed 2 pages for database 'testDB', file 'testDB_log' on file 1.
BACKUP DATABASE successfully processed 346 pages in 0.011 seconds (245.383 MB/sec).
使用SQL DIFFERENTIAL语句进行备份
SQL DIFFERENTIAL语句备份用于创建数据库的差异备份。差异备份只包含自上次完整备份以来对数据库所做的更改。与完整备份相比,这种类型的备份通常更小。因此,它减少了备份所需的时间。
语法
以下是使用DIFFERENTIAL语句备份数据库的语法-
BACKUP DATABASE database_name
TO DISK = 'filepath'
WITH DIFFERENTIAL
GO
示例
让我们来看一个使用下面的DIFFERENTIAL语句的例子:
SQL> BACKUP DATABASE testDB
TO DISK = 'D:\testDB.bak'
WITH DIFFERENTIAL
GO
输出
执行以上查询后,输出如下:
Processed 200 pages for database 'testDB', file 'testDB' on file 2.
Processed 2 pages for database 'testDB', file 'testDB_log' on file 2.
BACKUP DATABASE WITH DIFFERENTIAL successfully processed 202 pages in 0.011 seconds (143.110 MB/sec).
恢复MS SQL数据库
如果您有一个正确的MS SQL数据库备份,那么在需要时可以轻松地恢复它。
语法
以下是SQL中RESTORE DATABASE命令的语法。
RESTORE DATABASE database_name
FROM DISK = 'filepath'
[WITH REPLACE]
GO
在这里,如果您想覆盖现有数据库,可以使用 WITH REPLACE 选项。
示例
以下是从备份文件 testDB.bak 恢复数据库的示例,该文件存在于 D 驱动器上。
SQL> RESTORE DATABASE testDB
FROM DISK = 'D:\testDB.bak'
WITH REPLACE
GO