数据库优化与备份详解

数据库优化

查询日志:
  general_log = ON| OFF#查询日志开关
  general_log_file localhost.log #查询日志的文件名字
  log_output TABLE | FILE | NONE #查询日志的存储形式
慢查询日志
  执行时长超出指定时间的查询操做

  slow_query_log = OFF|ON #开启慢查询日志
  slow_query_log_file = LOCALHOST-SLOW.log #慢查询日志的文件路径
  long_query_time #慢查询时长
  log_slow_rate_limit#若是要记录的慢查询日志很是多的话,会按照速率来记录,默认1秒记录一个
  log_slow_verbosity=full | query_plan #记录的详细级别
错误日志
  mysqld启动和关闭过程当中输出的事件信息
  mysqld运行中产生的错误信息
  event scheduler 运行一个event时产生的日志信息
  在主从复制架构中的从服务器上启动从服务器线程时产生的信息


  log_error = /var/log/mysql_error.log#指定错误日志的输出位置
  log_warnings 为0, 表示不记录告警信息。
  log_warnings 为1, 表示告警信息写入错误日志。
  log_warnings 大于1, 表示各种告警信息,例若有关网络故障的信息和从新链接信息写入错误日志。
二进制日志

  查看二进制日志:
    SHOW {BINARY | MASTER} LOGS
    SHOW BINLOG EVENTS [IN 'log_name']
    show master status;
  记录致使数据改变或者可能致使数据改变的SQL语句
  log_bin = OFF | ON
  log_bin_basename = /var/lib/mysql/mysql-bin

  binlog_format=STATEMENT|ROW|MIXED:二进制记录格式
    STATEMENT:基于“语句”记录
    ROW:基于“行”记录
    MIXED:让系统自行断定该基于哪一种方式进行
  sql_log_bin=1|0:是否启用二进制日志
  log_bin_index=PATH:二进制日志索引位置
  sync_binlog=1|0:设定是否启动二进制日志同步功能
  max_binlog_size=SIZE:单个二进制文件最大致积,默认为1G
  expire_logs_days=0#超过多少天就清除二进制日志,默认为0,表明不启用此功能
  二进制日志手动滚动:
    flush logs;
  二进制日志文件的构成:
    两类文件:
      日志文件:mysql-bin.xxxxx,二进制格式
      索引文件:mysql-bin.index,索引文件


  二进制日志格式:
    #190613 14:17:32 server id 1 end_log_pos 666 CRC32 0xeb1cde6b Query thread_id=9 exec_time=
    0 error_code=0
    use `testdb`/*!*/;
    事件发生的日期和时间:190613 14:17:32
    事件发生的服务器标识:server id 1
    事件的结束位置:end_log_pos 666
    事件的类型:Query
    事件发生时所在服务器执行此事件的线程ID:thread_id=9
    语句的时间戳与将其写入二进制文件中的时间差:exec_time=0
    错误代码:error_code=0
    事件内容:

    GTID:Global Transaction ID;
      专属属性:GTID
  mysqlbinlog:客户端命令工具
    mysqlbinlog [options] log_file ...
    --start-datetime=
    --stop-datetime=


    --start-position=
    --stop-position=
mysql

中继日志:
  复制架构中,从服务器用于保存主服务器的二进制日志中读取到的事件sql

事务日志:transaction log(ib_logfile0,ib_logfile1)
  innodb_log_files_in_group = 2 事务日志文件的个数,默认为2个事务日志文件
  innodb_log_file_size = 50331648(48m)事务日志文件的单个大小48m
  innodb_log_group_home_dir = ./ 事务日志文件的所在路径,默认就在mariadb的数据目录/var/lib/mysql
  事务型存储引擎自行管理和使用
    redo log : 重作日志
    undo log :撤销日志





备份和恢复:
  为何要备份?
    灾难恢复:硬件故障,软件故障,天然灾害,黑客攻击,误操做
    测试
    要注意的要点:
      能容忍最多丢失多少数据
      恢复数据须要在多场时间内完成
      须要恢复哪些数据

      (1)作还原测试,用于测试备份的可用性
      (2)还原演练

备份类型:
  彻底备份,部分备份
    彻底备份:整个数据集
    部分备份:只备份数据子集

  彻底备份、增量备份、差别备份
    增量备份:仅备份最近一次彻底备份或增量备份(若是有增量备份)以来变化的数据
    差别备份:仅备份最近一次彻底备份以来变化的数据;


  热备、温备、冷备
    热备:读写操做都可执行
    温备:读操做能够、写不行
    冷备:读写操做均不能执行

    MyISAM:温备,不能热备;
    Innodb:热备

  物理备份、逻辑备份
    物理备份:直接复制数据文件进行备份,与存储引擎无关
    逻辑备份:从数据库中“导出”数据库另存而进行备份
  备份时须要考虑的因素:
    持续多久
    备份过程的时长
    备份负载
    恢复过程的时长
  备份什么?
    数据
    二进制日志,innodb的事务日志
    代码(存储过程,存储函数,触发器,时间调度器)
    服务器的配置文件
  设计备份方案:
    数据集:彻底+增量
    备份手段:物理,逻辑


  备份工具的选择:
    mysqldump+复制binlog:
      mysqldump:彻底备份
      复制binlog中指定时间范围内的event:增量备份
    lvm2快照+复制binlog:
      lvm2快照:适用cp或者tar等作物理备份:彻底备份
      复制binlog中指定时间范围内的event:增量备份
  xtrabackup:
    由Percona提供的支持对InnoDB作热备(物理备份)工具
      彻底备份,增量工具数据库

相关文章
相关标签/搜索