1.数据文件
sql文件是MySQL语法文件,是可执行文件,不代表就是实际数据存储文件。sql文件!=存储文件
1.1 表结构存储文件
.frm存储的是关于表结构的文件(不包括索引:主要是字段以及字段类型)
1.2数据存储文件
myisam:
.MYD:存放数据
.MYI:存放索引(索引都是直接指向数据位置)
innodb:
.idb:独享空间(一个表一个空间)
.ibdata1:共享空间(很多个表共享一个空间)
- 数据和索引都是放在同一片区域
- innodb存储数据的方式是通过B+tree结构存储
- 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)
- redo log:是重做日志,提供前滚操作。通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。
- 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进行数据备份的