数据库分为:关系型数据库和非关系型数据库(两者区别点击查看另外一篇博文,此处不再赘述)
数据库基本概念
- 关系:存储数据的表的表名
- 元组:就是表中的一条记录(一行就是一条记录)
- 属性:就是表中的一个字段(一列就是一个字段)
- 域:字段的取值范围
- 关键字:可以唯一标识一条记录的字段(这也是一个或多个字段)
- 关系模型:表和表之间的关系
储存的数据
- 数据:所存储的真正有意义的数据
- 索引:指向特定数据的一个指针,通过索引,可以加速数据的读取过程,比如以找某个人的书,就是以作者为索引;如果找某一本书,就是以书名作为索引。
(按照什么作为查找条件,就将什么设置为索引)
客户端访问mysql(socket,Unix sock)
- socket
客户端和服务器端不在同一个主机,两者之间通过网络和套接 字进行通信 - unix sock
客户端和服务器端在同一个主机,两者基于共享内存的方式来实现的
mysql的配置文件
特殊:客户端和服务端的配置文件都是统一文件:my.cnf
实现机制:分为多段
[mysqld] mysql的服务器端要读取的配置段
[mysql] mysql的mysql客户端要读取的配置段
[mysqladmin] mysql的mysqladmin客户端要读取的配置段
[mysqldump] mysql的mysqldump客户端要读取的配置段
[client] mysql的所有的客户端都要读取的配置段
基础配置
port = 3306 监听的端口
socket = /tmp/mysql3306.sock 客户端和服务器端基于unix sock通信的时候要使用的问题
user = mysql 设置mysql的运行身份(也可以在启动mysql的时候设置--user=mysql)
basedir = /usr/local/mysql 指定mysql的安装位置(同上)
datadir = /data/mysql/mysql3306/data 指定mysql的数据库文件的存储位置(同上)
tmpdir = /data/mysql/mysql3306/tmp 指定临时文件的缓存位置
character-set-server = utf8 指定字符集类型
工作模式(交互、批处理)
交互模式:
登录mysql执行命令mysql -uroot -p123 xxx
批处理模式:
- 在bash中执行sql语句
mysql -uroot -p123 -h -P -S -e 'sql语句'
- 在shell中可以执行sql语句,也可以执行sql脚本
mysql -uroot -p123 -h -P -S <脚本
事务
事务就是一组sql语句的集合,这组sql语句要么同时成功,要么同时失败,如果事务中的sql语句,仅仅是部分成功,那么最终结果会回滚到执行事务之前的状态的
作用:用来实现维持数据的一致性
操作:
- 提交,让执行的sql语句真正的生效
- 回滚,将数据库恢复到执行sql之前的状态
事务日志
事务日志存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退和数据库模式变化。
-
事务日志文件的大小通常也是固定(my.cnf)
-
事务日志文件通常是有两个所组成的
-
事务日志很重要,保护措施
1. 用单独的磁盘保存事务日志文件 2. 存储事务日志的设备最好有冗余,比如用raid10
mysql的启动
这里重点说明一下在sentos7中MySQL的启动
- mysql.server方式启动的启动过程
mysql.server—>mysql_safe—>mysqld - mysql_safe方式启动的启动过程
mysql_safe—>mysqld
注意:以上两种启动方式本质上都是用mysqld启动,但是会先启动mysql_safe,mysql_safe是一个看门狗程序会自动监控mysql的工作状态,如果发现mysql关闭会尝试自动启动,在工作中这样会导致数据不一致。
所以建议直接用mysqld启动mysql务:/usr/local/mysql/bin/mysqld &
mysql的关闭
mysqladmin -uUserName -pPassword -hIP -Pport -S /path/to/socket shutdown
------做运维之前很矫情的小年轻-----