我们前面两篇文章介绍了Centos7.3下SQL Server的安装配置及使用Powershell的管理介绍,今天我们接着介绍如何实现Centos7.3 下SQL Server  备份及还原,有两种方式:1、使用SSMS备份及还原,该方式最为简单也最方便操作的方式,2、使用Linux下SQL Server自带功能命令备份,具体见下:

我们上一篇中创建了一个测试数据库,我们接着拿这个数据库进行测试,我们首先使用第一种方式,使用SSMS进行连接备份;

我们首先使用SSMS连接数据库,然后右击数据库---tasks---Back up

centos 恢复mysql备份 centos数据备份_操作系统

我们可以看见默认的备份路劲:默认的备份路劲 /var/opt/mssql/data/下;数据库的格式还是跟windows上的一样.bak格式;

单击--ok开始备份

centos 恢复mysql备份 centos数据备份_sql_02

备份完成

centos 恢复mysql备份 centos数据备份_sql_03

我们查看备份文件



1


cd  /var/opt/mssql/data/




centos 恢复mysql备份 centos数据备份_数据库_04

接下来我们查看默认数据,然后尝试还原一下;

我们通过powershell进行操作;默认是有两条数据的



1



2


select  * from xllinfo;



go




centos 恢复mysql备份 centos数据备份_数据库_05

接下来我们插入一条数据



1



2


insert into xllinfo values (3, 'gavin' ,29);



go




centos 恢复mysql备份 centos数据备份_操作系统_06

接下来我们我们通过SSMS进行查看一下



1


select  * from xllinfo




centos 恢复mysql备份 centos数据备份_sql_07

接下来我们尝试使用SSMS用刚才的备份还原一下

右击数据库-会话-还原--数据库

centos 恢复mysql备份 centos数据备份_数据_08

我们可以看见默认的源,但是我们不使用这样的方式

centos 恢复mysql备份 centos数据备份_sql_09



1


我们选择Device---浏览




centos 恢复mysql备份 centos数据备份_数据库_10

选择添加文件

centos 恢复mysql备份 centos数据备份_操作系统_11

选择备份路劲的备份文件

centos 恢复mysql备份 centos数据备份_centos 恢复mysql备份_12

单击确认

centos 恢复mysql备份 centos数据备份_sql_13

如果确认信息的话,就可以单击还原了

centos 恢复mysql备份 centos数据备份_sql_14

我们还原提示数据库正在使用,所以我们需要停掉访问数据库进程

centos 恢复mysql备份 centos数据备份_操作系统_15

我们使用脚本

我们在系统数据库下执行



1



2


ALTER DATABASE [xll]



SET OFFLINE WITH ROLLBACK IMMEDIATE




centos 恢复mysql备份 centos数据备份_centos 恢复mysql备份_16

接下来我们重新尝试还原,但是需要勾选--选项中的--覆盖已经存在的数据库

centos 恢复mysql备份 centos数据备份_数据库_17

还原成功

centos 恢复mysql备份 centos数据备份_数据_18

接下来我们查看数据,我们还原后,我们发现新增的一条数据没了;

centos 恢复mysql备份 centos数据备份_数据_19

接下来我们使用第二种方法进行能备份,使用在Linux下进行备份

我们在备份前,需要重新插入几条数据,因为上面的还原已经把之前插入的数据覆盖了;我们使用sqlcmd进行插入数据



1



2


sqlcmd –S localhost –U sa



回车输入密码




centos 恢复mysql备份 centos数据备份_数据库_20

使用xll数据库,然后查询默认数据



1



2



3


use xll;



select  * from xxlinfo;



go




centos 恢复mysql备份 centos数据备份_centos 恢复mysql备份_21

接下来我们插入数据



1



2



3



4


insert into xllinfo values (4,’user01’,20);



insert into xllinfo values (4,’user02’,30);



insert into xllinfo values (4,’user03’,40);



go




centos 恢复mysql备份 centos数据备份_操作系统_22

接下来就是通过sqlcmd进行备份



1


sqlcmd -H localhost -U SA -Q  "BACKUP DATABASE [xll] TO DISK = N'/var/opt/mssql/data/xlldb01.bak' WITH NOFORMAT, NOINIT, NAME = 'xll-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"




centos 恢复mysql备份 centos数据备份_数据_23

我们接下来查看一下备份文件



1


cd  /var/opt/mssql/data/




centos 恢复mysql备份 centos数据备份_操作系统_24

接下来我们备份log



1


sqlcmd -H localhost -U SA -Q  "BACKUP LOG [xll] TO DISK = N'/var/opt/mssql/data/xlldb01_LogBackup_2017-03-04_12-10-10.bak' WITH NOFORMAT, NOINIT, NAME = N'xlldb01_LogBackup_2017-03-04_12-10-10', NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 5"




centos 恢复mysql备份 centos数据备份_centos 恢复mysql备份_25

接下来我们删除里面的数据,然后进行查看、



1



2



3


use xll;



select  * from xllinfo;



go




centos 恢复mysql备份 centos数据备份_数据_26

然后我们删除数据



1



2



3


delete xllinfo where name =  'ls' ;



delete xllinfo where name =  'zs' ;



go




centos 恢复mysql备份 centos数据备份_数据库_27

我们再次查看

centos 恢复mysql备份 centos数据备份_操作系统_28

接下来我们进行还原了;

提示数据库正在使用,无法还原

sqlcmd -H localhost -U SA -Q  "RESTORE DATABASE [xll] FROM DISK = N'/var/opt/mssql/data/xlldb01.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5"


centos 恢复mysql备份 centos数据备份_sql_29

所以我们需要端口所有连接数据库的会话才可以

我们需要执行一下操作

ALTER DATABASE [xll]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
或者
ALTER DATABASE [xll]
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO


centos 恢复mysql备份 centos数据备份_数据库_30

两种方式都是可以执行的;接下来我们尝试还原


sqlcmd -H localhost -U SA -Q  "RESTORE DATABASE [xll] FROM DISK = N'/var/opt/mssql/data/xlldb01.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5"

centos 恢复mysql备份 centos数据备份_数据_31

我们最后查看

use xll;
select  * from xllinfo;
go


centos 恢复mysql备份 centos数据备份_sql_32

本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1903732,如需转载请自行联系原作者