MySQL架构和结构分析
官方架构图
内部组件结构图
MySQL安装方式
MySQL初始化
MySQL工作模式及常用命令
交互式模式:mysql>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 交互式模式下的客户端命令
mysql> help
# 获取命令帮助
mysql> \?
# 同上
mysql> \c
# 取消命令执行
mysql> \g
# 发送命令至服务器端
mysql> \G
# 发送命令至服务器端,垂直显示结果
mysql> \q
# 退出
mysql> \!
# 执行系统shell命令
mysql> \s
# 显示服务器端状态信息
mysql> \.
/path/to/mysql_script
.sql
# 批量执行sql
mysql> \u
# 切换数据库
# 交互式模式下的服务器端命令(需要命令提示符,默认为分号)
mysql> help contents 能够获取帮助的分类信息
mysql> help keyword 获取关键字的帮助信息,如help
select
|
脚本模式:mysql < /path/to/mysql_script.sql
注:常用于主从复制批量导入数据时
连接MySQL
连接类型
本地通信:客户端与服务器端位于同一主机,而且还要基于127.0.0.1(localhost)地址或lo接口进行通信
基于sock文件通信:如mysql -hlocalhost -uroot -p --socket=/tmp/mysql.sock
远程通信:客户端与服务器端位于不同的主机,或在同一主机使用非回环地址通信
基于 TCP socket通信
mysql客户端选项
实例
1
2
3
4
5
6
7
8
9
10
11
12
|
-u,--user
# 指定连接用户
-h,--host
# 指定连接主机
-p,--password
# 指定连接密码
--protocol={tcp|socket|memory|pipe}
# 指定连接协议
-P,--port
# 指定连接端口,默认监听端口:tcp/3306
--socket
# 指定本地连接的sock文件
--compress
# 数据传输采用压缩格式
-D,--database
# 指定连接后默认使用的数据库
-H,--html
# 指定产生html输出
-X,--xml
# 指定产生xml输出
--safe-updates
# 拒绝使用无where子句的update或delete命令
# 使用实例:mysql -hlocalhost -uroot -p
|
mysql命令提示符
1
2
3
4
5
6
|
mysql>
# 等待输入命令
->
# 等待继续输入
‘>
# 等待结束单引号
“>
# 等待结束双引号
`>
# 等待结束反引号
/*>
# 注释,不执行,需以*/结束注释
|
mysql的快捷键
1
2
3
4
5
|
ctrl+w:
# 删除光标之前的单词
ctrl+u:
# 删除光标之前至命令行首的所有内容
ctrl+y:
# 粘贴所有ctrl+w或ctrl+u删除的内容
ctrl+a:
# 移动光标至行首
ctrl+e:
# 移动光标至行尾
|
MySQL管理工具mysqladmin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# 使用格式:mysqladmin [options] command [arg] [,command [arg]] …
# 常用的command包括:
create DB_Name:
# 创建数据库
drop DB_Name:
# 删除数据库
debug:
# 打开调试日志并记录于error log中
status:
# 显示简要状态信息
--
sleep
#:设置间隔时长
--count
#:设置显示的批次
extended-status:
# 显示扩展信息,输出mysqld的各状态变量及赋值,相当于执行“mysql> show global status”
variables:
# 输出mysqld的各服务器变量
flush-hosts:
# 清空主机相关的缓存:DNS解析缓存;此前因为连接错误次数过多而被拒绝访问mysqld的主机列表
flush-logs:
# 日志滚动,只能滚动二进制日志和中继日志
refresh:
# 相当于同时使用flush-hosts和flush-logs
flush-privileges:
# 通知mysqld重读授权表
reload:
# 功能同“flush-privileges”
flush-status:
# 重置状态变量的值
flush-tables:
# 关闭当前打开的表文件句柄
flush-threads:
# 清空线程缓存
kill
:
# 杀死指定的线程,需指定线程ID;可以一次杀死多个线程,以逗号分隔,但不能有多余空格
password:
# 修改当前用户的密码
ping
:
# 模拟ping操作,检测mysqld是否在线
processlist:
# 显示mysqld线程列表
shutdown
:
# 关闭mysqld进程
start-slave,stop-slave:
# 启动/关闭从服务器线程
|
MySQL数据文件解析
MyISAM表:每表有3个文件,都位于数据库目录中
1
2
3
|
tb_name.frm:
# 表结构定义文件
tb_name.MYD:
# 数据文件
tb_name.MYI:
# 索引文件
|
InnoDB表:有2种存储方式
默认方式:每表有1个独立文件和一个多表共享的文件
1
2
|
tb_name.frm:
# 表结构定义文件,位于数据库目录中
ibdata
#:# 共享的表空间文件,默认位于数据目录(datadir指向的目录)中,如ibdata1
|
自定义方式:独立的表空间
1
2
3
4
5
6
|
tb_name.frm:
#表结构定义文件
tb_name.ibd:
# 独有的表空间文件
# 在MySQL初始化中打开独立表空间功能的方法:
vi
/etc/my
.cnf (在[mysqld]段下添加)
innodb_file_per_table = ON
# 注:表空间:table space,是由InnoDB管理的特有格式的数据文件,内部可同时存储数据和索引
|
本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1395061,如需转载请自行联系原作者