本文参考自mysql 5.5的官方文档,说明mysql启动时用到的关键配置文件及简要说明html
Mysql 配置说明:mysql
一、 mysqld是MySQL server,能够经过命令行参数,或者配置文件,或者同时使用两个地方一块儿配置sql
二、 系统变量,能够在启动文件中配置。shell
三、 系统状态变量。包括各类内置的计数器,运行时操做的统计信息等缓存
四、 设置sql modesession
五、 Server关闭过程。socket
系统的默认配置说明:性能
一、 mysql默认提供了示例配置文件命令行
a) my-small.cnf日志
b) my-medium.cnf
c) my-large.cnf
d) my-huge.cnf
二、 配置文件中各个组的生效范围
a) mysqld从配置文件中的[mysqld]和[server]组下读出参数信息,在启动时生效。
b) mysqld_safe从[mysqld] [server] [mysqld_safe]和[safe_mysqld]读出信息
c) mysql.server从[mysqld]和[mysql.server]读出信息
三、 嵌入式MySQL server(embedded MySQL server)一般从[server] [embedded]和[xxxxx_SERVER]读信息,xxxxx是嵌入的程序名称
四、 一些控制缓冲区或者缓存大小的参数,系统会根据平台或者默认限制状况,对设定的值作出一些调整,好比若是将一个最小为1024的参数设为0,系统会自动调整为1024.
五、 默认状况下,缓冲区、长度或者栈大小的长度单位都是字节
六、 默认状况下,与路径有关的默认值是配置的数据文件下的。例如数据文件目录为 /var/mysql/data
,其它参数的路径给出的是相对路径,则其它参数则位于目录 /var/mysql/data
下
七、 系统变量修改后,不会对当前链接使用的session变量生效,包括执行set global变量的session。
在一台机器上启动多个MySQL实例:
启动多个实例用的能够是不一样版本的二进制文件,也能够是同一个二进制文件,只须要保证一些参数保持互不相同,已避免可能的实例间的冲突。这些参数能够设置在启动命令行参数中,也能够写在配置文件里,或者经过设置环境变量实现。
一、 启动一个实例最主要的资源是文件目录,每一个实例须要有不一样的文件目录,使用 --datadir=
path
选项来配置。
二、 --port控制每一个实例有单独的端口号
三、 --socket=path控制Unix socket文件路径
四、 --pid-file=file_name记录server进程 id的文件
五、 与log有关的参数也须要单独配置。将不一样实例的日志文件配置在不一样的硬盘上能够得到更好的性能。
六、 --tmpdir=path 不一样实例尽可能部署在不一样路径下。存放临时文件。
七、 --basedir=path 不一样的实例配置不一样的basedir后,每一个实例自动的在该目录下建立文件目录,日志文件,pid文件。这种状况下,每一个实例只需在单独配置端口和socket文件便可。
八、 若是是经过tar文件部署不一样的MySQL,经过mysqld_safe启动时,只需配置socket文件和port文件,mysqld_safe会自动的建立合适的basedir并将它传递给mysqld
九、 --defaults-file 只从配置文件中读取配置(命令行中参数无效)。能够在启动多实例时使用。
建立多个数据文件目录的方法:
一、 新建的方式,状态与原目录一致,包含默认的MySQL帐号,但不包含用户信息
二、 经过copy已有数据文件的方式
a) 这种方式下,全部MySQL帐号和数据信息都会复制
b) 复制前须要中止实例,保证全部的信息可以写入磁盘
c) 复制并修改配置文件my.cnf,包括配置新的数据文件目录,绑定的端口号,使用的socket文件和pid信息机可能的log目录
三、 使用新配置文件启动新的实例
启动多个实例:
一、 经过mysqladmin查看variables,确认新的实例可使用的参数
二、 使用mysql_safe –defaults-file=file_path启动各自的实例
查看已经启动的实例中的变量的命令:
shell> mysqladmin --host=host_name --port=port_number variables
启动方式及my.cnf内部说明,参考:http://dev.mysql.com/doc/refman/5.5/en/mysqld-multi.html
示例:
一、使用选项[mysqld17] 启动一个单独的实例
shell> mysqld_multi start 17
二、使用选项[mysqld8] 和 [mysqld10] - [mysqld13]中止多个实例
shell> mysqld_multi stop 8,10-13
说明:
选项 [mysqld_multi] 只是呈现mysqld_multi本身使用,选项 [mysqldN] 传递给指定的mysqld实例使用。