设为首页 收藏本站
查看: 653|回复: 0

[经验分享] MYSQL数据库-物理文件

[复制链接]

尚未签到

发表于 2018-10-7 08:50:29 | 显示全部楼层 |阅读模式
  物理文件组成
  
  日志文件:错误日志,查询日志,慢查询日志,事务日志,二进制日志
  日志是 mysql 数据库的觉要组成部分。日志文件中记录珩 mysql 数据库运行期间发生的变化,也就是说用来记录 mysql 数据库的客户端连接状况、 SQL 语句的执行情况和错误信息
  1.错误日志(error log)
  错误日志功能默认是开启的,存储在mysql数据库的数据目录中。
  错误日志文件通常名称为hostname.err    hostname表示服务器主机名
  错误日志信息也可以自己进行配置,通过log-error和log-warnings,前者是定义存储位置后者是定义是否将警告信息也定义到错误日志中
  注意,当首次安装mysql5.7时初始密码会保存在错误日志中
  2.二进制文件(binlog)
  用于记录修改数据或有可能引起数据改变的mysql语句,井且记录语句发生时间执行时长,操作的数据等
  可以通过    show global variables like '%log_bin%';    进行查询
  在主配置文件中加入     log-bin=file_name    打开记录功能,
  MYSQL会将所有修改数据库数据的query以二进制形式记录到日志文件中,日志文件中还包括每一条query所执行的时间,所消耗的资源,以及相关的事务信息
  binlog的附加选项参数
  “max_binlog_size”    设置binlog的最大存储上限,一般设置为512M或1G,不可以超过1G当日志达到上限时mysql会重新创建一个日志并继续开始记录
  “binlog-do-db=db_name”    对某个db_name(数据库)记录binlog,
  如果有了"binlog-do -db=db_name"参数的显式指定,MySQL会忽略针对其他数据库执行的query, 而仅仅记录针对指定数据库执行的query
  "binlog-ignore-db=db_name"与"binlog-do-db=db_name"完全相反,它显式指定忽略某个(db_name)数据库的binlog记录, 当指定了这个参数之后, MySQL会记录指定数据库以外所有的数据库的binlog。
  启动binlog记录后,mysql数据库目录下还会生成一个mysql-bin.index文件
  主要功能是记录所有Binary Log 的绝对路径, 保证MySQL各种线程能够顺利的根据它找到所有需要的Binary Log文件
  MYSQL复制主要有三种方式:
  基于SQL语句的复制(statement-based replication, SBR),
  基于行的复制(row-based replication, RBR),
  混合模式复制(mixed-based replication, MBR)
  对应的,binlog的格式也有三种: STATEMENT, ROW, MIXED。
  statenment模式(SBR)
  每一条会修改数据的sql语句会记录到binlog中,优点是不需要记录每一行的数据变化
  减少了binlog日志量,节约IO,提高性能,缺点是在某些情况下master-slave中的数据不一致
  row模式(RBR)
  不记录每条SQL语句的信息,仅记录那条数据被修改了,改成什么样子,缺点是会产生大量日志,日志暴涨
  mixed模式(MBR)
  混合模式,以上两种模式混合使用,一般的复制使用statement模式保存binlog,对于statement模式无法复制的操作使用row模式保存binlog,mysql会自行判断何时使用
  “sync_binlog=10”    设定多久同步一次二进制日志到磁盘文件中 0表示不同步,1表示每条语句都同步
  几种查询二进制日志信息的方法
  show binlog events\G;     查看所有二进制信息
  show bin log events in'mysql-bin.000001'\G;     查看指定的二进制信息
  show binlog events in 'mysql-bin.000001'from 727;     从指定的事件位置开始
  mysqlbinlog    mysql-bin.00001    在命令行下查看
  几种删除二进制日志信息的方法
  purge binary logs to 'mysql-bin.000006';    删除'mysql-bin.000006'之前的二进制文件
  reset master    删除所有二进制文件并重新生成一个为进制文件
  3.事务日志
  事务日志 (InnoDB 特有的日志)可以帮助提高事务的效率。
  使用事务日志, 存储引擎在修改表的数据时只需要修改其内存拷贝,再把修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O, 而不像随机I/O需要在磁盘的多个地方移动磁头, 所以采用事务日志的方式相对来说要快得多。
  事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。
  4.慢查询日志
  慢查询日志中记录的是执行时间较长的query,采用简单的文本格式记录方便查看
  通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化
  同样也是在主配置中加入
  “slow_query_log=1”开启,
  “slow_query_log_file=/usr/local/mysql/data/mysqld-slow.log”存储位置
  "long_query_time=1"    需要记录的时间,
  或者直接在数据库中直接定义。
  分析日志
  进入慢查询日志存放目录使用mysqldumpslow分析
  “mysqldumpslow     mysqld-slow.log”


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614162-1-1.html 上篇帖子: 【转】mysql索引相关 下篇帖子: 6、MySQL字段约束介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表