• 数据库优化与备份详解


    数据库优化

    查询日志:
      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=

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

    事务日志: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做热备(物理备份)工具
          完全备份,增量工具

  • 相关阅读:
    javascript平时小例子③(setInterval使用1)
    javascript平时小例子②(正则表达式验证邮箱)
    javascript平时小例子①(移动的小div)
    Ansible主机清单Inventory文件hosts
    K8s Deployment YAML 名词解释
    Linux自带神器logrotate详解
    Redis性能指标监控
    页面无任何操作30秒后退出1
    java 加法变乘法
    java 九数组分数
  • 原文地址:https://www.cnblogs.com/zhou2019/p/11046010.html
Copyright © 2020-2023  润新知