本文参考自mysql 5.5的官方文档,说明mysql启动时用到的关键配置文件及简要说明

Mysql 配置说明

1、  mysqld是MySQL server,可以通过命令行参数,或者配置文件,或者同时使用两个地方一起配置

2、  系统变量,可以在启动文件中配置。

3、  系统状态变量。包括各种内置的计数器,运行时操作的统计信息等

4、  设置sql mode

5、  Server关闭过程。

 

系统的默认配置说明

1、  mysql默认提供了示例配置文件

a)         my-small.cnf

b)         my-medium.cnf

c)         my-large.cnf

d)         my-huge.cnf

2、  配置文件中各个组的生效范围

a)         mysqld从配置文件中的[mysqld]和[server]组下读出参数信息,在启动时生效。

b)         mysqld_safe从[mysqld] [server] [mysqld_safe]和[safe_mysqld]读出信息

c)         mysql.server从[mysqld]和[mysql.server]读出信息

3、  嵌入式MySQL server(embedded MySQL server)通常从[server] [embedded]和[xxxxx_SERVER]读信息,xxxxx是嵌入的程序名称

4、  一些控制缓冲区或者缓存大小的参数,系统会根据平台或者默认限制情况,对设定的值做出一些调整,比如如果将一个最小为1024的参数设为0,系统会自动调整为1024.

5、  默认情况下,缓冲区、长度或者栈大小的长度单位都是字节

6、  默认情况下,与路径有关的默认值是配置的数据文件下的。例如数据文件目录为 /var/mysql/data ,其它参数的路径给出的是相对路径,则其它参数则位于目录 /var/mysql/data

7、  系统变量修改后,不会对当前连接使用的session变量生效,包括执行set global变量的session。

 

在一台机器上启动多个MySQL实例

启动多个实例用的可以是不同版本的二进制文件,也可以是同一个二进制文件,只需要保证一些参数保持互不相同,已避免可能的实例间的冲突。这些参数可以设置在启动命令行参数中,也可以写在配置文件里,或者通过设置环境变量实现。

1、  启动一个实例最主要的资源是文件目录,每个实例需要有不同的文件目录,使用 --datadir=path选项来配置。

2、  --port控制每个实例有单独的端口号

3、  --socket=path控制Unix socket文件路径

4、  --pid-file=file_name记录server进程 id的文件

5、  与log有关的参数也需要单独配置。将不同实例的日志文件配置在不同的硬盘上可以获得更好的性能。

6、  --tmpdir=path 不同实例尽量部署在不同路径下。存放临时文件。

7、  --basedir=path 不同的实例配置不同的basedir后,每个实例自动的在该目录下创建文件目录,日志文件,pid文件。这种情况下,每个实例只需在单独配置端口和socket文件即可。

8、  如果是通过tar文件部署不同的MySQL,通过mysqld_safe启动时,只需配置socket文件和port文件,mysqld_safe会自动的创建合适的basedir并将它传递给mysqld

9、  --defaults-file 只从配置文件中读取配置(命令行中参数无效)。可以在启动多实例时使用。

 

 

创建多个数据文件目录的方法

1、  新建的方式,状态与原目录一致,包含默认的MySQL账号,但不包含用户信息

2、  通过copy已有数据文件的方式

a)         这种方式下,所有MySQL账号和数据信息都会复制

b)         复制前需要停止实例,保证所有的信息能够写入磁盘

c)         复制并修改配置文件my.cnf,包括配置新的数据文件目录,绑定的端口号,使用的socket文件和pid信息机可能的log目录

3、  使用新配置文件启动新的实例

 

启动多个实例

1、  通过mysqladmin查看variables,确认新的实例可以使用的参数

2、  使用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

 

示例

1、使用选项[mysqld17] 启动一个单独的实例

shell> mysqld_multi start 17

2、使用选项[mysqld8] 和 [mysqld10] - [mysqld13]停止多个实例

shell> mysqld_multi stop 8,10-13

说明:

选项 [mysqld_multi] 只是呈现mysqld_multi自己使用,选项 [mysqldN] 传递给指定的mysqld实例使用。