本文从最基础的启动操作开始来学习如何在同一机器运行多 mysql 服务器。
一、最简单的 mysqld 服务启动
注:
以下直接使用 mysqld 程序启动仅作为例子说明,在 unix 系统中,官网推荐使用 mysqld_safe 进行启动:
mysqld_safe是在Unix或是NetWare系统推荐使用来启动MySQL服务器的方法。 mysqld_safe添加了许多安全的特征,例如,当发生错误时重新启动服务器,并且可以将运行时的信息写入错误日志文件。等等
1. 如下,仅使用最基本的参数进行启动:
-
<路径>/mysqld --port=<端口> --datadir=<数据目录> --user=<启动用户> &
2. 如果把参数配置到配置文件中,则可以使用的配置文件进行启动,默认配置文件为 my.ini/my.cnf,如果不使用默认文件,则需要指定
如有如下最简单配置文件 test.cnf:
-
[mysqld]
-
port = <端口>
-
datadir = <数据目录>
-
user = <启动用户>
使用如下命令行进行启动:
-
<路径>/mysqld --defaults-file=<路径>/test.cnf &
二、下面开始进入多 mysqld 启动
1. 多服务执行时,首先要保证端口不冲突,这是基本要求;另外官网特别声明不建议使用相同的数据目录;其次需要配置不同的 sock 文件以便一些管理工具(如 mysqladmin)可以连接进行操作
2. 根据上述说明,如下两句语句可以以端口一和端口二开启两个 mysqld 服务:
-
<路径>/mysqld --port=<端口一> --datadir=<数据目录一> --user=<启动用户> --socket=<socket 文件一>&
-
<路径>/mysqld --port=<端口二> --datadir=<数据目录二> --user=<启动用户> --socket=<socket 文件二>&
这时候可以使用如下语句从本机连接进行连接(从远程机器连接则使用端口即可):
使用如下语句进行管理:
-
mysqladmin -u<用户> -p -S <命令>
3. 使用配置文件则和前述一样操作,仅是新增加 socket 的配置即可,制作两个配置文件 test1.cnf 和 test2.cnf,文件内容如下:
test1.cnf
-
[mysqld]
-
port = <端口一>
-
datadir = <数据目录一>
-
user = <启动用户一>
-
socket =
test2.cnf
-
[mysqld]
-
port = <端口二>
-
datadir = <数据目录二>
-
user = <启动用户二>
-
socket =
使用如下命令行进行双 mysqld 服务的启动:
-
<路径>/mysqld --defaults-file=<路径>/test1.cnf &
-
<路径>/mysqld --defaults-file=<路径>/test2.cnf &
三、使用 mysqld_multi 进行多 mysqld 实例的管理
1. 上面已经了解了如何手工执行和管理双 mysqld 服务,mysql 提供了一个管理多服务器的工具—— mysqld_multi。使用很简单
2. 把
上述启动双 mysqld 服务的配置文件合并到一个配置文件中,并给段名 mysqld 后加上数字编号;新增加 mysqld_multi
段,配置一些 mysqld_multi 使用的配置,如 mysqld_safe、mysqladmin
程序的路径,及运行此二程序所用的数据库用户及密码(注意:此用户需要有启动和关闭数据库的权限,用户如果没有配置密码,则不需要指定)
示例如下 multi_test.cnf:
-
[mysqld_multi]
-
mysqld = /usr/local/mysql/bin/mysqld_safe
-
mysqladmin = /usr/local/mysql/bin/mysqladmin
-
user = mysql
-
password = xxxx
-
-
[mysqld1]
-
port = <端口一>
-
datadir = <数据目录一>
-
user = <启动用户一>
-
socket =
-
-
[mysqld2]
-
port = <端口二>
-
datadir = <数据目录二>
-
user = <启动用户二>
-
socket =
3. 执行如下语句即可进行双 mysqld 服务的维护了
-
# 开启 mysqld1
-
mysqld_multi --config-file=<路径>/multi_test.cnf start 1
-
-
# 关闭 mysqld1
-
mysqld_multi --config-file=<路径>/multi_test.cnf stop 1
-
-
# 开启 mysqld1 和 mysqld2
-
mysqld_multi --config-file=<路径>/multi_test.cnf start 1,2
-
-
# 关闭 mysqld1 和 mysqld2
-
mysqld_multi --config-file=<路径>/multi_test.cnf stop 1,2
-
-
# 开启编号为 1-2 之间的所有 mysqld (如果有多个,如五个,就比用逗号格式简单了)
-
mysqld_multi --config-file=<路径>/multi_test.cnf start 1-2
-
-
# 关闭编号为 1-2 之间的所有 mysqld (如果有多个,如五个,就比用逗号格式简单了)
-
mysqld_multi --config-file=<路径>/multi_test.cnf stop 1-2
阅读(1989) | 评论(0) | 转发(0) |