前段时间自己给自己挖了坑,为了优化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

MySQL은 비동기식, 반 동시성 및 그룹 복제의 세 가지 모드를 통해 데이터 복제를 처리합니다. 1) 비동기 복제 성능은 높지만 데이터가 손실 될 수 있습니다. 2) 반 동기화 복제는 데이터 보안을 향상 시키지만 대기 시간을 증가시킵니다. 3) 그룹 복제는 고 가용성 요구 사항에 적합한 다중 마스터 복제 및 장애 조치를 지원합니다.

설명 설명은 SQL 쿼리 성능을 분석하고 개선하는 데 사용될 수 있습니다. 1. 쿼리 계획을 보려면 설명 명세서를 실행하십시오. 2. 출력 결과를 분석하고 액세스 유형, 인덱스 사용량 및 조인 순서에주의를 기울이십시오. 3. 분석 결과를 기반으로 인덱스 생성 또는 조정, 조인 작업을 최적화하며 전체 테이블 스캔을 피하여 쿼리 효율성을 향상시킵니다.

논리 백업에 mysqldump를 사용하고 핫 백업을 위해 mysqlenterprisebackup을 사용하는 것은 mySQL 데이터베이스를 백업하는 효과적인 방법입니다. 1. MySQLDUMP를 사용하여 데이터베이스를 백업합니다 : MySQLDUMP-UROOT-PMYDATABASE> MYDATABASE_BACKUP.SQL. 2. Hot Backup : MySQLBackup- 사용자 = root-password = password-- backup-dir =/path/to/backupbackup에 mysqlenterprisebackup을 사용하십시오. 회복 할 때 해당 수명을 사용하십시오

느린 MySQL 쿼리의 주된 이유는 인덱스의 누락 또는 부적절한 사용, 쿼리 복잡성, 과도한 데이터 볼륨 및 불충분 한 하드웨어 리소스가 포함됩니다. 최적화 제안에는 다음이 포함됩니다. 1. 적절한 인덱스 생성; 2. 쿼리 문을 최적화합니다. 3. 테이블 파티셔닝 기술 사용; 4. 적절하게 하드웨어를 업그레이드합니다.

MySQL View는 SQL 쿼리 결과를 기반으로 한 가상 테이블이며 데이터를 저장하지 않습니다. 1) 뷰는 복잡한 쿼리를 단순화하고 2) 데이터 보안을 향상시키고 3) 데이터 일관성을 유지합니다. 뷰는 테이블처럼 사용할 수있는 데이터베이스에 저장된 쿼리이지만 데이터는 동적으로 생성됩니다.

mysqldiffersfromothersqldialectsinsyntaxforlimit, 자동 점유, 문자열 comparison, 하위 쿼리 및 퍼포먼스 앤 알리 분석 .1) mysqluse Slimit, whilesqlSerVerusestOpandoracleSrownum.2) MySql'Sauto_incrementContrastSwithPostgresql'serialandoracle '

MySQL 파티셔닝은 성능을 향상시키고 유지 보수를 단순화합니다. 1) 큰 테이블을 특정 기준 (예 : 날짜 범위)으로 작은 조각으로 나누고, 2) 데이터를 독립적 인 파일로 물리적으로 나눌 수 있습니다.

MySQL에서 권한을 부여하고 취소하는 방법은 무엇입니까? 1. 보조금 명세서를 사용하여 grantallprivilegesondatabase_name.to'username'@'host '와 같은 부여 권한; 2. Revoke 문을 사용하여 Revokeallprivilegesondatabase_name.from'username'@'host '와 같은 권한을 취소하여 허가 변경의 적시에 의사 소통을 보장하십시오.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

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

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

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