美文网首页
MySQL基础

MySQL基础

作者: 显卡hg | 来源:发表于2017-12-13 23:00 被阅读0次

    认识MySQL日志

    • 错误日志
      • --log-error
      • host_name.err
      • error.log
      • 默认在datadir下
    • 慢查询日志
      • --slow_query_log
      • --long_query_time
      • host_name-slow.log
      • slow_log
      • mysqldumpslow
      • pt-query-digest
    • 常规日志
      • --general_log
      • host_name.log
      • general_log
    • 二进制日志
      • --log_bin
      • --expire-log-days
      • host_name-bin.000001
      • mysqlbinlog
      • binlog2sql
      • binary log什么时间刷新
        • 达到max_binlog_size
        • 执行flush logs;命令
        • 服务器重启,会扫描binlog.seq,并生成一个最后的binlog.seq+1的binlog文件
      • 二进制日志记录的格式
        • 建议binlog_format=row
      • 查询二进制日志文件
        • show binary logs 列出当前的日志文件及大小
        • show master status;显示MySQL当前的日志及状态(需要super,replication,client权限)
        • show binlog events in 'mysql-bin.000010';
          • mysql的二进制日志是以’事件‘(event)为单位存储到日志中,一个insert,update,....有多个事件组成
          • 专业名词:日志文件:mysql-bin.000010,字节偏移量(位置)
        • 一个dml语句基本事物包括哪些events
          • GTID
          • query
          • table_map
          • write_rows
          • xid
        • 一个ddl语句基本事物包括哪些events
          • GTID
          • query
      • 查看二进制日志
        • 二进制格式,无法用文本查看
        • 日志以紧凑二进制格式存储,以事件组合
        • 使用mysqlbinlog查看
          • mysqlbinlog -v --base64-out-put=decode-rows mysql-bin.000010|more
          • mysqlbinlog -v --base64-out-put=decode-rows mysql-bin.000010 mysql-bin.000011
          • --start-positon 在哪个位置开始
          • --stop-position 在那个位置结束
          • 可以将这个命令的参数好好看一下
      • 二进制日志维护
        • 删除二进制日志
        • 基于时间删除日志
          • set global expire_logs_days=7;
          • purge binary logs before now() -interval 3 days;
        • 根据文件名删除
          • purge binary logs to 'mysql-bin.000010';
        • 注意:主库purge时要确保日志已经传到从库上了,否则复制会出现问题,还有这个命令不会写到binlog中,所以从库是不会删除任何东西的
    • 中继日志
      • hostname-relay.log
      • 这里如果使用默认配置,主机名修改后主从复制会出问题,因为sql线程找不到relay.log了,需要注意
      • relay_log_purge relay-log消费完了就清理掉
      • relay_log_space_limit reloy-log超过多少就不去master拉取日志了,可能会导致日志没同步过来的情况,特殊有需求才开
    • 审计日志
      • audit_log
      • audit_log_file
      • audit.log
      • 官方收费组件,需要购买企业版
      • 基于策略的日志记录
      • 通过audit_log_policy选项设置
      • 提供日志记录选项ALL,NONE,LOGINS或QUERIES
      • 默认为ALL
      • 在日志文件中生成一个服务器活动审计记录
      • 内容取决于策略,可能包括:
        • 在系统上发生的错误的记录
        • 客户机连接和断开连接的时间
        • 客户机在连接期间执行的操作
        • 客户机访问的数据库和表

    MySQL DBA日常管理命令

    • 总览
      • 5.7新增加的sys schema,可以去官方手册上面学习,叶老师博客上有翻译
      • 认识information_schema数据库,这个数据库是memory引擎的,在ibdata1中
      • 学习利用information_schena的字典信息生成语句
        • ps:information_schema相当于MySQL的中央信息库模式和模式对象,服务器的统计信息(状态变量,设置,连接),该库不持久化,'虚拟数据库'可以通过select访问
    • information_schema
      • 常见用法
        • select table_name , engine from information_schema.tables where table_schema = 'xxx';
        • select character_set_name,collation_name from information_schema.collation where id_default='Yes';
        • select table_schema,count(*) from information_schema.tables group by table_schema;
        • ps:information_schema是只读库

    show语句及相关字典查询

    • 核心语句
      • show databases;
      • show tables;
      • show processlist;
      • show create table table_name;
      • show index from table_name;
      • show open tables; #查看打开了哪些表
      • show table status;
      • show grants for user;
      • help show; #忘了看帮助

    MySQL目录结构

    • 数据目录
      • data目录
        • auto.cnf #server-uuid
        • error.log #错误日志
        • ib_buffer_pool #insert_buffer
        • ibdata1 #系统表空间
        • ib_logfile0 #redolog
        • ibtmp1 #临时表文件
      • logs目录 #binlog目录
      • tmp目录
    • MySQL server目录
      • bin #管理命令目录
        • mysqld
        • mysql
        • mysqldump
        • mysqlbinlog
        • mysqladmin
        • mysql_config_edior
        • perror
        • mysqlslap #做性能测试
        • resolveip #ip解析,这个解析不对可能会连接不上数据库,可能发生的场景是将数据库目录拷贝到别的机器上启动后连接不上,可以用这个命令看一下解析是否出问题了
      • docs #文档文件
      • include #c语言头文件目录
        • /usr/local/mysql/bin/mysql_config文件内有c语言include目录地址,有些软件会用到这个文件去找到include目录和lib目录以及plugin目录等
      • lib #引用的库文件
        • 在lib目录中有个plugin目录,里面有一些MySQL的插件在里边,比如innodb引擎,半同步插件等
      • man #帮助手册目录,如果man命令找不到,可以执行以下命令:cp man/man* /usr/local/share/man/ -r
      • share #字符集和初始化sql
      • support_files #脚本目录
        • mysql.server #守护进程启动前启动
        • mysql-log-rotate #log切换脚本
        • mysql_multi.server #多实例脚本

    相关文章

      网友评论

          本文标题:MySQL基础

          本文链接:https://www.haomeiwen.com/subject/izltwxtx.html