展开

关键词

SQL Server AlwaysOn 日志收缩

言归正传,下面讲一下我们使用SQL Server中经常遇到的数据库日志爆满问题,尤其是部署较多的Citrix XenDesktop虚拟桌面项目,在上千点规模中,数据库日志增长是非常快的,在传统Mirror 环境中,我们采用脚本方式做了相应修剪,下面我们说一下在AlwaysOn中最简单的收缩方法。   SQL Server的日志只要备份后就会自动释放原有占用的空间,例如每周产生的日志为10GB,每周做一次备份,在磁盘上的日志永远都会保持在10GB左右。   因此有效的收缩办法为,针对SQL Server做事务日志的定期备份,此操作直接在SQL Server管理工具中制定维护备份计划即可。   在一般部署中,我们制定两个备份计划,一个完整备份、一个事务日志备份,并将备份按照安全要求保留一个月或更长时间,自动删除旧的备份。

1.4K20

MySQL表空间收缩

MySQL 8.0以前,存放在以.frm为后缀的文件里 MySQL 8.0以后,表结构定义存放在系统数据表中 --查看test库表t的信息 desc test.t; show columns from 如何减少空洞,收缩表空间? 重建表。 如何重建表? alter table t engine=InnoDB; MySQL5.6以前上面的DDL不是Online的,在5.6以后做了优化成了Online,5.6以后上述语句重建表的流程如下: 建立一个临时文件 ,扫描表t主键的所有数据页 用数据页中表t的记录生成B+树,存储到临时文件中 生成临时文件的过程中,将所有对表t的操作记录在一个日志(row log)文件中 临时文件生成后,将日志文件中的操作应用到临时文件 innodb,ALGORITHM=copy; Online和Inplace的关系 DDL过程如果是Online的,就一定是Inplace的 DDL过程如果是Inplace的,但不一定是Online的,比如MySQL8.0

25810
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL Server 2012 AlwaysOn集群日志收缩

    当数据库日志文件太大又没有磁盘空间可以备份的时候,采用如下方式截断并收缩日志: 注意:以下操作将会截断日志,导致只能恢复到最后一次全备的数据! 在主库服务器执行: BACKUP LOG 数据库名 TO DISK='NUL:'with STATS = 1 备份日志到空路径 dbcc loginfo 0f8597ea1d5fe5c3208005c6123894f81471609012 如果还是2,再执行一次上面的数据库日志备份语句,直到状态为0。 最后: DBCC SHRINKFILE (数据库名_log, 8192);

    1.6K40

    SQL 2005SQL 2008 收缩日志 清空删除大日志文件

    SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消: (SQL2005) 1 BackupLog DNName dumptransaction DNName 5 with 6 no_log 7 go 8 USE DNName 9 DBCC SHRINKFILE (2) (SQL2008): 在SQL2008中清除日志就必须在简单模式下进行 NO_WAIT 27 28 GO 29 30 ALTER DATABASE DNName 31 SET 32 RECOVERY FULL --还原为完全模式 33 GO 优点:此清除日志所运行消耗的时间短 ,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内 即可完成。 普通状态下LOG和DIFF的备份即可截断日志。 此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

    34710

    SQL Server 2012事务日志截断、回绕与收缩

    ======================================================================= 收缩事务日志文件的大小 收缩日志文件可删除一个或多个不包含逻辑日志任何部分的虚拟日志文件 在收缩事务日志文件时,将从日志文件的末端删除足够的不活动虚拟日志文件,以便将日志减小到接近目标大小。 如图。 ? 然后选择要收缩的文件类型为日志文件。如图。 ? ,他是日志文件收缩日志截断的最小单位,比如物理日志文件是400M,内部划分了4个100M的虚拟文件,收缩时你得到的是300M,200M,不可能得到239M,对于一个物理文件,会划分成多少个虚拟文件,这个由 =================================== 2014年6.27日补充 扩充数据库:可以通过预先的监控发现磁盘文件快满的情况,手动进行调整,手动调整的速度比自动增长要快得多;收缩数据库 :不建议收缩数据库,会影响I/O性能,不建议在业务繁忙的时间进行,可能会造成新的文件碎片;数据库的整体趋势是增长的,所以收缩的意义不大,除非是特别大的数据库现在变小了;实际上收缩日志文件也是没有什么意义的

    2.4K60

    利用图形界面对Sql2008做日志收缩

    网上已经有很多文章讲这个了,不过大多是教人如何利用命令来处理的,一直认为:对于能用图形界面搞定的事情,尽量就不用命令方式解决(记命令很伤脑细胞的) 1、打开数据...

    31250

    MYSQL日志-慢查询日志

    MySQL的慢查询日志,用于记录执行超过指定时长的SQL相关的信息,然而记录内容却不仅限于此。记录生成的log文件就是慢查询日志?是的,但也不仅限于此。 MySQL慢查询相关参数: 注:【以下介绍的所有参数均可通过静态配置和动态修改,查看及配置方式可参考文章:MySQL参数】 slow_query_log : mysql的慢查询记录功能不是默认开启的, 你是否有点小惊讶,说好的日志不就应该是一个log文件吗?然而并不是,MYSQL支持两种方式对慢查询信息记录,一种log文件的方式,另一种是表模式记录。 mysql库中默认创建了一张slow_log表,用来记录慢查询,表结构可以查看通过: show create table mysql.slow_log [image.png] 可以发现这居然是一个存储引擎为 总结:mysql慢查询不是默认开启的,需要修改参数slow_query_log=ON开启;慢查询中记录的不一定都是执行时间超过阈值的SQL也有可能是未使用到索引的SQL;慢查询并不一定是日志log文件方式存储

    27910

    MySQL日志

    MySQL日志记录了MySQL数据库日常操作和错误信息。MySQL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MySQL数据库的运行情况、用户的操作、错误的信息等。 MySQL日志分为以下四大类: 错误日志:记录mysql服务的启动,运行或停止mysql服务时出现的问题; 查询日志:记录建立的客户端的连接和执行的语句; 二进制日志:记录所有更改数据的语句,可以用于数据的复制 [root@mysql ~]# mysql -V mysql> status; mysql> select version(); 1、错误日志mysql数据库中,错误日志功能是默认开启的。 删除错误日志mysql5.5.7之前:数据库管理员可以删除很长时间之前的错误日志,以保证mysql服务器上的硬盘空间。mysql数据库中,可以使用mysqladmin命令开启新的错误日志。 2)查看二进制日志 MySQL二进制日志存储了所有的变更信息,MySQL二进制日志经常使用。

    31630

    Mysql日志

    my.cnf 是windows环境下的配置文件,my.ini是linux下的配置文件 没有此ini(配置)文件,Mysql能正常跑么? 查看慢日志是否开启 show variables like 'slow_query%'; image.png image.png 开启慢日志 set global slow_query_log='ON' // 查看全局会话慢日志时间,修改前后,一致。 慢日志有2种存储形式 一个默认的是File,一个是Table 查看慢日志的类型 show variables like '%log_output%'; image.png 设置慢日志的类型 设置为:FILE 例如: # 在my.ini文件内修改或添加 global slow_query_log = 1 slow_query_log_file = C:\phpStudy\PHPTutorial\MySQL

    6010

    mysql日志记录

    一.mysql二进制日志 配置如下: log-bin = /path/mysql-bin #其记录日志文件名为mysql-bin.index,mysql-bin.000001(注:重启或者单个文件超出限制会 like 'log_%'; #查看日志设置 查看二进制日志 show binary logs; #查看日志文件个数与文件名 mysqlbinlog filename #查看二进制文件内容 删除二进制日志 reset master; #删除全部二进制日志 二进制日志恢复文件 mysqlbinlog [--start-date="Y-m-d" --stop-date="Y-m-d"] filename | mysql -uroot -ppass 二、错误日志 配置如下: log-error = /path/error.log 查看状态 show variables like 'log_error'; 删除错误日志 = /path/general_query.log 删除错误日志 flush logs 或 mysqladmin -uroot -ppass flush-logs 删除文件后重新创建 四、慢查询日志

    27220

    MySQL日志介绍

    MySQL日志简介 MySQL日志主要分为六类: (1) 错误日志log_error:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题 (2) 查询日志general_log:记录简历的客户端连接和执行的语句 清楚过期日志的时间 二进制日志的开启方式: (1)指定日志路径 mysqld_safe --user=mysql --log-bin=[path] & 如果没有指定文件名 默认mysql-bin,默认路径为 = /var/log/mysql/mysql-bin.log.index --二进制日志索引的名称 relay_log= /var/log/mysql/mysql-bin.relay - --中继日志的名称 relay_log_index= /var/log/mysql/mysql-bin.relay.index ---中继日志索引的名称 二进制日志的查看方式: show binary 3.错误日志err_log 错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生严重错误时候的相关信息,在mysql中,错误日志非常有用,MySQL会将启动和停止数据库信息以及一些错误信息记录保存到错误日志文件中

    32520

    Mysql日志解析

    关于Mysql日志 splunk内置了两种mysql日志,分别是mysqld以及mysql_error mysqld_error Standard mysql error log标准的mysql错误日志 IN (27) AND xar_dd_itemid = 2 Mysql日志的配置 MySQL有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 常用命令 是否启用了日志 mysql>show variables like 'log_%'; 怎样知道当前的日志 mysql> show master status; 显示二进制日志数目 mysql> 删除错误日志: 在mysql5.5.7之前:数据库管理员可以删除很长时间之前的错误日志,以保证mysql服务器上的硬盘空间。mysql数据库中,可以使用mysqladmin命令开启新的错误日志。 如果设定了二进制日志的格式,却没有启用二进制日志,则MySQL启动时会产生警告日志信息并记录于错误日志中。

    87180

    mysql日志类型

    MySQL中共有4中日志:错误日志、二进制日志、查询日志和慢查询日志 一、错误日志   错误日志名 host_name.err,并默认在参数DATADIR指定的目录中写入日志文件。 需要定时清理日志文件,方法有:   (A) RESET MASTER 命令,删除所有BINLOG日志,新日志编号从 ”000001“开始。    (B) PURGE MASTER LOGS TO 'mysql-bin.******' 命令,删除’*******'之前的日志。    (D) 设置参数 --expire_logs_days=#, 设置日志的过期天数。过期的日子会自动被删除。 三、查询日志   记录了客户端的所有语句,默认文件名是 host_name.log。 四、慢查询日志   包含所有执行时间超过参数 long_query_time 所设置值的SQL语句的日志,注意:获得表锁定的时间不算作执行时间。默认文件名是 host_name-slow.log。

    29960

    mysql日志模块

    redo log 在MySQL中如果每次更新操作后都写要磁盘,即首先在磁盘中找到该条记录,再更新,整个过程I/O成本,查找成本都很高并发度很高的情况下对效率影响较大。 为了解决该问题,MySQL中使用到了WAL(Write-Ahead logging )写磁盘前先写日志。当一条记录需要更新的时候,InnoDB会先把记录写入redo log,等系统空闲时再写入磁盘。 binlog bin log为mysql server层固有的日志,用于归档。 其与redo log有以下三点不同: 1)、redo log 是InnoDB独有的,二binlog是MySQL Server层实现的,所有的引擎都可以使用。 2)、redo log是物理日志,记录的是每个数据页做了哪些修改,binlog是逻辑日志,记录的是这条语句的原始逻辑,比如修改某行的某个字段。

    26020

    mysql 系列:日志

    日志分类 在 mysql 里的日志种类有很多,从总体上来讲可以分为 Server 层 和 存储引擎层的(关于 mysql 的总体架构可以看这篇:mysql 系列:总体架构概述)。 在 Server 层里的日志分类如下: 错误日志 错误日志mysql 在启动、运行或停止时出现异常的日志。 当然,我们也可以在 my.cnf 里设置错误日志位置: [mysqld] log-error=错误日志位置 使用场景:像我们在启动 mysql 失败时,一般可以到错误日志里查看。 慢查询日志 慢查询日志用于记录在 mysql 里执行时间超过预期值的耗时语句,主要用于性能瓶颈分析。 而 redo log 是一个数据页的修改日志,偏向于结果的记录。 在 mysql 里每当执行一个事务时,并不会时时的将数据修改同步到硬盘上。

    12000

    MySQL(3)——日志

    MySQL日志:     mysql> SHOW [GLOBAL|SESSION] VARIABLES LIKE '%log%';     这样子可以看到所有关于日志的变量:         错误日志  mysql-bin.000001      mysql-bin.000001: MySQL replication log         这里就告诉我们这是一个复制的日志,由于不是ASCII,所以不能用 默认值显示mysql-bin.index中的第一个二进制日志内容         如果查看二进制文件会看到比这里更详细的内容 mysql> SHOW BINLOG EVENTS IN 'mysql-bin mysql> SET SESSION sql_log_bin=0;         临时关闭二进制日志 mysql> source  /tmp/a.sql 此路径mysql用户必须有权限访问 正确删除二进制日志  to 'mysql-bin.000026';         删除不包括26这日志文件的以前的所有日志

    19610

    MySQL日志管理

    MySQL日志管理 错误日志 配置方法: vim /etc/my.cnf [mysqld] log-error=/tmp/mysql.log 查看配置方式: show variables like '% log%error%'; 作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志。 例如:ELK 二进制日志 建议刚部署mysql数据库的时候就开启二进制日志 二进制日志不依赖于存储引擎的,依赖于sql层,记录和sql语句有关的信息 在sql层已经执行完成的语句,如果是事务,应当是已经完成的事务 一般不用 开启二进制日志 配置文件开启:   vim /etc/my.cnf   log-bin=/data/mysql-bin ---- 在全局打开,二进制日志的“总闸” 命令行开启:   set ; reset master; 将所有binlog日志删除,并重新生成,从000001开始 根据文件名删除日志: PURGE BINARY LOGS TO 'mysql-bin.000010'; 刷新二进制日志

    675120

    mysql日志管理

    binlog 是逻辑日志 会记录整个数据库运行期间变更性的,语句 1备份恢复必须依赖二进制日志 2复制环境必须依赖二进制日志 3分析大事务 配置 log_bin File_size 日志的大小,日志量当前日志文件偏移量 Encrypted 是不是加密的 binlog使用只会使用最后一个 show master status ; 当前在使用哪个binlog 文件,Position号是多少 整个日志里面的记录单元是evnet 每个evnet都有开始和结束位置点用,Position表示 show binlog events in 'mysql-bin.000004 =200000 --base64-output=decode-rows mysql-bin.000004 生产恢复痛点 1.跨度太大,起点难找 (一般备份加日志) 2. 日志文件记录了,所有库所有表的日志(可以用my2sql) gtid特性 是对于一个已提交事务的编号 ,并且是一个全局唯一的编号.

    11231

    MySQL 日志系统

    查询 SQL 语句执行回顾 mysql> select * from T where ID=10; 建立连接 查询缓存 语义语法分析 语句优化 执行执行,调用存储引擎接口查询数据 返回结果 日志模块 redo 这就是 MySQL 日志系统中的一个重要角色 redo log redo log 是一个可循环写的一个文件组。如一组 4 个文件 0 - 1 - 2 - 3 。 MySQL 整体来看有两块:一块是 Server 层,它主要做的是 MySQL 功能层面的事情;还有一块是引擎层,负责存储相关的具体事宜。 这两种日志有以下三点不同。 redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。 “追加写”是指 binlog 文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。 一条更新 SQL 语句执行过程 通过一条更新 SQL 来了解学习 MySQL日志系统。

    14530

    MySQL 事务日志

    然后再写入数据库文件中 写入数据库文件的操作是重做事务日志中已提交的事务操作的记录 事务日志 事务的日志主要分为三类:redo log,undo log和binlog 日志组 在写日志的时候, 因为 MySQL 是工作在用户空间的,MySQL 的 log buffer 处于用户空间的内存中。 MySQL 支持用户自定义在commit 时如何将 log buffer 中的日志刷 log file 中。这种控制通过变量innodb_flush_log_at_trx_commit 的值来决定。 如果 MySQL 程序 发生了崩溃,logbuffer 会发生丢失,但是 os buffer 还是存在。 如果整个服务器发生了宕机,那么 0 和 2 都会丢失 1s 的数据。 混合模式: 是以上两种模式的混合使用,MySQL 会根据执行的每一条具体的 sql 语句来区分对待记录的日志形式。

    49320

    相关产品

    • 云数据库 MySQL

      云数据库 MySQL

      腾讯云数据库MySQL是一种高性能、高可靠、高安全、可灵活伸缩的数据库托管服务,其不仅经济实惠,而且提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,为您简化 IT 运维工作,让您能更加专注于业务发展。

    相关资讯

    热门标签

    扫码关注腾讯云开发者

    领取腾讯云代金券