文章目录
前言
公司需要把ERP的数据库迁移到liunx上,今天正好服务器挂了,正好边做边写记录下
一、系统安装宝塔面板
系统的安装就不在赘述,默认安装好系统开始
1. 使用的是centos,使用官方的安装命令
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
2. 修改面板信息
- 根据显示的账号密码登录
- 绑定宝塔账号
- 选择安装环境,我这边只用左边图里的三个,按需勾选
- 等待安装结束,按自己喜好在面板设置里修改如下信息
二、安装docker
1.在左侧docker栏选择安装docker
2.安装sqlserver镜像
镜像名mcr.microsoft.com/mssql/server:2019-latest
3.配置compose模板
compose模板信息,注意映射路径,三个都要
version: '3'
services:
#服务名称
sqlserver-db:
#容器名称
container_name: sqlserver-db
#镜像名称
image: mcr.microsoft.com/mssql/server:2019-latest
restart: always
#端口映射
ports:
- 1433:1433
#挂载
volumes:
- /mssqlvol/data:/var/opt/mssql/data
- /mssqlvol/log:/var/opt/mssql/log
- /mssqlvol/secrets:/var/opt/mssql/secrets
#环境变量
environment:
- ACCEPT_EULA=Y
#SA用户密码长度必须至少为 8 个字符,并包含以下四组中的三组字符:大写字母、小写字母、10 位基数和符号
- SA_PASSWORD=Sap123456789
4.添加容器
在compose界面查看容器是否开启成功
5.赋予文件夹权限
在系统根目录下会出现一个mssqlvol
的文件夹
使用winscp软件右键文件夹属性赋予7777权限
6.启动容器
重新启动容器,使用winscp软件查看mssqlvol/log下是否有文件
使用工具navcat或者ssms进行连接
三、自动备份
1.备份数据库shell
#!/bin/bash
#设置mssql备份目录
folder=/var/opt/mssql/data/databack/
day=`date +%Y%m%d%H%M%S`
#数据库服务器,一般为localhost
host=localhost
#用户名
user=sa
#密码
password='数据库密码'
# 容器名称
containerId='sqlserver-db'
# 循环获取数据库名称
for line in $(docker exec $containerId /opt/mssql-tools/bin/sqlcmd \
-S $host -U $user -P $password \
-Q "select [name] from master.dbo.SysDatabases where [dbid] > 4")
do
# 判断是否是数据库名称
if [[ $line =~ ^[a-zA-Z0-9_]+$ && $line != 'name' && $line != 'rows' ]]; then
echo "数据库 $line 开始备份"
docker exec $containerId /opt/mssql-tools/bin/sqlcmd \
-S $host -U $user -P $password \
-Q "BACKUP DATABASE [$line] TO DISK = N'$folder$line/$line$day.bak' WITH NOFORMAT, NOINIT, NAME = N'$line Backup $day', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
fi
done
2.在计划任务中添加shell脚本
3.运行
- 运行后会在data目录下生成databack目录,里面有数据库的bak备份
四、恢复数据
1.下载并打开SSMS
选择自己的数据库ip连接
2.恢复数据库
点击自己的数据库右键-任务-还原-数据库
在弹出的界面中按图中操作,选择自己备份的bak文件
我这边直接用了ERP的备份文件
注意:如果使用自己的bak文件,需要上传至sqlserver映射的文件夹内
查看bak文件中的数据库信息
选项中勾选覆盖现有数据库
等待完成,我这边数据库100多G比较慢
还原成功
总结
总体来说还是比较简单的后面还比较顺利,容易出问题的点也是在还原sqlserver的时候,用了很多工具保险起见还是选择了官方的。想起来在学校时候用的sqlserver2008,这个界面基本没啥变化啊!
如果让我选择数据库的话,我还是喜欢mysql,轻量便捷备份也方便。