解决Mysql收缩事务日志和日志文件过大无法收缩问题

一.MS SQL SERVER 2005

--1.清空日志 
     exec('DUMP TRANSACTION 数据库名 WITH NO_LOG')
--2.截断事务日志:
     exec('BACKUP LOG 数据库名 WITH NO_LOG')
--3.收缩数据库文件(如果不压缩,数据库的文件不会减小
     exec('DBCC SHRINKDATABASE(数据库名) ')
--4.设置自动收缩
     exec('EXEC sp_dboption 数据库名,autoshrink,TRUE')

二.MS SQL SERVER 2008 &2008r2 &2012 &2016

--在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简单模式
GO
USE 数据库名
GO
--crm50sp1_log 为数据库日志文件逻辑名
DBCC SHRINKFILE (N'crm50sp1_log' , 11, TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL --还原为完全模式
GO

三. 日志文件异常大无法收缩的问题

如果日志文件异常大,且收缩的时候无法收缩,这个时候,需要查看是否有未提交或者回滚的事务

执行DBCC OPENTRAN 命令,查看是否有很早运行的事务(消息中显示的有事务开始时间),显示出来的都表示该事务没有提交或回滚所以一直导致MinLSN无法前滚。
如果有这种的话,可以两种方法,一通过信息显示的进程号,杀掉该进程。kill 进程号;(当然重启SQL服务也行,如果允许停机操作的话);

如果没有长时间未关闭的事务, 简单模式: 先备份数据库,然后执行BACKUP LOG 数据库名称 WITH NO_LOG 完整模式: 如果没有进行过完整备份,先进行一次完整备份,然后再备份日志文件,最后执行 DBCC SHRINKFILE (N'日志文件逻辑名称' , 0, TRUNCATEONLY)只收缩日志文件

日志文件逻辑名称通过以下语句可以得到 USE erp数据库 go SELECT [name] FROM sys.database_files WHERE type_desc='LOG'

总结

以上所述是小编给大家介绍的解决Mysql收缩事务日志和日志文件过大无法收缩问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • mysql二进制日志文件恢复数据库

    二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用户操作,使数据库恢复. 二进制日志文件的弊端 二进制日志文件开启后,所有对数据库操作的记录均会被记录到此文件, 所以,当长时间开启之后,日志文件会变得很大,占用磁盘空间. 使用二进制日志文件恢复数据库 开启日志文件 mysql默认是不开启日志文件的功能的,

  • MySQL中Binary Log二进制日志文件的基本操作命令小结

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与master同步. 1.开启binary log功能 需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可 eg: [mysqld] ...... log_bin = mysq

  • mysql日志文件在哪 如何修改MySQL日志文件位置

    MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面就教您修改MySQL日志文件位置的方法,供您参考. 今天需要改MySQL日志文件的位置,发现在/etc/my.cnf中怎么也改不了. 后来发现MySQL日志位是指定的: [root@localhost etc]# ps aux|grep mysqld root 11830 0.5 0.0 4524 1204 pts/0 S 03:03 0:00 /bin/sh /usr/bin/mys

  • MySQL日志文件详解

    概述 日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.本文主要描述MySQL的各种日志文件. MySQL日志文件分类 1.错误日志(Error Log) 2.二进制日志(Binary Log & Binary Log Index) 3.通用查询日志(query log) 4.慢查询日志(slow que

  • 教你自动恢复MySQL数据库的日志文件(binlog)

    如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据."mysqlbinlog:用于处理二进制日志文件的实用工具". 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径.如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出.启用二进制日志的选项为 --log-b

  • 解析mysql二进制日志处理事务与非事务性语句的区别

    在事务性语句执行过程中,服务器将会进行额外的处理,在服务器执行时多个事务是并行执行的,为了把他们的记录在一起,需要引入事务缓存的概念.在事务完成被提交的时候一同刷新到二进制日志.对于非事务性语句的处理.遵循以下3条规则: 1)如果非事务性语句被标记为事务性,那么将被写入事务缓冲. 2)如果没有标记为事务性语句,而且事务缓存中没有,那么直接写入二进制日志. 3)如果没有标记为事务性的,但是事务缓存中有,那么写入事务缓冲. 注意如果在一个事务中有非事务性语句,那么将会利用规则2,优先将该影响非事务表

  • Mysql日志文件和日志类型介绍

    日志文件类型 MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情: 日志文件 记入文件中的信息类型 错误日志 记录启动.运行或停止mysqld时出现的问题. 查询日志 记录建立的客户端连接和执行的语句. 更新日志 记录更改数据的语句.不赞成使用该日志. 二进制日志 记录所有更改数据的语句.还用于复制. 慢日志 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询. 默认情况下,所有日志创建于mysqld数据目录中.通过刷新日志,你可以强制 mys

  • 解决Mysql收缩事务日志和日志文件过大无法收缩问题

    一.MS SQL SERVER 2005 --1.清空日志       exec('DUMP TRANSACTION 数据库名 WITH NO_LOG') --2.截断事务日志:      exec('BACKUP LOG 数据库名 WITH NO_LOG') --3.收缩数据库文件(如果不压缩,数据库的文件不会减小      exec('DBCC SHRINKDATABASE(数据库名) ') --4.设置自动收缩      exec('EXEC sp_dboption 数据库名,autosh

  • 解决MYSQL连接端口被占引入文件路径错误的问题

    今天早上打算本地win7机器上用Wampserver搭建PHP环境,把自己的小程序配置上去.下载最新的wampserver 3.0.6版本安装后,发现mysql一直无法运行,以为是wampserver版本问题,随后又下载了相关2.4,2.5等相关版本安装,依旧没有解决,主要现象是mysql命令符中输入密码回车之后没有反应,随后命令符自动消失,另外就是在PHPMyAdmin中输入密码直接出现连接超时等的三条错误提示,或者是提示无法连接.后来我直接卸载了wampserver,改用phpStudy搭建

  • Mysql binlog日志文件过大的解决

    目录 1.相关binlog配置 2.binlog相关高级设置 2.1 改变binlog模式 2.2 相关SQL操作binlog 磁盘突然报错使用率过大,排查原因,发现mysql的binlog文件占用过大 命令 ls -l -h mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息.可以使用mysqlbin命令查看二进制日志的内容. 可以通过设置my.cof配置文件的方式限制binlog文件的输出. 1.相关binlog配置 vim

  • MySQL中二进制与重做日志文件的基本概念学习教程

    二进制日志 二进制日志记录了所有对数据库执行更改的操作,二进制主要有以下两种作用: 1.恢复(recovery)2.复制(replication) 二进制日志的启动:配置参数log-bin[=name],如果不指定name,则默认二进制日志文件名为主机名,后缀名为二级制日志的序列号,所在路径为数据库所在目录. 以index为后缀的文件为二进制日志的索引文件,用来存储过往生产的二进制日志. 和二进制日志相关的参数: max_binlog_size.binlog_cache_size.sync_bi

  • SqlServer创建自动收缩事务日志任务的图文教程

    目录 1. 进入SSMS 2. 填写名称 3.步骤 4. 选择高级 5. 新建计划 6. 填写计划 7. 新建完成点击确认 8. 刷新查看作业 9. 执行作业 总结 1. 进入SSMS 点击展开sqlserver代理,右键点击“作业”,然后选择新建作业. 2. 填写名称 名称可以随便填写,只要能表示这次作业任务就行了.简洁明了,让自己后面能看懂. 所有者选择sa或者windows用户.如果需要远程操作,建议选择sa账户.windows账户只支持本地登陆后操作执行. 说明也可以随便填写.自己明白就

  • 解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题

    application.properties 加入以下配置 #logback home logging.path=D:/logs/esb-producer logback.xml <property name="LOG_PATH" value="${LOG_PATH:- }" /> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.Rolling

  • 全面盘点MySQL中的那些重要日志文件

    目录 简介 日志分类 参数文件 错误日志文件 全量日志文件 慢查询日志 二进制日志文件 审计日志 中继日志 PID文件 Socket文件 数据库与表 存储引擎文件 简介 该篇文章对MySQL中的日志进行总结与简单介绍,不会涉及的太深.主要的目的是为了对MySQL中的日志文件有一个体系化的了解. 日志分类 MySQL中的日志文件,配置文件.错误日志文件.二进制文件(binary log).慢查询日志(slow-query-log).全量日志(genera log).审计日志(audit log).

  • 完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)

    机房一台服务器上的mysql运行一段时间了,突然出现了一个很奇怪的现象:重启后无法恢复了!准确情况是:启动mysql后随即就又关闭了. 查看mysql错误日志如下: 160920 22:41:41 mysqld_safe Starting mysqld daemon with databases from /home/MysqlData/ 2016-09-20 22:41:41 0 [Note] /Data/app/mysql5.6.25/bin/mysqld (mysqld 5.6.25-lo

  • mysql中的7种日志小结

    MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slow query log) 6:一般查询日志(general log) 7:中继日志(relay log) 其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义. 一.重做日志(redo log) 作用: 确保事务的持久性.re

  • Sqlserver2005日志文件太大如何减小

    Sqlserver2005日志文件太大,使其减小的方法如下所示: 运行下面的三行 dbName为数据库名: backup log dbNamewith NO_LOG backup log dbNamewith TRUNCATE_ONLY DBCC SHRINKDATABASE(dbName) 日志文件减小到1MB sql server清空日志文件2011-04-06 23:05 1: 删除LOG 1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库 2:删除LOG文

随机推荐