Ubuntu 自动备份SQLServer

版本

  1. ubuntu版本

    ubuntu18.04
    
  2. SQLServer版本

    sqlcmd -S localhost -U SA -P 'XXXX' -Q"SELECT @@VERSION"
                                                                                                                                                                                                                                                                         
    --------------------------------------------------------------------------------       --------------------------------------------------------------------------------       --------------------------------------------------------------------------------       ------------------------------------------------------------
    Microsoft SQL Server 2019 (RTM-CU4) (KB4548597) - 15.0.4033.1 (X64)
            Mar 14 2020 16:10:35
            Copyright (C) 2019 Microsoft Corporation
            Developer Edition (64-bit) on Linux (Ubuntu 18.04.4 LTS) <X64>
    

备份

使用sqlcmd备份,在用户目录下新建三个shell执行文件,分别用于执行备份。

  1. 完全备份

    sqlcmd -S localhost -U SA -P 'XXXX' -Q "BACKUP DATABASE [XXDatabase] TO DISK = N'/var/opt/mssql/data/backup/XXDatabase_full.bak' WITH INIT, SKIP,NAME = 'XXDatabase-full'"
    
  2. 差异备份

    sqlcmd -S localhost -U SA -P 'XXXX' -Q "BACKUP DATABASE [XXDatabase] TO DISK = N'/var/opt/mssql/data/backup/GDQXCENT_diff.bak' WITH DIFFERENTIAL,INIT,SKIP, NAME = 'XXDatabase-diff'"
    
  3. 日志备份

    sqlcmd -S localhost -U SA -P 'XXXX' -Q "BACKUP LOG [XXDatabase] TO DISK = N'/var/opt/mssql/data/backup/GDQXCENT_log.bak' WITH INIT,SKIP"
    

还原

使用sqlcmd还原

sqlcmd -S localhost -U SA -P 'XXXX' -Q "RESTORE DATABASE [XXDatabase] FROM DISK = N'/var/opt/mssql/data/backup/XXDatabase_full.bak'  WITH NORECOVERY"

如果不需要差异还原,则不需要NORECOVERY

自动备份

使用crontab自动备份
使用管理员权限执行sudo crontab -e

30 3 * * * sh /home/userx/scripts/mssql_backup_diff.sh
40 3 * * * sh /home/userx/scripts/mssql_backup_log.sh
0 3 * * 1,3,6 sh /home/userx/scripts/mssql_backup_full.sh

每天凌晨备份,每周一、三、六完全备份。

异地备份

使用rclone推送到数据中心服务器。便于统一管理,我在服务器搭建了 MinIO
仍然使用sudo crontab -e

10 4 * * * rclone sync /var/opt/mssql/data/backup/XXDatabase_diff.bak  minio:database-180
0 4 * * * rclone sync /var/opt/mssql/data/backup/XXDatabase_log.bak  minio:database-180

注意

  1. 如果sqlserver密码有字符,需要用单引号。
  2. rclone是使用root用户执行的,需要将我们用户目录下的配置文件复制一份到/root目录下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值