一、检查工作
1.检查是否已经安装了mysql
rpm -qa|grep mariadb 检查是否安装了mariadb
rpm -e --nodeps mariadb-libs 有则删掉
2.查看mysql的依赖环境
rpm -qa|grep libaio
rpm -qa|grep net-tools
3.确认/tmp目录的权限
cd ..
ll
二、安装
下载安装包地址http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar,用 tar -xvf 包名 命令解压,共12个rpm文件,只安装4个。
1.依次安装如下rpm包
rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
2.查看版本
mysqladmin --version
3.mysql服务初始化
mysqld --initallize --user=mysql
用日志中的初始密码,登录,查看日志目录如下,其中root@localhost:后面即为初始密码
cat var/log/mysqd.log
登录命令
mysql -u root -p 日志中密码
初次登录必须修改root的密码才能有权限
ALTER USER 'root'@'localhost' IDENTITIED BY '123456'; (注意:sql语句要分号结束)
三、用户与权限
1.修改字符集
建库:create database mydb
显示建库命令的字符集: show create database mydb
建表tb后,插入中文的属性值,无法插入。必须进行如下三步修改:
1.修改配置文件字符集设置,修改/etc/my.cnf,最后一行设置如下
character_set_server=utf8
2.修改已有数据库字符集:alter database character set 'utf8';
3.修改已有表的字符集:alter table tb convert to character set 'utf8';
修改完成后,quit ,然后重启mysql服务 systemctl restart mysqld
2.创建新数据库用户
2.1创建一个zhangsan用户
create user zhangsan identified by '123456';
查看数据库用户:authentication_string:密码
2.2.创建用户并授权
grant all privileges on *.* to root@'%' identified by '123123';
四、逻辑架构
1.杂项配置
查看sql_mode配置:
SHOW VARIABLES LIKE 'sql_mode'
分组查询条件,select后面只能加分组字段、函数。
2.逻辑架构
2.1总体概览
下面将利用查询缓存和sql执行周期。来体验架构原理。
2.2.利用show profile查看sql的执行周期
开启查询缓存:
vim /etc/my.cnf
systemctl restart mysqld
profile配置:
查看profile配置,打开profile(查询缓存)配置
查看sql执行计划
查询sql 的执行周期:
show profile cpu, block io for query 5; 。如上图是5。
第一次查询的执行计划,未缓存,查询后存入缓存。
第二次查询:
查询计划:
查询周期:
show profile cpu,block,io for query 6;
上面语句的查询计划Query_ID分别为5和6,两次次查询所耗费时间相差明显,从查询周期中可以看出,第二次查询是直接从cache中查询到数据的,并未访问数据库表。这就是查询缓存的效果。
3.存储引擎
3.1.查看命令
3.2.各个引擎介绍
InnoDB:MySQL默认事务型引擎,被设计用来处理大量的短期的事务。一般应使用InnoDB。
MyISAM:提供了大量特性,包括全文索引、压缩、空间函数(GIS)等,但不支持事务和行级锁、缺陷是崩溃后无法安全恢复。
Archive:档案存储引擎只支持INSERT和SELECT操作,在MySQL5.1之前不支持索引。
Archive:适合日志和数据采集类应用
Blackhole:没有实现任何存储机制,他会丢失所有插入的数据,不做任何保存。但服务器会记录Blackhole表的日志,所以可以用于复制数据到备库、或者简单的记录到日志。但这种用于方式会碰到很多问题,因此不推荐。
CSV引擎可以将普通CSV文件作为MySQL的表来处理、但不支持索引。
CSV引擎可以作为一种数据交换的机制,非常有用。
CSV引擎的数据直接可以在操作系统里,用文本编辑器或excel读取。
Memory:如果要快速的访问数据,别切这些数据不会被修改,重启以后丢失也没有关系,那么Memory表是非常有用的。Memory表至少比MyISAM表快一个数量级。
Federated引擎是访问其他MySQL服务器的一个代理,尽管该引擎看起来提供了一种很好的跨服务器的灵活性,但也经常带来问题,因此默认是禁用的。
3.3.两个存储引擎对比
对比项 | MyISAM | InnoDB |
外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 | 操作数据时只锁一行,不影响其他数据,适合高并发的操作 |
缓存 | 缓存,只缓存索引,不缓存真实数据 | 缓存,不仅缓存索引,也缓存真实数据,对内存要求较高,而且内存大小对性能起决定作用 |
关注点 | 节省资源,消耗少、简单业务 | 并发写,事务,更大资源 |
默认安装 | Y | Y |
默认使用 | N | Y |
自带系统表使用 | Y | N |
3.4 阿里,淘宝用哪个
产品 | 价格 | 目标 | 主要功能 | 是否可投入生产 |
Percona Server | 免费 | 提供XtraDB存储引擎的包装器和其他分析工具 | XtraDB | 是 |
MariaDB | 免费 | 扩展MySQL以包含XtraDB和其他性能改进 | XtraDB | 是 |
Drizzle | 免费 | 提供比MySQL更强大的可扩展性和性能改进 | 高可用性 | 是 |
Percona Server为MySQL数据库服务器进行了改进,在功能和性能上交MySQL有着很显著的提升。该版本提升了在高负载情况下的InnoDB的性能,为DBA提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器的行为。