MySQL 日志管理
一、日志简介MySQL数据库中支持多种日志类型,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据,本节内容将带你了解MySQL数据库中的日志管理
二、日志分类
错误日志
查询日志
慢查询日志
二进制日志
中继日志
事务日志
滚动日志
三、日志详解1.错误日志1.1 错误日志作用
记录服务器运行中产生的错误信息
记录服务器启动、停止时产生的信息
如果服务器启动了复制进程,复制进程的信息也会被记录
记录event错误日志
1.2 查看错误日志查看mysql中错误日志的位置
在mysql命令行中查看
mysql> show variables like "log_error";
在bash命令行中使用mysqladmin查看
[root@db01 ~]# mysqladmin -uroot -p123 variables | grep -w "log_error"
1.3 设置错误日志修改mysql的主配置文件/etc/my.cnf,在服务端中添加如下配置:
[root@db01 ...
MySQL 事务详解
1.事务介绍
在 MySQL 中只有使用了 InnoDB 存储引擎的数据库或表才支持事务
事务主要针对DML语句(UPDATE、INSERT、DELETE)
一组数据操作执行步骤,这些步骤被视为一个工作单元
用于对多个语句进行分组
可以在多个客户机并发访问同一个表中的数据时使用
在事务中,所有步骤都执行成功或都执行失败
如果所有步骤正常,则执行
如果步骤出现错误或不完整,则取消
2.事务ACID特性
原子性(Atomicity,或称不可分割性)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性(Consistency)
在事务开始之前和事务结束以后,数据库的完整性没有被破坏。例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。
隔离性(Isolation,又称独立性)
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致 ...
MySQL 表空间管理
1.表空间概念InnoDB 存储引擎可将所有数据存放于 ibdata* 的共享表空间,也可将每张表存放于独立的 .ibd 文件的独立表空间.共享表空间以及独立表空间都是针对数据的存储方式而言的。
MySQL从5.5版本以后出现共享表空间概念,在MySQL5.6版本中默认使用的是独立表空间。
表空间的管理模式的出现是为了数据库的存储更容易扩展。
共享表空间
某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。 默认的文件名为:ibdata1 初始化为10M。
独立表空间
每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件。 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。
2.共享表空间2.1 查看共享表空间
物理文件查看
$ cd /usr/local/mysql/data$ ll ibdata*-rw-rw---- 1 mysql mysql 79691776 Jun 17 16:26 ibdata1
在数据库命令 ...
MySQL 多种结构介绍
MySQL 体系结构
连接层
验证用户身份
提供了两种连接方式(TCP/IP连接、socket连接)
建立与SQL层交互的线程
SQL 层
接收连接层传过来的SQL语句,如DDL、DML和存储过程等。并把结果返回给连接层。
验证SQL语句的语法、语义。
解析器:解析SQL语句,最终生成执行计划。
优化器:从多个执行计划中选出最优的一条。
执行器:执行选出来的最优计划。
建立一个与存储引擎层交互的线程。
执行SQL获取存储引擎层传来的数据,结构化成表格。
如果有缓存的化,会把数据写入到缓存。
记录执行日志(binlog)
存储引擎层
接收SQL层传过来的执行语句
与磁盘交互,进行数据的读取、存储,将数据返回给SQL层
MySQL 逻辑结构
库
表:元数据 + 真实数据行
元数据:列 + 其他属性
列:列名 + 数据类型 + 约束(非空、主键、默认值)
MySQL 物理结构数据物理结构mysql最底层就是数据文件,可以手动在data目录下创建目录,数据库中就能看到这个库。
MySQL的最底层的物理结构是数据文件,也就是说与存储引擎层打交道的文件,是 ...
MySQL 用户及权限管理
1.mysql用户的定义在mysql中,用户由用户名和主机域组成的。
1.1 用户名的写法
mysql> create user test1@'localhost';
注意:用户名不要以数字、符号开头,如若一定要这么写,给用户名加上引号才能创建用户。
1.2 用户中的主机域的写法
单个主机地址写法
127.0.0.1::1localhostdb01
范围型主机地址写法
172.16.1.%172.16.%.%172.%.%.%%172.16.1.5%172.16.1.0/255.255.255.0
其中%代表所有,如172.16.1.%即代表172.16.1.0~172.16.1.255这个范围内的所有地址
2.用户管理2.1 创建用户
mysql> CREATE USER test2@'localhost' IDENTIFIED BY '123';Query OK, 0 rows affected (0.00 sec)
2.2 查看数据库中得所有用户
mysql> SELECT User,H ...
PHP 无法连接 MySQL 问题
问题描述今天在一台新的服务器中安装了php7.2,mysql-5.6后。测试用php连接mysql时发现无论如何php都连接不上mysql数据库,排除了数据库账号错误,并且php已经安装了连接数据库的mysqlnd扩展。
错误排查使用php连接测试脚本,查看到底是什么错误导致php连接不上mysql的。
以下是php连接mysql的php测试脚本db-connect-test.php
<?php$dbname = 'mysql';$dbuser = 'root';$dbpass = '1234';$dbhost = 'localhost';$connect=mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);// 检查连接if (!$connect){ die("连接错误: " . mysqli_connect_error());} die("连接成功...\n");?>
...
MySQL 误删登录用户故障解决
1.模拟误删用户表的用户1.1 查看下当前用户表的用户mysql> SELECT User,Host FROM mysql.user;+------+-----------+| User | Host |+------+-----------+| root | 127.0.0.1 || root | db02 || root | localhost |+------+-----------+3 rows in set (0.00 sec)
1.2 误删所有用户mysql> DELETE FROM mysql.user WHERE 1=1;Query OK, 3 rows affected (0.00 sec)
查看误删后的用户表,所有用户都被删除了。
mysql> SELECT User,Host FROM mysql.user;Empty set (0.00 sec)
1.3 重新登录数据库虽然数据库中用户表的所有用户都被删除了,但是现在还可以继续使用root用户登录数据库(注意不能重启数据库)。一旦重启数据库就无法登录数据库了。
重启后登 ...
MySQL · SQL 语句
一、SQL语言的分类SQL语言分为四大类:
DDL (Data Definition Language) 数据定义语言
DML (Data Manipulation Language) 数据操纵语言
DQL (Data Query Language) 数据查询语言
DCL (Data Control Language) 数据控制语言
二、DDL数据定义语言DDL 的针对对象是:库、表。
主要有以下几个 SQL 命令:CREATE、DROP、USE、SHOW、ALTER、ADD 等。
2.1 针对库的操作2.1.1 创建库 CREATE
查看语法
mysql> HELP CREATE DATABASEName: 'CREATE DATABASE'Description:Syntax:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ...create_specification: [D ...