mysql多实例mysqld_multi方式
mysql多实例应用,亲测直接执行脚本可使用,可快速部署多实例环境
#!/bin/bash
set -e
#定义mysql_multi多实例数据的配置,如需增加,在后面函数对应地方需要增加
mydir=/data/mysql_multi
#mysql sock
my1=mysql3307
my2=mysql3308
#mysql_multi name
mycnf1=mysqld3307
mycnf2=mysqld3308
#mysql port
my1_port=
my2_port=
#需要安装机器的内网IP
nei_eth=192.168.0.131
#mysql size
pool_size=2048M #######################分割线,以上内容需要按需修改###################### pack="mysql-5.6.35.tar.gz"
pack_dir="mysql-5.6.35"
conf_file="/usr/local/mysql" if [ ! -f ${pack} ]
then
echo "没有找到mysql安装包"
exit
fi if [ -e /usr/local/mysql* ] || ps -ef | /bin/grep -Ev "$(basename $0)|grep" | /bin/grep -q mysql
then
echo "本机可能已安装有mysql,请检查确认!"
exit
fi if /bin/grep mysql /etc/passwd || /bin/grep mysql /etc/group
then
echo "已存在mysql账户或用户组"
else
groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql
fi yum remove mysql*
yum -y install bison-devel ncurses-devel autoconf tar xf ${pack} \
&& cd ${pack_dir} \
&& echo "configuring..." \
&& cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE= -DWITH_INNOBASE_STORAGE_ENGINE= -DWITH_MEMORY_STORAGE_ENGINE= -DWITH_READLINE= -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT= -DENABLED_LOCAL_INFILE= -DWITH_PARTITION_STORAGE_ENGINE= -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci >> /opt/make_mysql.txt \
&& echo "making..." \
&& make -j `grep processor /proc/cpuinfo | wc -l` >> /opt/make_mysql.txt \
&& echo "installing..." \
&& make install >> /opt/make_mysql.txt if [ "$?" == ];then
echo "程序安装成功,即将配置并启动"
else
echo "mysql安装失败"
exit
fi rm -f /opt/make_mysql.txt chown -R mysql:mysql ${conf_file}
cd ${conf_file}
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
[ -f /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf.bak
cp support-files/mysql.server /etc/init.d/mysql
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
systemctl enable mysql
systemctl start mysql && echo "OK mysql启动成功" || echo "lost mysql启动失败" #配置mysql_multi函数
install_mysql_multi() {
mkdir -p $mydir/{$my1,$my2}/{mydata,log}
chown -R mysql:mysql $mydir/{$my1,$my2}
cd ${conf_file}
scripts/mysql_install_db --basedir=${conf_file} --datadir=$mydir/$my1/mydata --user=mysql
scripts/mysql_install_db --basedir=${conf_file} --datadir=$mydir/$my2/mydata --user=mysql touch $mydir/{$my1,$my2}/log/log-err.err
chown -R mysql:mysql $mydir/{$my1,$my2}/log/log-err.err
cat >${conf_file}/my.cnf<<EOF
[client] [mysqld] [mysqld_multi]
user=mysql
password=mysql
mysqld = ${conf_file}/bin/mysqld_safe
mysqladmin = ${conf_file}/bin/mysqladmin [$mycnf1]
socket = /tmp/$my1.sock
port = ${my1_port}
user=mysql
pid-file = $mydir/$my1/mysqld.pid
datadir = $mydir/$my1/mydata
log-bin= $mydir/$my1/log/binlog
server-id = ${my1_port}
innodb_data_home_dir = $mydir/$my1/mydata
#innodb_data_file_path = ibdata1:12M;ibdata2:100M:autoextend:max:500M
innodb_buffer_pool_size = ${pool_size}
log_error = $mydir/$my1/log/log-err
expire_logs_days =
bind-address = ${nei_eth}
skip-name-resolve [$mycnf2]
socket = /tmp/$my2.sock
port = ${my2_port}
user=mysql
pid-file = $mydir/$my2/mysqld.pid
datadir = $mydir/$my2/mydata
log-bin= $mydir/$my2/log/binlog
server-id = ${my2_port}
innodb_data_home_dir = $mydir/$my2/mydata
#innodb_data_file_path = ibdata1:12M;ibdata2:100M:autoextend:max:500M
innodb_buffer_pool_size = ${pool_size}
log_error = $mydir/$my2/log/log-err
expire_logs_days =
bind-address = ${nei_eth}
skip-name-resolve
EOF #启动各个实例
${conf_file}/bin/mysqld_multi --defaults-file=${conf_file}/my.cnf start ${my1_port},${my2_port}
#授权数据库用户
source /etc/profile
mysql -S /tmp/${my1}.sock <<EOF
SET PASSWORD = PASSWORD('');
GRANT ALL ON *.* TO 'htdb'@"%" IDENTIFIED BY '';
GRANT ALL ON *.* TO 'htdb'@"localhost" IDENTIFIED BY '';
flush privileges;
EOF mysql -S /tmp/${my2}.sock <<EOF
SET PASSWORD = PASSWORD('');
GRANT ALL ON *.* TO 'htdb'@"%" IDENTIFIED BY '';
GRANT ALL ON *.* TO 'htdb'@"localhost" IDENTIFIED BY '';
flush privileges;
EOF
}
#调用函数
install_mysql_multi
PS:
如果mysql启动正常,多实例启动不了,看下err日志报错应该是innodb_data_file_path设置的大小有关,看下mydata下ibdata1的值,然后设置上去应该就好了;
如果是测试环境,可以直接去掉innodb_data_home_dir和innodb_data_file_path;
编了好久终于编译好了这个多实例的脚本,大部分情况下可以直接使用的;
需求不同需要修改一下里面的参数!
mysql多实例mysqld_multi方式的更多相关文章
- 在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式
(一)MySQL多实例概述 实例是进程与内存的一个概述,所谓MySQL多实例,就是在服务器上启动多个相同的MySQL进程,运行在不同的端口(如3306,3307,3308),通过不同的端口对外提供服务 ...
- 基于mysqld_multi实现MySQL多实例配置
环境: 操作系统 CentOS7.5(已安装MySQL) 主机名 localhost 本机安装路径为 /usr/local/mysql 实验初始配置:所有主机关闭防火墙与selinux [ro ...
- MYSQL多实例配置方法 mysqld_multi方法
在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi 1.修改my.cnf 如一个定义两个实例的参考配置: [mysqld_ ...
- springMVC注解方式+easyUI+MYSQL配置实例
刚接触springMVC,使用的注解方式,也在学习阶段,所以把自己学习到的记下来.本文利用springMVC从数据库读取用户信息为例,分享一下. 1.准备相关架包及资源.因为使用springMVC+e ...
- MySQL多实例的环境下,服务器端本地连接到指定实例的问题(sock方式连接)
涉及到sock连接的问题. 为了测试MySQL的某些个特性,在一个机器上安装了多个MySQL的实例,如下截图,有两个实例,一个端口是8000,一个端口是8001.在使用mysql -uroot -p ...
- mysql多实例的配置和管理
原文地址:mysql多实例的配置和管理 作者:飞鸿无痕 多实例mysql的安装和管理 mysql的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...
- mysql 4种启动方式
mysql 4种启动方式 都是去调用mysqld文件 1. mysqld 启动 进入mysqld文件所在目录(/../libexec/mysqld) ./mysqld --defaults-file= ...
- Mysql多实例 安装以及配置
MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...
- MySQL多实例配置(两)
MySQL操作和维护一个集中的数据库的.它可以由一个单一的执行MySQL在数据库服务器,部署多MySQL示例.这个功能是由mysqld_multi实现.mysqld_multimysqld的服务进程. ...
随机推荐
- Spark standalone模式的安装(spark-1.6.1-bin-hadoop2.6.tgz)(master、slave1和slave2)
前期博客 Spark运行模式概述 Spark standalone简介与运行wordcount(master.slave1和slave2) 开篇要明白 (1)spark-env.sh 是环境变量配 ...
- 用Gradle 构建你的android程序
前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目 ...
- 【Qt开发】更改应用程序图标和任务栏图标
说明 实际开发过程中,生成的应用文件不会用默认的图标,同时程序启动后任务栏的图标也需要修改,还有窗口的图标,这样显得程序不那么low.更改程序的图标有多种方式,基于Qt Creator或vs开发的方式 ...
- 【Lua】linux下lua+mod_lwt环境搭建
Lua 是一个小巧的脚本语言.它具有轻量级.可扩展等优势.它可以作为一个强大.轻量的脚本语言,供任何需要的程序使用. LWT (Lua Web Tools) 可让你使用 Lua 开发 Web 应用,并 ...
- input输入提示历史记录
一般便于用户的输入习惯,我们都会提示历史消息,让用户有更好的使用体验,以前可能比较多朋友会用js来实现,现在HTML5的datalist可以轻松帮我们实现这个功能!只需以下几行代码 <!doct ...
- Android OpenGL教程-第二课【转】
第二课 你的第一个多边形: 在第一个教程的基础上,我们添加了一个三角形和一个四边形.也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制的模型都会被分解为这两种简单的图形. 读完了 ...
- VMware workstation 虚拟机安装Windows Server 2008 r2
问题秒速: VMware workstation 虚拟机安装Windows Server 2008 r2,配置好参数后,选择开机,报错,错误如图:
- ASP.NET Web API根据代码注释生成Help文档
使用Visual Studio新建一个ASP.NET Web API项目,直接运行,查看Help文档可以看到如下的API帮助说明 如何在Description中显示描述. 1. 打开Controlle ...
- [Java反射基础一]Class类的使用
任何一个类都是Class类的实例对象,这个实例对象有三种表示方式 第一种表示方式(任何一个类都有一个隐含的静态成员变量class): Class c1 = Foo.class; 第二种表示方式(已知该 ...
- 简单工厂模式的C++、Java实现
1.简单工厂模式UML UML如下: 图1. 简单工厂模式UML 2.C++实现 类视图如下: 图2. C++实现简单工厂模式类视图 其中,SimpleFactory实现为: Product * Si ...