=mysql中的数据库
①information_schema 信息数据库:数据字典库--》资产库,存放MySQL里的资产,例如有多少表,库,视图,触发器,存储过程等
②performance_schema 性能架构库
③sys库: MySQL系统
④mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
====日志:默认是开启的=
riz
日志的存放路径:/data/mysql
root@sc-mysql mysql\]# pwd /data/mysql 存放日志的文件:sc-mysql.err 、 MySQL的配置文件存放路径:/ect/my.cnf \[root@sc-mysql mysql\]# cat /etc/my.cnf \[mysqld_safe
client
socket=/data/mysql/mysql.sock
mysqld
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
mysql
auto-rehash
prompt=\u@\d \R:\m mysql>
为什么需要日志?
日志用来做什么?
1.用来排错
2.用来做数据分析
3.了解程序的运行情况,是否健康--》了解MySQL的性能,运行情况。
1、==错误日志:默认开启=
1、名字是主机名.err:error:如:sc-mysql.err
路径会存放在/data目录下;存放在数据目录下.
root@sc-mysql mysql\]# service mysqld start Starting MySQL.Logging to '/data/mysql/sc-mysql.err'. SUCCESS! 2、error配置: 日志的命名使用_和-都可以: 如果指定错误日志的路径,主要目的地的目录需要给mysql用户写的权限: 使用绝对路径启动有问题: chown mysql:mysql /mysql_log/ 2、==通用日志:默认是关闭的= 1、缺点:消耗大量的磁盘空间;消耗cpu、内存、磁盘资源 优点:会记录所有的SQL操作---审计的作用 general 2、默认是不开启的。可以进行查看 root@(none) 09:36 mysql\>show variables like "general_log"; ±--------------±------+ \| Variable_name \| Value \| ±--------------±------+ \| general_log \| ON \| ±--------------±------+ 1 row in set (0.00 sec) 3、默认存放在数据目录下,名字是主机名.log。 临时开启: mysql\> set global general_log = 1; 1是开启 0 是关闭。修改为1:表示开启。 root@mysql 16:22 mysql\>select @@general_log; ±--------------+ \| @@general_log \| ±--------------+ \| 1 \| ±--------------+ 1 row in set (0.00 sec) 在配置文件中永久开启: #general log general_log general_log_file=/data/mysql/sanchuang_mysql_ge.log 3、=慢日志:记录消耗时长,默认关闭 slow:存放在数据目录下,名字是主机名+slow.log 作用:记录消耗时间比较长的SQL语句,为数据库性能提升提供了线索。 最近数据库压力(负载特别高),客户反应网站或者应用使用特别慢,领导要求你查明原因? 谁去优化?优化什么?:dba人员去优化、运维人员有能力也可以进行优化。 1.SQL语句需要优化,在数据库里启用慢日志,找出执行时间比较长的SQL 2.业务量太大了,硬件已经达到极限了 ,top、glances、dstat 默认的是10秒。 mysql\> show variables like "%long_query%"; ±----------------±---------+ \| Variable_name \| Value \| ±----------------±---------+ \| long_query_time \| 10.000 \| ±----------------±---------+ 1 row in set (0.00 sec) 修改为时长:在配置文件中进行修改: #slow query log slow_query_log = 1 long_query_time = 0.001 #标准 mysql\> show variables like "%long_query%"; ±----------------±---------+ \| Variable_name \| Value \| ±----------------±---------+ \| long_query_time \| 0.001000 \| ±----------------±---------+ 查看查询sql语句的时间为多长时间: ==二进制日志:binary 二进制日志是记录所有数据库表结构变更(例如CREATE、ALTER TBALE...)以及表数据更改(INSERT \\DELETE\\UPDATE\\UPDATE...)的二进制日志。 二进制日志:记录执行的SQL语句 对数据进行修改、增加、删除等。 默认没有开启。 开启二进制日志 查看二进制文件是否开启 root@(none) 10:42 mysql\>show variables like 'server_id'; ±--------------±------+ \| Variable_name \| Value \| ±--------------±------+ \| server_id \| 1 \| ±--------------±------+ 1 row in set (0.01 sec) 查看二进制文件是否开启 root@(none) 10:42 mysql\>show variables like 'log_bin'; ±--------------±------+ \| Variable_name \| Value \| ±--------------±------+ \| log_bin \| ON \| ±--------------±------+ 1 row in set (0.01 sec) 修改二进制文件为开启: 文件路径:/etc/my.cnf log_bin server_id = 1 加入到\[mysqld\]下面: \[mysqld
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
log_bin #日志文件名称,未指定位置,默认数据文件位置
server_id=1
server_id 是服务器的唯一标识,在主从复制的时候使用,每天服务器的id不能一样,不然会导致主从复制失败。
修改了之后,重启mysqld:
service mysqld restart
查看二进制文件所存放的文件:这里是存放在|:sc-mysql-bin.000001
root@(none) 11:46 mysql>show master status;
±--------------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±--------------------±---------±-------------±-----------------±------------------+
| sc-mysql-bin.000001 | 154 | | | |
±--------------------±---------±-------------±-----------------±------------------+
1 row in set (0.01 sec)
作用:
数据恢复:
二进制日志里会记录什么时间发送了什么事情
恢复数据的时候:
1.根据时间来恢复
2.根据位置来恢复Position
可以用来恢复数据:
查看二进制日志===
相关操作:
二进制文件相关操作
SHOW BINARY LOGS 查看所有的二进制文件和大小
SHOW MASTER STATUS 查看当前正在使用那个二进制文件和位置
SHOW BINLOG EVENTS
PURGE BINARY LOGS TO 'WANGJING-MYSQL-bin.000003'
=====mysqlbinlog:查看日志
mysqlbinlog -v:
mysqlbinlog -vv;信息更加多
mysqlbinlog -vv sc-mysql-bin.000001
查看进制日志文件的大小:
二进制日志文件的大小:当二进制文件达到最大值1G的时候,也会产生新的日志。
root@yejing 16:13 mysql>show variables like "%max_binlog%";
±---------------------------±---------------------+
| Variable_name | Value |
±---------------------------±---------------------+
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
±---------------------------±---------------------+
3 rows in set (0.00 sec)
root@yejing 16:13 mysql>select 1073741824/1024/1024/1024;
±--------------------------+
| 1073741824/1024/1024/1024 |
±--------------------------+
| 1.000000000000 |
±--------------------------+
1 row in set (0.00 sec)
===二进制都会产生新的日志
二进制文件达到最大值1G的时候,也会产生新的日志。
重启服务。
flush logs::刷新日志。
=position:记录具体的事件的位置,位置号=
time:时间点=
======删除所有的二进制日志
reset master:清除所有的二进制日志。
自动清除日志:https://blog.csdn.net/hanchao5272/article/details/79227325
root@TENNIS 15:01 sc-mysql>show variables like "%expire_logs_days%";
±-----------------±------+
| Variable_name | Value |
±-----------------±------+
| expire_logs_days | 7 |
±-----------------±------+
1 row in set (0.02 sec)
========产生新的二进制日志文件
二进制的格式:1、row level:默认
记录操作的每一行数据 --》表里的哪些行的数据发生了变化
root@(none) 11:13 mysql>select version();
±-----------+
| version() |
±-----------+
| 5.7.26-log |
±-----------+
1 row in set (0.00 sec)
root@(none) 11:13 mysql>show variables like 'binlog_format';
±--------------±------+
| Variable_name | Value |
±--------------±------+
| binlog_format | ROW |
±--------------±------+
1 row in set (0.00 sec)
2、statement level:记录用户输入的SQL语句