8.Mysql物理文件

1.数据文件

sql文件是MySQL语法文件,是可执行文件,不代表就是实际数据存储文件。sql文件!=存储文件

1.1 表结构存储文件

.frm存储的是关于表结构的文件(不包括索引:主要是字段以及字段类型)

1.2数据存储文件
myisam:

.MYD:存放数据
.MYI:存放索引(索引都是直接指向数据位置)

innodb:

.idb:独享空间(一个表一个空间)
.ibdata1:共享空间(很多个表共享一个空间)

  1. 数据和索引都是放在同一片区域
  2. innodb存储数据的方式是通过B+tree结构存储
  3. B+tree的构成就是通过索引构成,数据都存放在根节点

2.日志文件(6种 4种常用)

2.1 查询日志(query log)

一般不建议开启,是记录查询(select)主要的是一些特殊的sql。

2.2 慢查询日志(slow query log)

默认不开启:记录指定超出某个时间执行的SQL(单位:毫秒)
作用:在项目运行后对于一些特定SQL进行捕捉(执行慢的SQL),可以进行针对的项目优化
开启(my.ini添加):

slow_query_log = 1 # 开启
slow_query_log_file = xxxx.log # 日志文件名
long_query_time = 3 # 设置最大等待时间	

查看是否成功:

show variables like '%slow%'  # 查看
SELECT SLEEP(5); # 测试
2.3 错误日志(Error log)

记录MySQL服务运行过程中产生的异常信息,异常不是指SQL执行异常,是指服务异常。
可以用在MySQL服务器意外停止的时候查错。

2.4 二进制日志(binary log)

功能:记录写(update,insert, create, delete)操作的SQL
查看:

   show master status; # 查询状态- 使用的是哪个二进制文件
   show binary logs; # 查询所有二进制文件
   show binlog events; # 查询第一个二进制文件
   reset master;  #  清空二进制日志文件
   fush logs; # 刷新所有日志文件
   show binlog events in "mysql-bin.000001"# 查询指定日志的文件
   binlog_format = mixed # 设置二进制文件显示的格式
增量的数据备份及恢复:数据备份及恢复
主从的数据同步:

查看二进制日志是否开启状态:

show variables like '%log_bin%';

mysql-bin.000001 : 记录的就是写操作的SQL 会随服务的重启会重新创建一个
mysq-bin.000002 3 4 5…数据分摊,让这个文件不会过大.
mysql-bin.index : 就算是二进制的索引文件

开启二进制日志:

在my.ini文件中添加:

log_bin = mysql-bin
server-id = 1 # mysql运行过程会有一个服务的id;系统会默认分配一个服务的id,主要针对于binlog的写入有关系 -> 找到对应的服务id 需要手动配置
二进制日志数据恢复:
根据结点恢复:
mysqlbinlog --start-position = 154(开始结点) --stop-position=1225(结束结点) /backup/mysql-bin.000001(二进制文件地址) | mysql -u 用户名 -p 

根据时间恢复:
mysqlbinlog --start-datetime= '2019-10-22 22:20:00'(开始结点) --stop-datetime='2020-10-22 22:20:00'(结束结点) /backup/mysql-bin.000001(二进制文件地址) | mysql -u 用户名 -p 

根据文件恢复:
mysqlbinlog  /backup/mysql-bin.000001(二进制文件地址) | mysql -u 用户名 -p 
2.5 事务日志(redo,undo)
  1. redo log:是重做日志,提供前滚操作。通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。
  2. undo log:是回滚日志,提供回滚操作,用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。
2.6 中继日志

主要是在主从中去做运用,同时这个文件会记录主节的binlog中的信息,在从节点会根据这个文件去恢复数据。

3. 系统文件(my.cnf | my.ini | mysql.sock)

  • my.cnf:用来配置MySQL参数
  • my.ini :用来配置MySQL启动初始化参数
  • mysql.sock:是mysql的主机和客户机在同一host上的时候,使用unix domain socket做为通讯协议的载体,它比tcp快(mysql.sock文件出现异常: 可以切换为 mysql -u -p -h 127.0.0.1 连接方式)

4. 其他程序文件

  • mysqld :启动mysql服务
  • mysql : 连接mysql
  • mysqlbinlog:操作binlong日志文件,可以用来恢复数据
  • mysqladmin:超级管理员使用的
  • mysqldump:是用来mysql进行数据备份的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值