您的位置:首页 > 数据库 > SQL

第二十九天 mysql基础架构、编译安装、客户端工具、数据类型及服务器变量

2016-07-06 13:23 1041 查看
前面Linux运维基础告一段落,今天开始新一阶段的高级运维课程!

一、mysql基础知识
1、关系型数据库基础理论及MySQL数据库基础架构
关系型数据的基础理论
文件系统上:最初所有的数据都存储于文件中,每次读取文件时需要把所有的块数据都加载到内存中, 通过工具grep查询需要的数据,如果文件比较大(100万行),这时加载会很慢而且占用资源比较大。

数据管理软件:
层次模型、网状模型、关系模型、对象-关系模型、非关系模型

DBMS: Database Management System
mysql对每个客户请求都是由一个线程来响应,

2、MySQL核心概念及MariaDB编译安装

数据存储机制:
数据按索引顺序存储,索引顺序文件
数据是按需随机存放,堆文件

mysql核心部件组成:
connection pool(连接池) ,负责用户认证、线程重用、连接限制、内存检查、提供缓存
sql interface(sql 接口),负责DML、DDL、触发器各类功能
parser(分析器),对象权限检查,查询转换,把用户写的sql语句转换为数据库能执行的语句。
optimizer(优化器),优化mysql性能
caches&&buffers(缓存和缓冲),用于提升mysql I/O方面性能
之后就是选择使用存储引擎。存储引擎就可以直接读取文件系统中的文件。
MyISAM、InnoDB、Memory、Merge、Federated、CSV、Archive、Blackholl、Aria、SphinxSE、 TokuDB

二、安装方式: (rpm包、os vendor、mysql)(通用二进制格式)(源码包)
编译方式安装mariadb:
#yum install cmake 安装cmake编译环境
#useradd -r mysql

#mkdir /mydata/data -pv

#chown -R mysql.mysql /mydata/data

#cmake . -DMYSQL_DATADIR=/mydata/data -DWITH_SSL=system 默认路径/usr/local/mysql 安装选 项参考 《MySQL Compiling and Installation》
#make && make install
#cd /usr/local/mysql
#cp support-files/mysql.server /etc/rc.d/init.d/mysqld
#chmod +x /etc/rc.d/init.d/mysqld
#cp support-files/my-lange.cnf /etc/my.cnf

#vi /etc/my.cnf 定义路径 datadir=/mydata/data

#ls /mydata/data 查看,没有数据库 需要初始化数据库

#scripts/mysql_install_db --user=mysql --datadir=/mydata/data

#services mysqld start

#/usr/local/mysql/bin/mysql 访问mysql

#SHOW ENGINES 查看支持的收索引擎

#SHOW GLOBAL VARIABLES LIKE '%SSL%'

MySQL的数据文件:文件和日志
文件:数据文件和索引文件
日志:事务日志、二进制日志、查询日志、慢查询日志、错误日志、中继日志

MySQL的服务器变量:
SHOW {GLOBAL|SESSION} VARIABLES [LIKE CLAUSE];

MySQL的状态变量:
SHOW {GLOBAL|SESSION} STATUS [LIKE CLAUSE];

三、安装和访问MySQL(初始化)
1、给root红设置密码
@内置命令 set password for 'username@host' = password('password')
>use mysql
>select user,password,host from user; 查看管理员账号和匿名账号(user表)
>set password for 'root@localhost' = passwrod('magedu')
>select user,password,host from user;
@update user set password=PASSWORD('magedu') where user='root';
@#mysqladmin -u root -p password 'new_password' 回车后输入旧密码

如:/usr/local/mysql/bin/mysqladmin -u root -h127.0.0.1 -p password 'new_password'; 回车输入旧密码

2、删除匿名用户

@ #drop user ‘’@‘hostname’;删除匿名用户

修改环境变量:vi /etc/profile.d/mysql.sh
添加 export PATH=/usr/local/mysql/bin:$PATH

#./etc/profile.d/mysql.sh

#mysql -u root -p

#输入旧密码

@ >delete from user where user=''; 删除匿名用户

四、配置文件:所有的mysql程序都可以以此文件作为其配置文件
例如:mysqld, mysql, mysqladmin, mysqld_safe
client: 客户端程序
server: 服务器端程序

[program]
parameter1 =

获取帮助:mysqld --verbose --help
--option, -option: 命令行选项

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

--defaults-extra-file=#:额外读取的配置文件;

--defaults-file=#: 仅读取此处指定的配置文件

mysql程序的类别:
服务器端程序:启动并监听于套接字上;mysqld, mysqld_safe, mysqld_multi
客户端程序:可通过mysql协议连入服务器并发出请求的;mysql, mysqlbinlog, mysqladmin, mysqldump等
工具程序:运行于服务器进程所在的主机,实现一些管理或维护操作,myisamchk

客户端程序的通用选项:
-u, --user=
-u root, -uroot, --user=root
-h, --host=
-p, --password=

--protocol=
tcp:
socket: unix sock
pipe:
memory:

--port: 当Protocol是tcp时使用的端口;
--socket: 相当于--protocol socket

其它选项:
-D
--database=

五、mysql客户端程序:mysql
批模式:mysql < /path/from/somefile.sql
交互式模式:
命令有两类:
客户端命令:help可列出所有命令
clear, \c:
ego, \G:
go, \g:
delimiter, \d:
quit, exit, \q:
source, \. /path/from/somefile.sql:
相当于mysql < /path/from/somefile.sql
system, \! COMMAND: 运行shell命令
use, \u DB_NAME: 将指定的库设为默认库
服务器端命令:help KEYWORD
SQL语句:DDL、DML
help KEYWORD
选项:-e 'SQL语句'

mysql -->mysql protocol (TCP/IP) --> mysqld
mysqladmin工具:

create DB_NAME:
mysqldadmin [options] create DB_NAME;
drop DB_NAME:
status: 显示mysqld的简单要状态信息,专用选项--sleep #: 间隔秒数,--count #: 显示的次数
mysqladmin status --sleep2 --count3
mysqladmin status -uroot -p123456

extend-status: 显示mysqld的所有服务器状态变量
flush-privileges: 刷新授权表,相当于reload命令
flush-hosts: 清除dns缓存及被拒绝的客户端列表缓存
flush-logs: 滚动日志, 二进制日志和中继日志
flush-status: 重置各状态变量
flush-tables: 关闭当前打开的所有的表文件句柄;
flush-treads: 重置线程缓存;
password: 设置密码
ping: 测试服务器是否在线
processlist: 显示当前服务器上的所有线程
refresh: 相当于执行flush-hosts和flush-logs
shutdown: 关闭服务器进程 ;
start-slave, stop-slave: 启动、关闭从服务器线程;
variables: 显示服务器变量

mysql功能特性补充:
1、命令历史;
2、命令行编辑功能:
Ctrl+a: 快速移动光标至行首
Ctrl+e: 行尾
Ctrl+w: 删除光标之前的单词
Ctrl+u: 删除行首至光标处的所有内容
Ctrl+y: 粘贴使用Ctrl+w或Ctrl+u删除的内容
3、提示符:
mariadb> 等待输入命令
-> 续行
'> 还需要补全后半部单引号
">
`>

mysql有很多图形化的客户端程序:
phpMyAdmin
Navicat for mysql
Toad for mysql
mysql front
sqlyog

Developing:
数据类型
SQL语句

开发DBA:数据库设计(E-R)、SQL语句编写、自定义函数、存储过程、存储函数、触发器、事件调度器
管理DBA:安装、升级服务器程序, 数据备份、恢复, 用户和权限管理, 指标监控、性能分析、基准测试, 语句优化, 数据字典, 按需配置服务器(服务器变量:默认的存储引擎、缓存、日志), 服务器的规模扩展架构设计及实施

SQL语言的组成部分:
DDL
DML
完整性定义语言:DDL
主键、外键、惟一键、条件、非空、事务
视图定义
事务控制
DCL

六、mysql数据类型及服务器变量
数据类型的功用:
1、存储的值类型;
2、占据的最大存储空间;
3、定长、变长;
4、如何被索引和排序;
5、是否能够被索引;

数据字典:系统编目(system catalog)
保存了数据库服务器上的元数据
元数据:
关系的名称
每个关系中各字段的名称
各字段的类型和长度
约束
每个关系上的视图的名字及视图的定义
授权的用户名字
用户的授权和帐户信息
统计类数据
每个关系中字段数;
每个关系中行数;
每个关系的存储方法;
元数据也通过数据库保存(infomation_schema、mysql、performance_schema)

数据类型:
字符型CHARVARCHARBINARYVARBINARYTEXTBLOB
数值型 精确数值型INT DECIMAL 近似数值型 FLOAT DOUBLE
日期时间型:DATE TIME DATETIME YEAR STAMP
内建类型:ENUM SET

字符型:
CHAR:255
VARCARH:65535
TINYTEXT: 255
TEXT: 65535
MEDIUMTEXT: 2^24
LONGTEXT: 2^32

BINARY: 255
VARBINARY:65535
TINYBLOB
BLOB
MEDIUMBLOG
LONGBLOB

修饰符:
NULL
NOT NULL
DEFAULT 'string'
CHARACTER SET 'set'
SHOW CHARACTER SET;
COLLATION 'collation'
SHOW COLLATION;

字符有通配符:
%: 匹配任意长度的任意字符
_: 匹配任意单个字符;

整型:
TINYINT: 1Byte
SMALLINT: 2Bytes
MEDIUMINT: 3Bytes
INT:4Bytes
BININT:8Bytes

修饰符:
UNSIGNED
NULL
NOT NULL
DEFAULT #
AUTO_INCREMENT: 自动增长
特殊要求:非空,且必须是主键或惟一键;

浮点型:
FLOAT
DOUBLE

修饰符:
NOT NULL
NULL
DEFAULT
UNSIGNED

布尔型:没有专用布尔型,其是TINYINT(1)的别名;

日期时间型:
DATE: 3Bytes
TIME: 3Bytes
DATETIME: 8Bytes
TIMESTAMP: 4Bytes
YEAR(2):1Byte
YEAR(4): 1Byte

修饰符:
NULL
NOT NULL
DEFAULT VALUE

内建类型:
ENUM:枚举,表示仅能从给出的选项选择其中一个;
ENUM('string1','string2')
SET:集合, 表示能使用给出的元素组合成字符串
SET('a','b','c')

修饰符:
NULL
NOT NULL
DEFAULT ''

MySQL sql_mode:
sql模式:用来限定mysqld的工作特性
TRADITIONAL
STRICT_TRANS_TABLES:对支持事务的表使用严格模式;
STRICT_ALL_TABLES:对所有表使用严格模式

5、服务器变量的类型:
全局:对所有会话都生效;
所有的会话在建立时都从全局继承,但继承完成后每个会话独立维护自己会话级变量
修改全局的服务器变量仅对之后建立的会话生效
要求有管理权限
会话:仅对当前会话有效;
修改即刻生效;
不要求管理权限

修改方式:
动态修改: 会话级别,立即生效;全局级别,新建立的会话有效;重启服务会失效
静态修改:要修改配置文件,或修改传递给mysqld的选项的值;重启后有效;

并非所有的服务器变量都支持动态修改;

查看服务器变量:
mysql> SHOW {GLOBAL|SESSION} VARIABLES [LIKE clause];
mysql> SELECT @@{GLOBAL|SESSION}.VARIABLE_NAME;
mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='';
mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='';

动态修改变量的值:
mysql> SET {GLOBAL|SESSION} VARIABLE_NAME='VALUE'
让设置永久有效的方式:
[mysqld]
sql_mode = 'STRICT_ALL_TABLES'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: