MySQL性能相关配置整理

一、mysql常见的存储引擎以及特点

客户端发出SQL指令后,首先在缓存中查询是否有可用记录,如果没有,指令被解析器解析再进行优化,然后送到存储引擎对数据库文件中的数据进行处理。

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。 本文描述内容仅在MariaDB10.3.27中进行了验证。

MariaDB root@(none):hellodb> select version();+-----------------+| version()       |+-----------------+| 10.3.27-MariaDB |+-----------------+1 row in setTime: 0.007s

查看MariaDB10.3.27支持的存储引擎

MariaDB root@(none):hellodb> show engines;+--------------------+---------+----------------------------------------------------------------------------------+--------------+-----+------------+| Engine             | Support | Comment                                                                          | Transactions | XA  | Savepoints |+--------------------+---------+----------------------------------------------------------------------------------+--------------+-----+------------+| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                        | NO           | NO  | NO         || MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                            | NO           | NO  | NO         || CSV                | YES     | Stores tables as CSV files                                                       | NO           | NO  | NO         || BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)                   | NO           | NO  | NO         || MyISAM             | YES     | Non-transactional engine with good performance and small data footprint          | NO           | NO  | NO         || ARCHIVE            | YES     | gzip-compresses tables for a low storage footprint                               | NO           | NO  | NO         || FEDERATED          | YES     | Allows to access tables on other MariaDB servers, supports transactions and more | YES          | NO  | YES        || PERFORMANCE_SCHEMA | YES     | Performance Schema                                                               | NO           | NO  | NO         || SEQUENCE           | YES     | Generated tables filled with sequential values                                   | YES          | NO  | YES        || InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES          | YES | YES        || Aria               | YES     | Crash-safe tables with MyISAM heritage                                           | NO           | NO  | NO         |+--------------------+---------+----------------------------------------------------------------------------------+--------------+-----+------------+

查看系统正在使用的存储引擎

MariaDB root@(none):hellodb> show variables like 'default_storage_engine';+------------------------+--------+| Variable_name          | Value  |+------------------------+--------+| default_storage_engine | InnoDB |+------------------------+--------+1 row in setTime: 0.007s

同的存储引擎都有各自的特点,以适应不同的需求,如表所示

功能MylSAMMEMORYInnoDBArchive
存储限制256TBRAM64TBNone
支持事务NoNoYesNo
支持全文索引YesNoNoNo
支持树索引YesYesYesNo
支持哈希索引NoYesNoNo
支持数据缓存NoN/AYesNo
支持外键NoNoYesNo

可以根据以下的原则来选择 MySQL 存储引擎:

  • 如果要提供提交、回滚和恢复的事务安全(ACID 兼容)能力,并要求实现并发控制,InnoDB 是一个很好的选择。
  • 如果数据表主要用来插入和查询记录,则 MyISAM 引擎提供较高的处理效率。
  • 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的 MEMORY 引擎中,MySQL 中使用该引擎作为临时表,存放查询的中间结果。
  • 如果只有 INSERT 和 SELECT 操作,可以选择Archive 引擎,Archive 存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive 存储引擎非常适合存储归档数据,如记录日志信息可以使用 Archive 引擎。
  1. MyISAM

    使用这个存储引擎,每个MyISAM在磁盘上存储成三个文件。

    (1)frm文件:存储表的定义数据

    (2)MYD文件:存放表具体记录的数据

    (3)MYI文件:存储索引

    frm和MYI可以存放在不同的目录下。MYI文件用来存储索引,但仅保存记录所在页的指针,索引的结构是B+树结构。下面这张图就是MYI文件保存的机制:

从这张图可以发现,这个存储引擎通过MYI的B+树结构来查找记录页,再根据记录页查找记录。并且支持全文索引、B树索引和数据压缩。

支持数据的类型也有三种:

(1)静态固定长度表

这种方式的优点在于存储速度非常快,容易发生缓存,而且表发生损坏后也容易修复。缺点是占空间。

(2)动态可变长表

优点是节省空间,但是一旦出错恢复起来比较麻烦。

(3)压缩表

上面说到支持数据压缩,说明肯定也支持这个格式。在数据文件发生错误时候,可以使用check table工具来检查,而且还可以使用repair table工具来恢复。

有一个重要的特点那就是不支持事务,但是这也意味着他的存储速度更快,如果你的读写操作允许有错误数据的话,只是追求速度,可以选择这个存储引擎。

MyISAM引擎特点

  • 不支持事务
  • 表级锁定
  • 读写相互阻塞,写入不能读,读时不能写
  • 只缓存索引
  • 不支持外键约束
  • 不支持聚簇索引
  • 读取数据较快,占用资源较少
  • 不支持MVCC(多版本并发控制机制)高并发
  • 崩溃恢复性较差
  • MySQL5.5.5前默认的数据库引擎

    MyISAM存储引擎适用场景

  • 只读(或者写较少)
  • 表较小(可以接受长时间进行修复操作)
  1. InnoDB

InnoDB是默认的数据库存储引擎,他的主要特点有:

(1)可以通过自动增长列,方法是auto_increment。

(2)支持事务。默认的事务隔离级别为可重复度,通过MVCC(并发版本控制)来实现的。

(3)使用的锁粒度为行级锁,可以支持更高的并发。

(4)支持外键约束;外键约束其实降低了表的查询速度,但是增加了表之间的耦合度。

(5)配合一些热备工具可以支持在线热备份;

(6)在InnoDB中存在着缓冲管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度;

(7)对于InnoDB类型的表,其数据的物理组织形式是聚簇表。所有的数据按照主键来组织。数据和索引放在一块,都位于B+数的叶子节点上。

当然InnoDB的存储表和索引也有下面两种形式:

(1)使用共享表空间存储:所有的表和索引存放在同一个表空间中。

(2)使用多表空间存储:表结构放在frm文件,数据和索引放在IBD文件中。分区表的话,每个分区对应单独的IBD文件,分区表的定义可以查看我的其他文章。使用分区表的好处在于提升查询效率。

对于InnoDB来说,最大的特点在于支持事务。但是这是以损失效率来换取的。

InnoDB引擎特点

  • 行级锁
  • 支持事务,适合处理大量短期事务
  • 读写阻塞与事务隔离级别相关
  • 可缓存数据和索引
  • 支持聚簇索引
  • 崩溃恢复性更好
  • 支持MVCC高并发
  • 从MySQL5.5后支持全文索引
  • 从MySQL5.5.5开始为默认的数据库引擎

二、MySQL查询缓存优化

缓存SELECT操作或预处理查询的结果集和SQL语句,当有新的SELECT语句或预处理查询语句请求,先去查询缓存,判断是否存在可用的记录集,判断标准:与缓存的SQL语句,是否完全一样(比较select语句的hash值),区分大小写。

  • 不需要对SQL语句做任何解析和执行,当然语法解析必须通过在先,直接从Query Cache中获得查询结果,提高查询性能。
  • 查询缓存的判断规则,不够智能,提高了查询缓存的使用门槛,降低效率。
  • 查询缓存的使用,会增加检查和清理Query Cache中记录集的开销。

此外,不是所有的SQL语句都是能够被缓存的,比如:

  • 查询语句中加了SQL_NO_CACHE参数。
  • 查询语句中含有获得值的函数,包含:自定义函数,如:NOW() ,CURDATE()、GET_LOCK()、RAND()、CONVERT_TZ()等。
  • 对系统数据库的查询:mysql、information_schema 查询语句中使用SESSION级别变量或存储过程中的局部变量。
  • 查询语句中使用了LOCK IN SHARE MODE、FOR UPDATE的语句,查询语句中类似SELECT …INTO 导出数据的语句。
  • 对临时表的查询操作。
  • 存在警告信息的查询语句。
  • 不涉及任何表或视图的查询语句。
  • 某用户只有列级别权限的查询语句。
  • 事务隔离级别为Serializable时,所有查询语句都不能缓存。

查询缓存相关的服务器变量

  • query_cache_min_res_unit:查询缓存中内存块的最小分配单位,默认4k,较小值会减少浪费,但会导致更频繁的内存分配操作,较大值会带来浪费,会导致碎片过多,内存不足。
  • query_cache_limit:单个查询结果能缓存的最大值,单位字节,默认为1M,对于查询结果过大而无法缓存的语句,建议使用SQL_NO_CACHE。
  • query_cache_size:查询缓存总共可用的内存空间;单位字节,必须是1024的整数倍,最小值40KB,低于此值有警报。
  • query_cache_wlock_invalidate:如果某表被其它的会话锁定,是否仍然可以从查询缓存中返回结果,默认值为OFF,表示可以在表被其它会话锁定的场景中继续从缓存返回数据;ON则表示不允许。
  • query_cache_type:是否开启缓存功能,取值为ON, OFF, DEMAND。

SELECT语句的缓存控制

  • SQL_CACHE:显式指定存储查询结果于缓存之中。
  • SQL_NO_CACHE:显式查询结果不予缓存。
  • query_cache_type参数变量
    • query_cache_type的值为OFF或0时,查询缓存功能关闭。
    • query_cache_type的值为ON或1时,查询缓存功能打开,SELECT的结果符合缓存条件即会缓存,否则,不予缓存,显式指定SQL_NO_CACHE,不予缓存,此为默认值。
    • query_cache_type的值为DEMAND或2时,查询缓存功能按需进行,显式指定SQL_CACHE的SELECT语句才会缓存;其它均不予缓存。

查询缓存相关的状态变量

  • Qcache_free_blocks:处于空闲状态 Query Cache中内存 Block 数。
  • Qcache_total_blocks:Query Cache 中总Block ,当Qcache_free_blocks相对此值较大时,可能用内存碎片,执行FLUSH QUERY CACHE清理碎片。
  • Qcache_free_memory:处于空闲状态的 Query Cache 内存总量。
  • Qcache_hits:Query Cache 命中次数。
  • Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次数,即没有命中的次数。
  • Qcache_lowmem_prunes:记录因为内存不足而被移除出查询缓存的查询数。
  • Qcache_not_cached:没有被 Cache 的 SQL 数,包括无法被 Cache 的 SQL 以及由于。
  • query_cache_type 设置的不会被 Cache 的 SQL语句。
  • Qcache_queries_in_cache:在 Query Cache 中的 SQL 数量。

命中率和内存使用率估算

  • 查询缓存中内存块的最小分配单位query_cache_min_res_unit :

    (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache

  • 查询缓存命中率 :

    Qcache_hits / ( Qcache_hits + Qcache_inserts ) * 100%

  • 查询缓存内存使用率:

    (query_cache_size – qcache_free_memory) / query_cache_size * 100%

查询优化路径图

根据优化路径,结合上面内容进行查询优化配置。尽管MySQL Query Cache旨在提高性能,但它存在严重的可伸缩性问题,并且很容易成为严重的瓶颈。自MySQL 5.6(2013)以来,默认情况下已禁用查询缓存,其不能与多核计算机上在高吞吐量工作负载情况下进行扩展。目前大多数应用都把缓存做到了应用逻辑层,比如:使用redis或者memcache。

三、MySQL各类日志

MySQL 的日志类型主要包括以下几种:

  • 事务日志:transaction log
    • 事务型存储引擎自行管理和使用,建议和数据文件分开存放,redo log和undo log
    • 事务日志的写入类型为“追加”,因此其操作为“顺序IO”;通常也被称为:预写式日志 write ahead
      logging
  • 错误日志 error log
  • 通用日志 general log
  • 慢查询日志 slow query log
  • 二进制日志 binary log
  • 中继日志 reley log,在主从复制架构中,从服务器用于保存从主服务器的二进制日志中读取的事件

3.1 Innodb事务日志相关配置:

  • innodb_log_file_size 50331648 每个日志文件大小
  • innodb_log_files_in_group 2 日志组成员个数
  • innodb_log_group_home_dir ./ 事务文件路径(默认/var/lib/mysql)
  • innodb_flush_log_at_trx_commit 默认为1

https://mariadb.com/kb/en/full-list-of-mariadb-options-system-and-status-variables/

在此网站可以确定是参数是服务器选项、全局变量还是会话变量。服务器选项需要在写在配置文件中(/etc/my.cnf /etc/my.cnf.d/*.cnf),并且需要重启服务(systemctl restart mariadb)。

MariaDB root@(none):(none)> show variables like 'innodb_log%';+-----------------------------+----------+| Variable_name               | Value    |+-----------------------------+----------+| innodb_log_buffer_size      | 16777216 || innodb_log_checksums        | ON       || innodb_log_compressed_pages | ON       || innodb_log_file_size        | 50331648 || innodb_log_files_in_group   | 2        || innodb_log_group_home_dir   | ./       || innodb_log_optimize_ddl     | OFF      || innodb_log_write_ahead_size | 8192     |+-----------------------------+----------+8 rows in setTime: 0.020s

事务日志性能优化

innodb_flush_log_at_trx_commit=0|1|2

1 此为默认值,日志缓冲区将写入日志文件,并在每次事务后执行刷新到磁盘。 这是完全遵守ACID特性。此模式安全性最高,性能最差。

0 提交时没有写磁盘的操作; 而是每秒执行一次将日志缓冲区的提交的事务写入刷新到磁盘。 这样可提供更好的性能,但服务器崩溃可能丢失最后一秒的事务。
2 每次提交后都会写入OS的缓冲区,但每秒才会进行一次刷新到磁盘文件中。 性能比0略差一些,但操作系统或停电可能导致最后一秒的交易丢失。

配置为2和配置为0,性能差异并不大,因为将数据从Log Buffer拷贝到OS cache,虽然跨越用户态与内核态,但毕竟只是内存的数据拷贝,速度很快。但二者安全性差异巨大,操作系统崩溃的概率相比MySQL应用程序崩溃的概率,小很多,设置为2,只要操作系统不奔溃,也绝对不会丢数据。

MariaDB root@(none):(none)> show variables like 'innodb_flush_log_at_trx_commit';+--------------------------------+-------+| Variable_name                  | Value |+--------------------------------+-------+| innodb_flush_log_at_trx_commit | 1     |+--------------------------------+-------+1 row in setTime: 0.018s

3.2 错误日志

错误日志中记录了mysqld启动和关闭过程中输出的事件信息,mysqld运行中产生的错误信息,event scheduler运行一个event时产生的日志信息,在主从复制架构中的从服务器上启动从服务器线程时产生的信息等。

#错误日志位置MariaDB root@(none):(none)> show variables like 'log_error';+---------------+------------------------------+| Variable_name | Value                        |+---------------+------------------------------+| log_error     | /var/log/mariadb/mariadb.log |+---------------+------------------------------+1 row in setTime: 0.019s#记录哪些警告信息至错误日志文件MariaDB root@(none):(none)> show variables like 'log_warnings';+---------------+-------+| Variable_name | Value |+---------------+-------+| log_warnings  | 2     |+---------------+-------+1 row in setTime: 0.019s

https://mariadb.com/kb/en/server-system-variables/#log_warnings

上面链接描述了1 2 3 4 9分别记录了那些内容。

3.3 通用日志

通用日志:记录对数据库的通用操作,包括:错误的SQL语句。通用日志可以保存在:file(默认值)或 table(mysql.general_log表)。

通用日志相关设置:

​ general_log=ON|OFF 开启、关闭通用日志

​ general_log_file=HOSTNAME.log 通用日志文件名字

​ log_output=TABLE|FILE|NONE 日志记录到何处

mariadb10.3.27通用日志相关参数默认值

MariaDB root@(none):(none)> show variables like 'general_log';+---------------+-------+| Variable_name | Value |+---------------+-------+| general_log   | OFF   |+---------------+-------+1 row in setTime: 0.019sMariaDB root@(none):(none)> show variables like 'general_log_file';+------------------+------------+| Variable_name    | Value      |+------------------+------------+| general_log_file | master.log |+------------------+------------+1 row in setTime: 0.025sMariaDB root@(none):(none)> show variables like 'log_output';+---------------+-------+| Variable_name | Value |+---------------+-------+| log_output    | FILE  |+---------------+-------+1 row in setTime: 0.023s

3.4 慢查日志

慢查询日志记录执行查询时长超出指定时长的操作,慢查询相关变量:

slow_query_log=ON|OFF #开启或关闭慢查询,支持全局和会话,只有全局设置才会生成慢查询文件
long_query_time=N #慢查询的阀值,单位秒
slow_query_log_file=HOSTNAME-slow.log #慢查询日志文件
log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk 上述查询类型且查询时长超过long_query_time,则记录日志,默认设置,不需要更改。
log_queries_not_using_indexes=ON #不使用索引或使用全索引扫描,不论是否达到慢查询阀值的语句是否记录日志,默认OFF,即不记录
log_slow_rate_limit = 1 #多少次查询才记录,mariadb特有
log_slow_verbosity= Query_plan,explain #记录内容
log_slow_queries = OFF #同slow_query_log,MariaDB 10.0/MySQL 5.6.1 版后已删除

MariaDB root@(none):(none)> show variables like 'slow_query_log';+----------------+-------+| Variable_name  | Value |+----------------+-------+| slow_query_log | OFF   |+----------------+-------+1 row in setTime: 0.026sMariaDB root@(none):(none)> show variables like 'long_query_time';+-----------------+-----------+| Variable_name   | Value     |+-----------------+-----------+| long_query_time | 10.000000 |+-----------------+-----------+1 row in setTime: 0.018sMariaDB root@(none):(none)> show variables like 'slow_query_log_file';+---------------------+-----------------+| Variable_name       | Value           |+---------------------+-----------------+| slow_query_log_file | master-slow.log |+---------------------+-----------------+1 row in setTime: 0.026sMariaDB root@(none):(none)> show variables like 'log_slow_filter';+-----------------+--------------------------------------------------------------------------------------------------------------------------------------+| Variable_name   | Value                                                                                                                                |+-----------------+--------------------------------------------------------------------------------------------------------------------------------------+| log_slow_filter | admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |+-----------------+--------------------------------------------------------------------------------------------------------------------------------------+1 row in setTime: 0.016sMariaDB root@(none):(none)> show variables like 'log_queries_not_using_indexes';+-------------------------------+-------+| Variable_name                 | Value |+-------------------------------+-------+| log_queries_not_using_indexes | OFF   |+-------------------------------+-------+1 row in setTime: 0.020sMariaDB root@(none):(none)> show variables like 'log_slow_rate_limit';+---------------------+-------+| Variable_name       | Value |+---------------------+-------+| log_slow_rate_limit | 1     |+---------------------+-------+1 row in setTime: 0.012sMariaDB root@(none):(none)> show variables like 'log_slow_verbosity';+--------------------+-------+| Variable_name      | Value |+--------------------+-------+| log_slow_verbosity |       |+--------------------+-------+1 row in setTime: 0.025s

慢查询分析工具的使用

  • 打开后,会显示语句执行详细的过程
    set profiling = ON

  • 查看语句,注意结果中的query_id值
    show profiles ;

  • 显示语句的详细执行步骤和时长

    Show profile for query #

  • 显示cpu使用情况

    Show profile cpu for query #

3.5 二进制日志

  • 记录导致数据改变或潜在导致数据改变的SQL语句
  • 记录已提交的日志
  • 不依赖于存储引擎类型

功能:通过“重放”日志文件中的事件来生成数据副本
注意:建议二进制日志和数据文件分开存放

二进制日志记录三种格式

  • 基于“语句”记录:statement,记录语句,默认模式( MariaDB 10.2.3 版本以下 ),日志量较少
  • 基于“行”记录:row,记录数据,日志量较大,更加安全,建议使用的格式
  • 混合模式:mixed, 让系统自行判定该基于哪种方式进行,默认模式( MariaDB 10.2.4及版本以上)
MariaDB root@(none):(none)> show variables like 'binlog_format';Reconnecting...+---------------+-------+| Variable_name | Value |+---------------+-------+| binlog_format | MIXED |+---------------+-------+1 row in setTime: 0.017s

二进制日志相关的服务器变量

sql_log_bin=ON|OFF: #是否记录二进制日志,默认ON,支持动态修改,系统变量,而非服务器选项
log_bin=/PATH/BIN_LOG_FILE: #指定文件位置;默认OFF,表示不启用二进制日志功能,上述两项都开启才可以
binlog_format=STATEMENT|ROW|MIXED: #二进制日志记录的格式,默认STATEMENT
max_binlog_size=1073741824: #单个二进制日志文件的最大体积,到达最大值会自动滚动,默认为1G,文件达到上限时的大小未必为指定的精确值
binlog_cache_size=4m #此变量确定在每次事务中保存二进制日志更改记录的缓存的大小(每次连接)
max_binlog_cache_size=512m #限制用于缓存多事务查询的字节大小。
sync_binlog=1|0: #设定是否启动二进制日志即时同步磁盘功能,默认0,由操作系统负责同步日志到磁盘
expire_logs_days=N: #二进制日志可以自动删除的天数。 默认为0,即不自动删除

MariaDB root@(none):(none)> show variables like 'sql_log_bin';+---------------+-------+| Variable_name | Value |+---------------+-------+| sql_log_bin   | ON    |+---------------+-------+1 row in setTime: 0.028s

二进制日志文件的构成

  • 日志文件:mysql|mariadb-bin.文件名后缀,二进制格式,如: mariadb-bin.000001
  • 索引文件:mysql|mariadb-bin.index,文本格式
[root@master my.cnf.d]# vim mariadb-server.cnf[mysqld]log_bin=/data/maradb-bin  [root@master data]# ls -ltotal 8-rw-rw---- 1 mysql mysql 329 Apr 10 05:27 maradb-bin.000001-rw-rw---- 1 mysql mysql  24 Apr 10 05:27 maradb-bin.index

查看mariadb自行管理使用中的二进制日志文件列表,及大小

SHOW {BINARY | MASTER} LOGS

MariaDB root@(none):(none)> show master logs;+-------------------+-----------+| Log_name          | File_size |+-------------------+-----------+| maradb-bin.000001 | 329       |+-------------------+-----------+1 row in setTime: 0.008s

查看使用中的二进制日志文件

SHOW MASTER STATUS

MariaDB root@(none):(none)> show master status;+-------------------+----------+--------------+------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| maradb-bin.000001 | 329      |              |                  |+-------------------+----------+--------------+------------------+1 row in setTime: 0.017s

在线查看二进制文件中的指定内容

SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

MariaDB root@(none):(none)> SHOW BINLOG EVENTS in 'maradb-bin.000001';+-------------------+-----+-------------------+-----------+-------------+------------------------------------------------+| Log_name          | Pos | Event_type        | Server_id | End_log_pos | Info                                           |+-------------------+-----+-------------------+-----------+-------------+------------------------------------------------+| maradb-bin.000001 | 4   | Format_desc       | 1         | 256         | Server ver: 10.3.27-MariaDB-log, Binlog ver: 4 || maradb-bin.000001 | 256 | Gtid_list         | 1         | 285         | []                                             || maradb-bin.000001 | 285 | Binlog_checkpoint | 1         | 329         | maradb-bin.000001                              |+-------------------+-----+-------------------+-----------+-------------+------------------------------------------------+3 rows in setTime: 0.011s

离线二进制日志的客户端命令工具

mysqlbinlog [OPTIONS] log_file…
--start-position=# 指定开始位置
--stop-position=#
--start-datetime= #时间格式:YYYY-MM-DD hh:mm:ss
--stop-datetime=
--base64-output[=name]
-v -vvv

[root@master data]# mysqlbinlog --start-position=285 --stop-position=329 /data/maradb-bin.000001 -v/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;/*!40019 SET @@session.max_insert_delayed_threads=0*/;/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;DELIMITER /*!*/;# at 4#210410  5:27:06 server id 1  end_log_pos 256 CRC32 0x1be1cb3e  Start: binlog v 4, server v 10.3.27-MariaDB-log created 210410  5:27:06 at startup# Warning: this binlog is either in use or was not closed properly.ROLLBACK/*!*/;BINLOG 'am9xYA8BAAAA/AAAAAABAAABAAQAMTAuMy4yNy1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqb3FgEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQADQgICAoKCgE+y+Eb'/*!*/;# at 285#210410  5:27:06 server id 1  end_log_pos 329 CRC32 0xbb19b113  Binlog checkpoint maradb-bin.000001DELIMITER ;# End of log fileROLLBACK /* added by mysqlbinlog */;/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;[root@master data]# 

切换日志文件

FLUSH LOGS;

清除与删除二进制日志操作要非常慎重

清除指定二进制日志

PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }

删除所有二进制日志,index文件重新记数

RESET MASTER [TO #]; #删除所有二进制日志文件,并重新生成日志文件,文件名从#开始记数,默认从
1开始,一般是master主机第一次启动时执行,MariaDB 10.1.6开始支持TO #

©著作权归作者所有:来自51CTO博客作者IPSI250的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 日志分析ELK平台部署第一节
  2. Nginx反向代理Tomcat访问时浏览器加载失败,出现 ERR_CONTENT_LENG
  3. mysql sync_binlog和 innodb_flush_log_at_trx_commit
  4. 【DG】物理DG中主库的LNSn、NSS、NSA进程的比较
  5. 手把手教你从0到1写一个简单的缓存框架
  6. Linux 日志管理——rsyslog&logrotate日志管理【CentOS】
  7. 如何优雅地展示机器学习项目!
  8. 技术干货 | mPaaS 框架下如何使用 Crash SDK 对闪退进行分析?
  9. Python_学习之项目日志管理

随机推荐

  1. php array_chunk函数怎么用
  2. php技术栈是什么
  3. php中的array_fill函数怎么用
  4. php怎么做页面静态化
  5. php中的array_combine函数怎么用
  6. php levenshtein函数怎么用
  7. php中的count_chars函数怎么用
  8. php中的array_search函数怎么用
  9. php中的str_word_count函数怎么用
  10. php中的array_slice函数怎么用