热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在CentOS中管理SQL数据库:备份和恢复SQL数据库

本文将学习SQLServer数据从Windows复制到Cent

在本文中,我们将学习如何在CentOS中备份和恢复SQL数据库。本文是关于CentOS上管理SQL Server主题的第二篇文章。在我的前一篇文章《在CentOS上安装SQL Server》中,我们学习了如何在CentOS中安装和创建SQL数据库。

1.使用SQL Server management studio在windows 10和CentOS Linux之间备份和恢复SQL数据库

2.使用SQL server data Tools将windows 10上的SQL server实例的数据复制到CentOS上的SQL实例

3.使用SQL server导入和导出向导将windows 10上的SQL server实例的数据复制到CentOS上的SQL实例

在本文中,我们将学习将SQL Server数据从Windows复制到CentOS的备份和恢复方法

我在工作站上创建了一个虚拟机,并安装了CentOS 8.0。我在Windows 10的SQL Server实例上下载并配置了stackoverflow2010数据库。

我们正在使用WinSCP软件将备份文件从windows复制到Linux。它是一个免费的SFTP客户端,用于在本地和远程计算机之间复制数据。要复制数据,它使用以下文件传输协议。

1.安全文件传输协议(SFTP)

2.文件传输协议(FTP)

3.安全复制协议(SCP)

4.AmazonS3:这是一种云存储服务。您可以在Amazon S3和本地计算机之间复制

5.WebDAV:Web分发创作和版本控制。它是用于远程文件编辑和修改的HTTP协议的扩展。

您可以从这里下载WinSCP。安装简单且具有交互性。


查看数据库架构

在从源和目标复制SQL数据库之前,建议检查数据库文件、模式结构和数据。运行以下查询集。

运行以下查询以查看文件和文件组列表


USE stackoverflow2010
go
SELECT fg.NAME AS [File Group Name],
sdf.NAME AS [Logical File Name],
sdf.physical_name AS [File Location],
size / 128 AS [File size]
FROM sys.database_files sdf
INNER JOIN sys.filegroups fg
ON sdf.data_space_id = fg.data_space_id

输出

image.png

运行以下查询以查看表和数据列表。

SELECT
t.Name AS TableName,
sch.Name AS SchemaName,
part.Rows AS RowCounts
FROM
sys.tables t
INNER JOIN sys.indexes indx ON t.object_id = indx.object_id
INNER JOIN sys.partitions part ON indx.object_id = part.object_id AND indx.index_id = part.index_id
INNER JOIN sys.allocation_units a ON part.partition_id = a.container_id
LEFT OUTER JOIN sys.schemas sch ON t.schema_id = sch.schema_id
WHERE
t.Name NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND indx.object_id > 255
GROUP BY
t.Name, sch.Name, part.Rows
ORDER BY
t.Name;
GO

查询输出

image.png

让我们生成stackoverflow2010数据库的仅拷贝备份。备份在D:\SQLBackups\StackOverflow文件夹中生成。

BACKUP DATABASE [StackOverflow2010] TO DISK =
'D:\SQLBackups\StackOverflow\StackOverflow2010.bak' WITH copy_only, stats=5

生成备份后,让我们将其复制到CentOS。我在Linux的根目录中创建了一个名为SQLServer的目录。目录路径为/SQLServer。我已经在/SQLServer目录中创建了另一个名为SQLBackup的目录。我们正在/SQLServer/SQLBackup目录中复制备份。通过运行以下命令创建目录。

[root@localhost/]#mkdir/SQLServer
[root@localhost/]#mkdir/SQLServer/SQLBackup

该目录对名为root的用户具有读取、写入和执行权限。要查看权限,可以运行ls-l命令。

[root@localhost/]#ls-l/SQLServer/

命令输出

image.png

现在,让我们复制备份文件。启动WinSCP。首先,我们必须配置一个会话来在服务器之间复制文件。在登录屏幕上,您可以提供登录详细信息。输入适当的配置值以连接到CentOS文件共享。输入以下配置参数值。

1.文件协议:指定适当的文件传输协议。在我们的例子中,我们使用的是SFTP协议,所以我们从下拉列表中选择了SFTP。

2.主机名和端口:指定要连接的计算机的主机名/IP地址和端口。我们正在连接到我的工作站,IP地址是192.168.1.2。因此,我指定了192.168.2.2,端口号是22。

3.用户名:指定远程计算机的用户名。我使用root用户进行连接,所以我输入了root作为用户名。

4.密码:指定连接到远程计算机的适当密码。我已输入根用户的密码。

单击登录。以下是登录屏幕的屏幕截图。

image.png

我们可以将备份文件在D:\SQLBackup\Stackoverflow文件夹之间拖放到/SQLServer/SQLBackup目录。请参见下图。

image.png

上传过程开始。

image.png

复制备份文件后,让我们检查备份文件是否已复制。此外,我们还必须检查备份文件的权限。运行以下命令。

[root@localhost/]#ls-l/SQLServer/SQLBackup/

输出

image.png

如上图所示,备份文件已复制,权限也已正确应用。让我们在CentOS上恢复SQL Server中的数据库。为此,请运行以下restore命令。

USE [master]
RESTORE DATABASE [StackOverflow2010] FROM
DISK = N'/SQLServer/SQLBackup/StackOverflow2010.bak' WITH FILE = 1,
MOVE N'StackOverflow2010' TO N'/var/opt/mssql/data/StackOverflow2010.mdf',
MOVE N'fg_posts_data' TO N'/var/opt/mssql/data/fg_posts_data.ndf',
MOVE N'Stackoverflow2010_Posts' TO N'/var/opt/mssql/data/Stackoverflow2010_Posts.ndf',
MOVE N'StackOverflow2010_log' TO N'/var/opt/mssql/data/StackOverflow2010_log.ldf',
MOVE N'DF_MemoryOptimized_Posts' TO N'/var/opt/mssql/data/FG_MemoryOptimized_Posts',
NOUNLOAD, STATS = 5
GO

SQL数据库恢复后,让我们运行几个查询来验证数据库是否成功恢复。

运行以下查询以查看文件和文件组列表

USE stackoverflow2010
go
SELECT fg.NAME AS [File Group Name],
sdf.NAME AS [Logical File Name],
sdf.physical_name AS [File Location],
size / 128 AS [File size]
FROM sys.database_files sdf
INNER JOIN sys.filegroups fg
ON sdf.data_space_id = fg.data_space_id

查询输出

image.png

如您所见,创建了文件组。现在,运行下面的查询以查看表和数据列表。

SELECT
t.Name AS TableName,
sch.Name AS SchemaName,
part.Rows AS RowCounts
FROM
sys.tables t
INNER JOIN sys.indexes indx ON t.object_id = indx.object_id
INNER JOIN sys.partitions part ON indx.object_id = part.object_id AND indx.index_id = part.index_id
INNER JOIN sys.allocation_units a ON part.partition_id = a.container_id
LEFT OUTER JOIN sys.schemas sch ON t.schema_id = sch.schema_id
WHERE
t.Name NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND indx.object_id > 255
GROUP BY
t.Name, sch.Name, part.Rows
ORDER BY
t.Name;
GO

查询输出

image.png

如您所见,表和数据已成功恢复。


总结

本文介绍如何将数据库的数据从Windows 10复制到CentOS。我已经解释了一种备份和恢复数据库的方法。假设您计划将SQL Server的操作系统从Windows Server迁移到Linux。在这种情况下,本文将帮助您设置一个开发环境,以帮助您设置开发环境。在下一篇文章中,我们将学习如何使用SQL Server导入导出向导将SQL数据库从Windows 10复制到CentOS。


查看更多

ApexSQL Complete是一个SQL代码完整工具,它包括诸如代码段、SQL自动替换、选项卡导航、保存的查询等功能,适用于SSMS和Visual Studio


关于作者

image.png

Nisarg Upadhyay是一名SQL Server数据库管理员和Microsoft认证的专业人员,拥有8年以上的SQL Server管理经验和2年以上的Oracle 10g数据库管理经验。

他在数据库设计、性能调优、备份和恢复、HA和DR设置、数据库迁移和升级方面拥有专业知识。可以联系到他nisargupadhyay87@outlook.com


原文标题:Manage SQL Databases in CentOS: Backup and Restore SQL Database

原文作者:Nisarg Upadhyay

原文链接:https://www.sqlshack.com/manage-sql-databases-in-centos-backup-and-restore-sql-database/




推荐阅读
author-avatar
blue薾孋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有