Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359962
  • 博文数量: 105
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-16 13:58
个人简介

记录有意义的东西

文章分类

全部博文(105)

文章存档

2013年(105)

我的朋友

分类: Mysql/postgreSQL

2013-04-23 23:53:29

本文从最基础的启动操作开始来学习如何在同一机器运行多 mysql 服务器。

一、最简单的 mysqld 服务启动

注:
以下直接使用 mysqld 程序启动仅作为例子说明,在 unix 系统中,官网推荐使用 mysqld_safe 进行启动:
mysqld_safe是在Unix或是NetWare系统推荐使用来启动MySQL服务器的方法。 mysqld_safe添加了许多安全的特征,例如,当发生错误时重新启动服务器,并且可以将运行时的信息写入错误日志文件。等等

1. 如下,仅使用最基本的参数进行启动:

  1. <路径>/mysqld --port=<端口> --datadir=<数据目录> --user=<启动用户> &
2. 如果把参数配置到配置文件中,则可以使用的配置文件进行启动,默认配置文件为 my.ini/my.cnf,如果不使用默认文件,则需要指定
如有如下最简单配置文件 test.cnf:

  1. [mysqld]
  2. port = <端口>
  3. datadir = <数据目录>
  4. user = <启动用户>
使用如下命令行进行启动:

  1. <路径>/mysqld --defaults-file=<路径>/test.cnf &

二、下面开始进入多 mysqld 启动

1. 多服务执行时,首先要保证端口不冲突,这是基本要求;另外官网特别声明不建议使用相同的数据目录;其次需要配置不同的 sock 文件以便一些管理工具(如 mysqladmin)可以连接进行操作
2. 根据上述说明,如下两句语句可以以端口一和端口二开启两个 mysqld 服务:

  1. <路径>/mysqld --port=<端口一> --datadir=<数据目录一> --user=<启动用户> --socket=<socket 文件一>&
  2. <路径>/mysqld --port=<端口二> --datadir=<数据目录二> --user=<启动用户> --socket=<socket 文件二>&
这时候可以使用如下语句从本机连接进行连接(从远程机器连接则使用端口即可):

  1. mysql -u<用户> -p -S
使用如下语句进行管理:

  1. mysqladmin -u<用户> -p -S <命令>
3. 使用配置文件则和前述一样操作,仅是新增加 socket 的配置即可,制作两个配置文件 test1.cnf 和 test2.cnf,文件内容如下:
test1.cnf
  1. [mysqld]
  2. port = <端口一>
  3. datadir = <数据目录一>
  4. user = <启动用户一>
  5. socket =
test2.cnf
  1. [mysqld]
  2. port = <端口二>
  3. datadir = <数据目录二>
  4. user = <启动用户二>
  5. socket =
使用如下命令行进行双 mysqld 服务的启动:

  1. <路径>/mysqld --defaults-file=<路径>/test1.cnf &
  2. <路径>/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:
  1. [mysqld_multi]
  2. mysqld = /usr/local/mysql/bin/mysqld_safe
  3. mysqladmin = /usr/local/mysql/bin/mysqladmin
  4. user = mysql
  5. password = xxxx

  6. [mysqld1]
  7. port = <端口一>
  8. datadir = <数据目录一>
  9. user = <启动用户一>
  10. socket =

  11. [mysqld2]
  12. port = <端口二>
  13. datadir = <数据目录二>
  14. user = <启动用户二>
  15. socket =
3. 执行如下语句即可进行双 mysqld 服务的维护了

  1. # 开启 mysqld1
  2. mysqld_multi --config-file=<路径>/multi_test.cnf start 1

  3. # 关闭 mysqld1
  4. mysqld_multi --config-file=<路径>/multi_test.cnf stop 1

  5. # 开启 mysqld1 和 mysqld2
  6. mysqld_multi --config-file=<路径>/multi_test.cnf start 1,2

  7. # 关闭 mysqld1 和 mysqld2
  8. mysqld_multi --config-file=<路径>/multi_test.cnf stop 1,2

  9. # 开启编号为 1-2 之间的所有 mysqld (如果有多个,如五个,就比用逗号格式简单了)
  10. mysqld_multi --config-file=<路径>/multi_test.cnf start 1-2

  11. # 关闭编号为 1-2 之间的所有 mysqld (如果有多个,如五个,就比用逗号格式简单了)
  12. mysqld_multi --config-file=<路径>/multi_test.cnf stop 1-2



阅读(1940) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~