最近的研发机器需要部署多个环境,包括数据库。为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式。
找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单实例运行,再进行一系列的配置调优..

多实例的运行机制

通过mysqld_multi启动多个mysqld实例进程,每个实例拥有独立的配置、监听端口、数据库文件、临时文件(日志、socket)等

实现步骤

1  初始化数据目录

mysql_install_db --datadir=/web/mysql/prd/data --user=mysql
mysql_install_db --datadir=/web/mysql/dev/data --user=mysql
 

//当然数据目录也可以拷贝已有的

2 配置多实例文件

multi.cnf:

#multi server
[mysqld_multi]
mysqld = /home/root/local/mysql/bin/mysqld_safe
mysqladmin = /home/root/local/mysql/bin/mysqladmin #mysqld_multi log
log = /web/mysql/multi.log
#用户名密码,用以mysqld_multi操作时透传给mysqladmin(初始化时一般为匿名访问,注释掉即可)
#user=root
#password= #dev server
[mysqld3306]
user = mysql
port = 3306
socket = /web/mysql/dev/var/mysql.sock
pid-file = /web/mysql/dev/var/mysqld.pid
log-error = /web/mysql/dev/var/mysqld.log
datadir = /web/mysql/dev/data
max_connections = 200
default-storage-engine = innodb
character_set_server = utf8mb4 #prd server
[mysqld3307]
user = mysql
port = 3811
socket = /web/mysql/prd/var/mysql.sock
pid-file = /web/mysql/prd/var/mysqld.pid
log-error = /web/mysql/prd/var/mysqld.log
datadir = /web/mysql/prd/data
max_connections = 1000
default-storage-engine = innodb
character_set_server = utf8mb4

  

 

3 启动多实例

mysqld_multi --defaults-extra-file=multi.cnf start
 

4  管理多实例

检查运行情况

mysqld_multi --defaults-extra-file=multi.cnf report
 
当然也可以通过网络端口检查:

netstat -ntlp tcp
tcp 0 0 :::3306 ::: * LISTEN 3919/mysqld
tcp 0 0 :::3307 ::: * LISTEN 15027/mysqld
 

停止多实例:

mysqld_multi --defaults-extra-file=multi.cnf stop
 
修改密码(针对某个实例):

mysqladmin -uroot -S /web/mysql/prd/var/mysql.sock password 123456
 
连接某个实例:

mysql -uroot -S /web/mysql/prd/var/mysql.sock -p
 

常见问题

mysqld_multi执行之后无法启动实例,执行report发现实例没有运行。

    原因:mysql实例目录缺少读写权限,将多实例的数据目录设置为mysql:mysql的用户组,并支持读写权限;
    
        
    启动实例之后无法停止,mysqld_multi stop不生效
    原因: mysqld实例的数据库管理员密码与mysqld_multi透传的管理员密码不一致(见multi.conf),通过修改密码可解决。
 
 

TIPS

    msyqld_multi命令仅仅对配置文件做语法检查,排查问题时需结合multi.log(见配置文件),以及具体实例的错误日志进行;
    实例标号必须为整数,如msyqld3307中3307必须为数字标号;

Mysql 数据库单机多实例部署手记的更多相关文章

  1. PHP连接局域网MYSQL数据库的简单实例

    PHP连接局域网MYSQL数据库的简单实例 [php] view plaincopy <?PHP /** * php连接mysql数据库 * by www.jbxue.com */ $conn= ...

  2. tomcat单机多实例部署

    最近在面试的过程中,一家公司在面试时提到了有关tomcat单机多实例部署的提问, 正好, 之前使用IntelliJ IDEA 13.1.4这款IDE开发web项目,在开发的过程中,因为有多个web项目 ...

  3. MySQL数据库入门多实例配置

    MySQL数据库入门——多实例配置 前面介绍了相关的基础命令操作,所有的操作都是基于单实例的,mysql多实例在实际生产环境也是非常实用的,因为必须要掌握 1.什么是多实例 多实例就是一台服务器上开启 ...

  4. MYSQL 5.5.32的单机多实例部署

    Centos6.6安装并配置单机多实例的MYSQL数据库 本文介绍安装单机多实例的MYSQL数据库的环境如下: 系统平台环境:Centos6.6 Mysql软件包:Mysql-5.5.32.tar.g ...

  5. MySQL通过rpm安装及其单机多实例部署

    1. CentOS 下安装 MySQL Oracle 收购 MySQL 后,CentOS 为避免 MySQL 闭源的风险,改用 MySQL 的分支 MariaDB:MariaDB 完全兼容 MySQL ...

  6. mysql 5.5多实例部署【图解】

    mysql5.5数据库多实例部署,我们可以分以下几个步骤来完成. 1. mysql多实例的原理 2. mysql多实例的特点 3. mysql多实例应用场景 4. mysql5.5多实例部署方法 一. ...

  7. mysql 5.5多实例部署

    mysql5.5数据库多实例部署,我们可以分以下几个步骤来完成. 1. mysql多实例的原理 2. mysql多实例的特点 3. mysql多实例应用场景 4. mysql5.5多实例部署方法 一. ...

  8. mysql数据库的多实例与主从同步。

    1.MySQL的多实例: 多实例的特点:能够有效地利用服务器的资源,节约服务器的资源 MySQL多实例的配置有两种,第一是使用一个配置文件,这种方法不推荐使用,容易出错:第二种是用多个配置文件,这种方 ...

  9. PHP+mysql数据库简单分页实例-sql分页

    前几天冷月写了一篇博文<php基础编程-php连接mysql数据库-mysqli的简单使用>,很多小伙伴在学习后都知道了php与mysql数据库的连接,今天冷月分享一个简单的分页实例 首先 ...

随机推荐

  1. Python实现各种排序算法的代码示例总结

    Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...

  2. combobox获取值

    easyui-combobox是组合框 ,既可以输入,也可以选择 获取的数据是json格式的  [{"id":"001","text":&q ...

  3. 20160817_Redis配置操作

    ZC: 主要是 做一些配置,使得 java程序能够访问到 redis服务器,主要内容为:ZC: ①.redis服务端服务 重启的命令ZC: ②.取消绑定 本地IP的配置,使得 所有本网段局域网机器都能 ...

  4. 【matlab】膨胀

    clear all;close all; BW=zeros(9,10); BW(4:6,4:7) =1 imshow(BW) hold on SE=strel('square',3) BW2=imdi ...

  5. 如何浏览并管理 Outlook 邮件?

    当你的邮件多起来的时候你就不得不考虑这个问题了,如何处理各种邮件? 如何浏览并管理 Outlook 邮件? 待续~

  6. html5获取经纬度,百度api获取街区名,并使用JS保存进cookie

    引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...

  7. 读javascript高级程序设计14-错误处理与调试

    一  错误类型 ECMA规定了常见的7种错误类型: Error: 基类型.其他常见的错误类型都继承自该类型,一般供开发人员抛出自定义错误. EvalError:该类型会在eval()函数使用异常时被抛 ...

  8. 随机抽奖 --java

    使用Math.random() 1.Math.random() 返回double类型. /** * 随机得到获奖名单 * @param assocs * @param prizeNumber * @r ...

  9. nginx全局变量实例对照 rewrite参考手册

    http://dwz.stamhe.com/index.php?_a=index&_m=show&count=10 remote_addr 客户端ip,如:192.168.4.2 bi ...

  10. ssh下:系统初始化实现ServletContextListener接口时,获取spring中数据层对象无效的问题

    想要实现的功能:SSH环境下,数据层都交由Spring管理:在服务启动时,将数据库中的一些数据加载到ServletContext中缓存起来. 系统初始化类需要实现两个接口: ServletContex ...