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-logsflush-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,如需转载请自行联系原作者