MySQL中的目录和文件
bin目录
在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。
启动MySQL服务器程序
在 UNIX 系统中,用来启动 MySQL 服务器程序的可执行文件有很多,大多在 MySQL 安装目录的 bin 目录下。
-
mysqld
mysqld 这个可执行文件就代表着 MySOL 服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。但这个命令不常用。
-
mysqld_safe
mysqld_safe 是一个启动脚本,它会间接的调用 mysqld,而且还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助重启它。另外,使用 mysqld_safe 启动服务器程序时,它会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志,这样可以方便我们找出发生错误的原因。
-
mysql.server
mysql.server 也是一个启动脚本,它会间接的调用 mysqld_safe,在调用 mysql.server 时在后边指定start参数就可以启动服务器程序了
mysqlmysql.server start
需要注意的是,这个 mysql.server 文件其实是一个链接文件,它的实际文件是 support-files/mysql.server,所以如果在 bin 目录找不到,到 support-files下去找找,而且如果你愿意的话,自行用ln命令在 bin 创建一个链接。
另外,我们还可以使用 mysql.server 命令来关闭正在运行的服务器程序,只要把 start 参数换成 stop 就好了:
mysqlmysql.server stop
-
mysqld_multi
其实我们一台计算机上也可以运行多个服务器实例,也就是运行多个 MySQL 服务器进程。 mysql_multi 可执行文件可以对每一个服务器进程的启动或停止进行监控。
客户端程序
在我们成功启动 MysTL 服务器程序后,就可以接着启动客户端程序来连接到这个服务器喽, bin 目录下有许多客户端程序,比方说mysqladmin 、mysqldump 、mysqlcheck 等等。
我们常会用的是可执行文件mysql,通过这个可执行文件可以让我们和服务器程序进程交互,也就是发送请求,接受服务器的处理结果。
- mysqladmin :执行管理操作的工具,检查服务器配置,当前运行状态,创建、删除数据库,设置新密码。
- mysqldump 数据库逻辑备份程序
- mysqlbackup 备份数据表、整个数据库、所有数据库,一般来说 mysqldump 备份、mysql 还原。
启动选项和参数
配置参数文件
当MySQL实例启动时,数据库会先去读取一个配置参数文件,用来寻找数据库的各种文件所在的位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等。默认情况下,MySQL 实例会按照一定的顺序在指定的位置进行读取,用户只需要命令mysql --help grep my.cnf 来寻找即可。
当然,也可以在启动MySQL时,指定配置文件(非yum安装):
这时候,就会以启动时指定的配置文件为准。
MySQL数据库参数文件的作用和Oracle数据库的参数文件极其类似,不同的是,Oracle实例在启动时若找不到参数文件,是不能进行状态(mount)操作的。MySQL稍微有些不同,MySQL实例可以不需要参数文件,这时所有的参数值取决于编译MySQL时指定的默认值和源代码中指定参数的默认值。
MySQL数据库的参数文件是以文本方式进行存储的。可以直接通过一些常用的文本编辑软件进行参数的修改。
参数查看和修改
可以通过命令show variable
查看数据库中的所有参数,也可以通过 LIKE 来过滤参数名,前面查找数据库引擎时已经展示过了。从 MySQL5.1 版本开始,还可以通过 information_schema 架构下的 GLOBAL_VARIABLES 视图来进行查找,推荐使用命令。
show variables
,使用更为简单,且各版本的 MySQL 数据库都支持。
参数的具体含义还可参考MySQL官方手册
MySQL数据库中的参数可分为两类:动态(dynamic)参数和静态(static)参数。同时从作用范围又可以分为全局变量和会话变量。
- 动态参数意味着可以在MySQL实例运行中进行更改,静态参数说明在整个实例生命周期内都不得进行更改,就好象是只读(read only)的。
- 全局变量(GLOBAL)影响服务器的整体操作;会话变量(SESSION/LOCAL)影响某个客户端连接的操作。
举个例子,用 default_storage_engine 来说明,在服务器启动时会初始化一个名为 default_storage_engine ,作用范围为 GLOBAL 的系统变量。之后每当有一个客户端连接到该服务器时,服务器都会单独为该客户端分配一个名为 default_storage_engine ,作用范围为 SESSION 的系统变量,该作用范围为 SESSION 的系统变量值按照当前作用范围为 GLOBAL 的同名系统变量值进行初始化。
可通过SET命令对动态的参数值进行修改。
SET的语法如下
mysql
-- set [global || session ] system_var_name= expr
-- 或者
-- set [@@global. || @@session.] system_var_name= expr
-- 比如:
set read_buffer_size=524288;
set session read_buffer_size=524288;
set @@global.read_buffer_size=524288;
MySQL所有动态变量的可修改范围,可参考MySQL官方手册的 Dynamic System Variables 相关内容
对于静态变量,若对其进行修改,会得到类似如下错误