0

0

在同一台机运行多个Mysql 服务_MySQL

php中文网

php中文网

发布时间:2016-06-01 14:11:42

|

1100人浏览过

|

来源于php中文网

原创

*****************************************
第一部分, 在一台服务器构建多mysql 服务.
*****************************************

一,绪言
在mysql中有一mysqld_multi命令,可用于在一台物理服务器运行多个mysql服务,今天参考一些文档,亲自测试并通过,真高兴,现将操作过程共享给大家!
操作系统:linux 2.6.13 (slackware),其它版的linux应该也差不多.
数据库:mysql  4.0.17 源程序安装(相信最新的5.1.*也差不多,过些天再试试)
规划:运行4个mysql服务:
假设服务器名:db-app  (ip为192.168.0.100),
假设服务器名:db-app2  (ip为192.168.0.101),
下文直到第二部分,均为讲述db-app中的mysql,


二,准备
用mysql源程序安装,假设在安装时用的configura选择项氯?

./configure --prefix=/usr/local/mysql   --datadir=/usr/local/mysql/data1 --sysconfdir=/etc
备注:--prefix将mysql安装到/usr/local/mysql,
--datadir将数据库生成/usr/local/mysql/data1
sysconfdir是指定mysql使用到的my.cnf配置文件的搜索路径为/etc
其他mysql安装过程略.

根据mysql管理手册中提到:每个mysql的服务都可为独立的,所以它都调用一个my.cnf中各自不同的启动选项--就是下文中将提到的gnr值,使用不同的端口,生成各自的套接文件,服务的数据库都是独立的(更多可查阅mysql官方网站的英文管理手册).

mysqld_multi是管理多个mysqld的服务进程,这些服务进程程序不同的unix socket或是监听于不同的端口。他可以启动、停止和监控当前的服务状态。

----程序在my.cnf(或是在--config-file自定义的配置文件)中搜索[mysqld#]段,"#"可以是任意的正整数。这个正整数就是在下面提及的段序列,即gnr。段的序号做为mysqld_multi的参数,来区别不同的段,这样你就可以控制特定mysqld进程的启动、停止或得到他的报告信息。这些组里的参数就像启动一个mysqld所需要的组的参数一样。但是,如果使用多服务,必须为每个服务指定一个unix socket或端口(摘自
http://mifor.4dian.org中的使用mysqld_multi程序管理多个mysql服务 )。

从上述文字可看到多mysql服务中最重要的就是my.cnf配置文件了.
现我贴出我的my.cnf文件.-----------------------

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = mysql   (用一个帐号来启动所有的mysql服务器,因为是用一相同的帐号。那个么这帐号必须都是每个mysql服务都要用的帐号,最好是管理帐号,下面的口令与相同)
password = mypaswd


[mysqld1]
port      = 3306
socket    = /tmp/mysql.sock1
pid-file=/usr/local/mysql/data1/db-app1.pid
log=/usr/local/mysql/data1/db-app.log
datadir = /usr/local/mysql/data
user = mysql

[mysqld2]
port = 3307
socket = /tmp/mysql.sock2
pid-file = /usr/local/mysql/data2/db-app2.pid
datadir = /usr/local/mysql/data2
log=/usr/local/mysql/data2/db-app.log
user = mysql


[mysqld3]
port            = 3308
socket          = /tmp/mysql.sock3
pid-file = /usr/local/mysql/data3/db-app3.pid3
datadir = /usr/local/mysql/data3
log=/usr/local/mysql/data3/db-app.log
user = mysql

[mysqld4]
port            = 3309
socket          = /tmp/mysql.sock4
pid-file = /usr/local/mysql/data3/db-app4.pid
datadir = /usr/local/mysql/data4
log=/usr/local/mysql/data4/db-app.log
user = mysql

[mysqldump]
quick
max_allowed_packet = 16m

[mysql]
no-auto-rehash


[isamchk]
key_buffer = 128m
sort_buffer_size = 128m
read_buffer = 2m
write_buffer = 2m

[myisamchk]
key_buffer = 128m
sort_buffer_size = 128m
read_buffer = 2m
write_buffer = 2m

[mysqlhotcopy]
interactive-timeout
                                    

我的配置文件中有mysqld1,mysqld2,mysqld3,mysqld4。就是说我将启动4个mysql服务在同一服务器的不同端口——3306-3309,每datadir所指定的数据库文件路径都是不相同的,都有各自不同的日志文件。其它一些设置可用my.cnf 原来的内容.

ok, 重要的my.cnf编好的,现在为配置中不同mysql 服务建立各自文件夹和初始数据库等.
[mysqld1]是一个默认的,在我们安装mysql时已经有了,所以不用管它.

[mysqld2],只要根据配置就的路径为它建立一个目录就可以了.将把该目录改为mysql管理权

db-app:/ #  mkdir /usr/local/mysql/data2

建数据库,我们可以把默认的mysql数据库复制过来,以利用其它的mysql帐号,其它数据库根据应用再建立.

db-app:/ # cp /usr/local/mysql/data1/mysql  /usr/local/mysql/data2 -r
db-app:/ #  chmod mysql.mysql /usr/local/mysql/data2 -r

[mysqld3],[mysqld4], 相同.


我们可能看看这些目录是否都存在.
db-app:/ # ls -l /usr/local/mysql/

drwxr-xr-x   6 mysql mysql   4096 apr  9 17:54 data4
drwxr-x---   2 mysql mysql   4096 apr  9 17:14 data1
drwxr-xr-x   3 mysql mysql   4096 apr  9 17:54 data2
drwxr-xr-x   3 mysql mysql   4096 apr  9 17:54 data3

现在可以通过mysqld_multi启动了。

三,mysqld_multi命令.
使用如下参数来启动mysqld_multi: (注:该命令在mysql的bin目录中,根据上面所提到./configure --prefix=/usr/local/mysql ,所以该文件应该在 /usr/local/mysq/bin, 这得根据你安装时所指定的路径 )
db-app:/ #  mysqld_multi [options] {start|stop|report} [gnr[,gnr]...]

start,stop和report是指你想到执行的操作。你可以在单独的服务或是多服务上指定一个操作,区别于选项后面的gnr列表。如果没有指定gnr列表,那么mysqld_multi将在所有的服务中根据选项文件进行操作。

每一个gnr的值是组的序列号或是一个组的序列号范围。此项的值必须是组名字最后的数字,比如说如果组名为mysqld17,那么此项的值则为17.如果指定一个范围,使用"-"(破折号)来连接二个数字。如gnr的值为10-13,则指组mysqld10到组mysqld13。多个组或是组范围可以在命令行中指定,使用","(逗号)隔开。不能有空白的字符(如空格或tab),在空白字符后面的参数将会被忽略。 (注:gnr值就是我们定义my.cnf中mysqld#中的值,我这里只有1-4).

发卡宝-卡密寄售系统
发卡宝-卡密寄售系统

发卡宝是一个专业的软件卡密等虚拟商品在线交易平台,拥有多种兑换方式,费率低,结算快,正规企业平台一直稳定运营,24小时不间断提供自动发卡服务。【模板说明】试用版自带一套模板(响应式)【环境支持】PHP环境 / 200M或以上空间大小 / 开启父路径 / 设置index.php为默认首页 / 目录写入权限需要开启【数据库】MySQL【安装步骤】将文件上传至空间目录,运行“http://域名/inst

下载

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

44

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

58

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

11

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.6万人学习

ASP 教程
ASP 教程

共34课时 | 3.6万人学习

Python 教程
Python 教程

共137课时 | 7.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号