百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

探索SQL Server 2022在Ubuntu 20.04上的安装、配置、备份与常见问题

toyiye 2024-09-07 00:41 5 浏览 0 评论

最近新项目要上线,考虑成本,放弃云数据库,选择自行安装,数据库选择SQL Server 2022,系统选择Ubuntu 20.04。

//SQL Server 2022文档地址https://learn.microsoft.com/zh-cn/sql/sql-server/?view=sql-server-ver16

SQL Server 2022 安装

SQL Server 2022先决条件:服务器内存至少需要2 GB 。

1、导入公共存储库 GPG 密钥

$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc

2、注册 SQL Server Ubuntu 存储库

sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"

3、运行以下命令以安装 SQL Server

sudo apt-get updatesudo apt-get install -y mssql-server

4、等待安装完成后,运行 mssql-conf setup

按照提示选择数据库版本及设置 SA 密码。其中数据库版本Evaluation、Developer 和 Express 版为免费版本。

sudo /opt/mssql/bin/mssql-conf setup

注意:SA 账户密码需要最小长度为 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号。

此时如果正常,那恭喜您!但我尝试了好几次,都卡在了这里,系统提示:error while loading shared libraries: liblber-2.4.so.2

网上查了一堆资料,最终找到了解决办法:

下载安装libldap-2.4-2_2.4.47+dfsg.4-1+eagle_amd64包

wget https://community-packages.deepin.com/deepin/pool/main/o/openldap/libldap-2.4-2_2.4.47%2Bdfsg.4-1%2Beagle_amd64.debsudo dpkg -i libldap-2.4-2_2.4.47+dfsg.4-1+eagle_amd64.deb

再次运行 mssql-conf setup,继续设置,再次遇到问题,系统提示:error while loading shared libraries: libssl1.1,解决办法:

下载安装libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64包

wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.debsudo dpkg -i libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.deb

最后运行 mssql-conf setup,完成设置,没再报错。

5、验证服务是否正常运行

systemctl status mssql-server --no-pager

此时SQL Server 已在 Ubuntu 上正常运行。

6、打开 SQL Server TCP 端口(默认值为 1433)

开启内网远程访问,我们使用的是腾讯云,需要设置安全组,内网放行1433端口。

SQL Server 2022 配置

SQL Server 数据库安装完成后,还需要进行一些常规配置。

1、启用 SQL Server 代理

为了进行日常数据备份等任务,我们需要开启代理:

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true//重启服务生效sudo systemctl restart mssql-server

2、更改默认数据或日志目录位置

使用 filelocation.defaultdatadir 和 filelocation.defaultlogdir 设置可更改创建新数据库和日志文件的位置。默认路径为:/var/opt/mssql/data。可以使用以下步骤进行修改:

//为新的数据库数据和日志文件创建目标目录sudo mkdir /home/d/mssql/data
//将目录的所有者和组更改为 mssql 用户sudo chown mssql /home/d/mssql/datasudo chgrp mssql /home/d/mssql/data
//使用 mssql-conf 通过 set 命令更改默认数据目录sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /home/d/mssql/data
//使用 mssql-conf 通过 set 命令更改默认日志文件目录sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /home/d/mssql/data
//重启服务生效sudo systemctl restart mssql-server

3、更改生成备份文件的默认位置

使用 filelocation.defaultbackupdir 设置可更改生成备份文件位置。默认路径为:/var/opt/mssql/data。可以使用以下步骤进行修改:

//为新的备份文件创建目标目录sudo mkdir /home/d/mssql/bak/ -p
//将目录的所有者和组更改为 mssql 用户sudo chown mssql /home/d/mssql/backupsudo chgrp mssql /home/d/mssql/backup
//使用 mssql-conf 通过 set 命令更改默认备份目录sudo /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /home/d/mssql/backup
//重启 SQL Server 服务sudo systemctl restart mssql-server

更多配置请查看文档:

https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-configure-mssql-conf?view=sql-server-ver16

4、设置数据库自动备份

备份是保护数据的唯一方法,为了防止数据丢失和保障业务的持续性,需要对数据进行备份。这里采用的方案是按天进行完整备份,按小时进行差异备份,在还原数据时,只需要选择完全备份和差异备份集,打上勾后进行还原即可

完整备份是指备份整个数据库,包括表、索引、视图和存储过程等所有数据库对象,完整备份所需时间较长,占用空间也最多,但恢复数据时只需还原单个文件,因此最为简单和快速。

差异备份是针对上一次完全备份来说的,它只备份自上次完全备份之后发生更改的数据。因此,差异备份比完全备份小,还原也比完全备份快且对性能影响最小。

我使用 SQL Server 代理中提供的作业来执行计划,新建两个作业,一个执行完整备份任务,一个执行差异备份任务。如下图所示


首先、设置作业的步骤,我们可以在步骤中添加执行备份务的脚本。

然后、设置作业计划,指定脚本执行的时间周期及间隔。

这样就可以了,以上为演示截图。

SQL Server 完整备份脚本:

DECLARE @Path NVARCHAR(50) = '/home/d/mssql/bak/test_';SET @Path= CONCAT(@Path,CONVERT(NVARCHAR(10),GETDATE() ,120),'.bak');

BACKUP DATABASE test TO DISK = @Path WITH FORMAT; GO

这段脚本的功能是将名为 test 的数据库备份到指定路径下的文件,备份文件的路径是 /home/d/mssql/bak/test_YYYYMMDD.bak,其中 YYYYMMDD 是当前日期的形式。执行备份时,会覆盖原有备份文件,重新备份。

SQL Server 差异备份脚本:

DECLARE @Path NVARCHAR(50) = '/home/d/mssql/bak/test_';SET @Path= CONCAT(@Path,CONVERT(NVARCHAR(10),GETDATE() ,120),'.bak');
BACKUP DATABASE test TO DISK = @Path WITH DIFFERENTIAL; GO

这段代码的功能是在 test 数据库上一次完整备份的基础上,进行差异备份,通过 TO DISK = @Path 指定完整备份路径。执行备份时,SQL Server 会把差异备份的文件追加到有备份文件中。

在脚本中使用 EXPIREDATE 指令可以设置备份的过期日期,当备份文件超出指定的备份的过期日期时,SQL Server 将清除备份集中满足日期束缚的备份作业。例如:

DECLARE @Path NVARCHAR(50) = '/home/d/mssql/bak/test_';SET @Path= CONCAT(@Path,CONVERT(NVARCHAR(10),GETDATE() ,120),'.bak');
DECLARE @ExpiryTime DATETIME2(7)=DATEADD(mm, 1, GETDATE());
BACKUP DATABASE test TO DISK = @Path WITH EXPIREDATE =@ExpiryTime;GO

同时在脚本中使用 COMPRESSION 指令可设置备份文件自动压缩,还可以指定压缩的算法例如:

//参考文档:https://learn.microsoft.com/zh-cn/sql/relational-databases/integrated-acceleration/use-integrated-acceleration-and-offloading?view=sql-server-ver15
//使用默认MS_XPRESS压缩选项WITH COMPRESSION (ALGORITHM = MS_XPRESS);

SQL Server 数据库的备份和还原文档:

https://learn.microsoft.com/zh-cn/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-ver16

Linux 上的 SQL Server 的性能最佳做法和配置指南:

https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-performance-best-practices?view=sql-server-linux-ver16


文章出自猿惑豁微信公众号

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码