博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql 数据库单机多实例部署手记
阅读量:7299 次
发布时间:2019-06-30

本文共 2006 字,大约阅读时间需要 6 分钟。

    最近的研发机器需要部署多个环境,包括数据库。为了管理方便考虑将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_safemysqladmin = /home/root/local/mysql/bin/mysqladmin #mysqld_multi loglog = /web/mysql/multi.log#用户名密码,用以mysqld_multi操作时透传给mysqladmin(初始化时一般为匿名访问,注释掉即可)#user=root#password= #dev server[mysqld3306]user = mysqlport = 3306socket = /web/mysql/dev/var/mysql.sockpid-file = /web/mysql/dev/var/mysqld.pidlog-error = /web/mysql/dev/var/mysqld.logdatadir = /web/mysql/dev/datamax_connections = 200default-storage-engine = innodbcharacter_set_server = utf8mb4 #prd server[mysqld3307]user = mysqlport = 3811socket = /web/mysql/prd/var/mysql.sockpid-file = /web/mysql/prd/var/mysqld.pidlog-error = /web/mysql/prd/var/mysqld.logdatadir = /web/mysql/prd/datamax_connections = 1000default-storage-engine = innodbcharacter_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必须为数字标号;
img_9b09a36f6de95886f52ce82fa1e89c88.jpe

作者:

出处: , 如果喜欢我的文章,请关注我的公众号

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出  如有问题, 可留言咨询.

你可能感兴趣的文章
Tengine 添加第三方监控模块nginx-module-vts
查看>>
黑马程序员-面向对象-09天-4
查看>>
小强的HTML5移动开发之路(14)——Video标签详解
查看>>
大白话5分钟带你走进人工智能-第十八节逻辑回归之交叉熵损失函数梯度求解过程(3)...
查看>>
在wamp下安装bugfree
查看>>
《大道至简》第二章(是懒人创造了方法)读后感
查看>>
【database】database domain knowledge
查看>>
UVa 455 - Periodic Strings
查看>>
使用JDBC连接数据库
查看>>
20172307 2017-2018-2 《程序设计与数据结构》第6周学习总结
查看>>
c#中使用多线程访问winform中控件的若干问题
查看>>
strong_alias && weak_alias && __attribute__
查看>>
js中三个对数组操作的函数 indexOf()方法 filter筛选 forEach遍历 map遍历
查看>>
Histogram Equalization(直方图均衡化)
查看>>
string::substr()简介
查看>>
[LeetCode] Permutations II
查看>>
献给我老公 - Java枚举类型
查看>>
Hadoop简介
查看>>
AD9857和ADS5542昨天调试通过了。
查看>>
MySQL点滴
查看>>