了解和正确维护MySQL日志_MySQL
前段时间自己给自己挖了坑,为了优化MySQL数据库配置在运行有InnoDB的MySQL数据库中修改了my.cnf文件中关于InnoDB的部分配置,尽管是在关机的情况下操作的,但依旧忽略了InnoDB对日志文件(如ibdata1、ib_logfile0、ib_logfile1、ib_logfile2)强大的依赖性,删掉这些特殊的日志文件意味着对InnoDB的破坏,可能导致数据库无法启动和恢复。从MySQL中文手册上摘录了部分有用的知识点整理如下。
MySQL日志简介
MySQL共有5种不同的日志类型,分别为错误日志、通用查询日志、中继日志、二进制日志和慢日志。其中错误日志、
日志文件 | 记入文件中的信息类型 |
错误日志 | 记录启动、运行或停止mysqld时出现的问题。 |
查询日志 | 记录建立的客户端连接和执行的语句。 |
中继日志 | 从主复制服务器上接受到的数据变化。 |
更新日志 | 记录更改数据的语句。不赞成使用该日志。(新版本已经废弃) |
二进制日志 | 记录所有更改数据的语句。还用于复制。 |
慢日志 | 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。 |
错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
查询日志包含了所有连接和语句,能确切地知道某一个客户端发送给mysqld哪些语句。
查询日志还包含所有语句,而二进制日志不包含只查询数据的语句,如果想要记录所有语句(例如,为了识别有问题的查询),你应使用查询日志。
二进制日志以一种更有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息,还包含关于每个更新数据库的语句的执行时间信息。
二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。
二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。
如果当前的二进制日志大小达到max_binlog_size,还会自动创建新的二进制日志,但一个事务产生的二进制日志有可能会超过max_binlog_size。
可以用RESET MASTER语句删除所有二进制日志文件,或用PURGE MASTER LOGS只删除部分二进制文件。例如先查看现有的二进制文件,SHOW BINARY LOGS,再删除某些二进制文件,PURGE BINARY LOGS TO 'mysql-bin.000009'。
慢查询日志可以用来找到执行时间长的查询,可以用于优化。但是,检查又长又慢的查询日志会很困难。要想容易些,你可以使用 mysqldumpslow 命令获得日志中显示的查询摘要来处理慢查询日志。
日志维护
MySQL服务器可以创建各种不同的日志文件,从而可以很容易地看见所进行的操作。但是,你必须定期清理这些文件,确保日志不会占用太多的硬盘空间,否则很短的时间内就会把数据库磁盘吃满。
数据库备份经验
内容较多,占用空间较大的数据库在导出的过程中可能仅需要比较短的时间,通常一小时内就能备份完成,但恢复时会花掉很多时间,往往超过数小时。因此有必要及时删减数据库中的无用的信息,甚至设计数据库时考虑和标注清楚,那些数据是相对不重要的。如果备份时能将日志文件切断就更好了。
可以使用mysql-log-rotate脚本将日志文件进行切割。你可以通过mysqladmin flush-logs或SQL语句FLUSH LOGS来强制MySQL开始使用新的日志文件(不适用于二进制日志,要清除二进制日志参考上面的RESET MASTER或PURGE BINARY LOGS语法)。
当CPU为单核或性能不足时,iowaite的值会很大,表明CPU在等待磁盘写入的过程中花费了太多的时间,这时就有必要增加CPU的配置。如下图所示,%wa数值是%us的近10倍,说明磁盘IO开销比较严重。
附:关于InnoDB存储引擎
存储引擎比较:

不一定要使用相同的存储引擎,每个表可以使用不同的存储引擎。
InnoDB的中文参考资料可以参见 http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb
InnoDB是为处理巨大数据量时的最大性能设计,被用在众多需要高性能的大型数据库站点上。
被InnoDB存储引擎管理的两个重要的基于磁盘的资源是InnoDB表空间数据文件和它的日志文件。
如果你指定无InnoDB配置选项,MySQL将在数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。
要为一个主服务器建立一个新服务器,你不得不复制InnoDB表空间和日志文件,以及InnoDB表的.frm文件,并且移动复件到从服务器。
如果你可以关闭主服务器或者一个存在的从服务器。你可以采取InnoDB表空间和日志文件的冷备份,并用它来建立一个从服务器。要不关闭任何服务器来建立一个新的从服务器,你也可以使用非免费(商业的) InnoDB热备份工具 。
关于移动、备份和恢复InnoDB,可以参考InnoDB的中文参考资料: http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#backing-up

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











전체 테이블 스캔은 MySQL에서 인덱스를 사용하는 것보다 빠를 수 있습니다. 특정 사례는 다음과 같습니다. 1) 데이터 볼륨은 작습니다. 2) 쿼리가 많은 양의 데이터를 반환 할 때; 3) 인덱스 열이 매우 선택적이지 않은 경우; 4) 복잡한 쿼리시. 쿼리 계획을 분석하고 인덱스 최적화, 과도한 인덱스를 피하고 정기적으로 테이블을 유지 관리하면 실제 응용 프로그램에서 최상의 선택을 할 수 있습니다.

InnoDB의 전체 텍스트 검색 기능은 매우 강력하여 데이터베이스 쿼리 효율성과 대량의 텍스트 데이터를 처리 할 수있는 능력을 크게 향상시킬 수 있습니다. 1) InnoDB는 기본 및 고급 검색 쿼리를 지원하는 역 색인화를 통해 전체 텍스트 검색을 구현합니다. 2) 매치 및 키워드를 사용하여 검색, 부울 모드 및 문구 검색을 지원합니다. 3) 최적화 방법에는 워드 세분화 기술 사용, 인덱스의 주기적 재건 및 캐시 크기 조정, 성능과 정확도를 향상시키는 것이 포함됩니다.

예, MySQL은 Windows 7에 설치 될 수 있으며 Microsoft는 Windows 7 지원을 중단했지만 MySQL은 여전히 호환됩니다. 그러나 설치 프로세스 중에 다음 지점이 표시되어야합니다. Windows 용 MySQL 설치 프로그램을 다운로드하십시오. MySQL의 적절한 버전 (커뮤니티 또는 기업)을 선택하십시오. 설치 프로세스 중에 적절한 설치 디렉토리 및 문자를 선택하십시오. 루트 사용자 비밀번호를 설정하고 올바르게 유지하십시오. 테스트를 위해 데이터베이스에 연결하십시오. Windows 7의 호환성 및 보안 문제에 주목하고 지원되는 운영 체제로 업그레이드하는 것이 좋습니다.

클러스터 인덱스와 비 클러스터 인덱스의 차이점은 1. 클러스터 된 인덱스는 인덱스 구조에 데이터 행을 저장하며, 이는 기본 키 및 범위별로 쿼리에 적합합니다. 2. 클러스터되지 않은 인덱스는 인덱스 키 값과 포인터를 데이터 행으로 저장하며 비 예산 키 열 쿼리에 적합합니다.

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

MySQL 데이터베이스에서 사용자와 데이터베이스 간의 관계는 권한과 테이블로 정의됩니다. 사용자는 데이터베이스에 액세스 할 수있는 사용자 이름과 비밀번호가 있습니다. 권한은 보조금 명령을 통해 부여되며 테이블은 Create Table 명령에 의해 생성됩니다. 사용자와 데이터베이스 간의 관계를 설정하려면 데이터베이스를 작성하고 사용자를 생성 한 다음 권한을 부여해야합니다.
