美文网首页SQL serverSQL-ServerSQL Server
SQL Server Always On 磁盘满处理方式

SQL Server Always On 磁盘满处理方式

作者: ZhiXiong | 来源:发表于2019-11-11 14:52 被阅读0次

    现象描述:我在用 HammerDB 做压力测试的时,因为事务日志太大,导致数据盘 100%
    以下是处理方式:

    1. 查看数据库文件大小和状态, 确定是那个数据库文件过大导致的。

    select * from sys.master_files
    

    2. 备份事务日志到空设备,为释放空间创造条件

    BACKUP LOG tpcc TO DISK='NUL:'
    

    3. 收缩日志文件大小

    这一步有可能没有生效,是因为有副本节点数据没有完全同步。需要在其他盘添加一个临时文件,使数据库状态处于正常状态,然后再处理。

    USE tpcc;
    GO
    DBCC SHRINKFILE ('tpcc_log', 500)
    GO
    

    4. 添加日志文件

    例如:在所有 AVAILABILITY GROUP 节点上执行一下命令:

    mkdir -p /opt/data/
    chown -R mssql:mssql /opt/data/
    

    然后在主节点上执行:

    ALTER DATABASE tpcc ADD LOG FILE 
    (
        NAME = tpcc_log2,
        FILENAME = '/opt/data/tpcc_log2.ldf',
        SIZE = 5MB,
        MAXSIZE = 1024MB,
        FILEGROWTH = 5MB
    )
    

    5. 确认 AVAILABILITY GROUP 同步状态是正常的,然后重新执行步骤 3

    6. 磁盘空间释放完成后, 移除添加的临时日志文件

    在主节点上执行:

    ALTER DATABASE tpcc REMOVE FILE tpcc_log2;
    

    参考资料:
    https://www.thecloudtechnologist.com/shrinking-sql-log-files-in-an-availability-group-cluster-or-database-mirror/
    解决事务日志已满的问题:https://docs.microsoft.com/zh-cn/sql/relational-databases/logs/troubleshoot-a-full-transaction-log-sql-server-error-9002?view=sql-server-ver15
    DBCC SHRINKFILE: https://docs.microsoft.com/zh-cn/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-ver15

    相关文章

      网友评论

        本文标题:SQL Server Always On 磁盘满处理方式

        本文链接:https://www.haomeiwen.com/subject/tiizbctx.html