mysqld_multi 多实例启动工具

一、MySQL多实例简介

MySQL多实例,简单地说,就是在一台服务器上同时开启多个不同的服务端口(如:3306、3307),同时运行多个MySQL服务进程,这些服务进程通过不同的socket监听来自不同的端口来提供服务;

多实例不仅节省物理主机成本,还有效提升了单台物理主机的CPU、磁盘I/O使用效率,而且还可以在多实例之间做部署数据库HA方案。

随着实例数量的增加,就面临统一管理问题,这样我们就需要用MySQL自带的管理程序 mysqld_multi 来进行管理...

二、MySQL启动流程

mysqld_multi    #多实例管理程序
mysqld      #以前老版本的MySQL最主要的启动方式,里面有很多参数;现在使用多实例就需要用新的 mysql_safe 来启动mysql
mysql_safe    #实则还是调用mysqld,并且会读取mysqld中的my.cnf配置参数来启动mysql,mysql_safe本身也有很多参数,但是这些参数会优先于my.cnf
my.cnf      #mysql的配置文件
my.sock     #mysql创建的sock文件,开启、停止、登陆和管理mysql都是通过这个接口文件

三、接下来,利用 mysqld_multi  配置一个多实例...

安装环境:Centos 6.7 _64
下载mysql-5.5.32.tar.gz编译安装包
yum install -y ncurses-devel libaio-devel
yum install -y cmake
tar zxf mysql-5.5.32.tar.gz
cd mysql-5.5.32
cmake .-DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 -DMYSQL_DATADIR=/application/mysql-5.5.32/data -DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_FAST_MUTEXES=1 -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0
make && make install
ln -s /application/mysql-5.5.32/ /application/mysql
mkdir -p /data/{3306,3307,3308}/data #创建单独实例数据文件夹
useradd mysql -s /sbin/nologin -M
chown -R mysql.mysql /data
cp /application/mysql/bin/* /usr/local/sbin/       #添加环境变量
cd /application/mysql/scripts/ #初始化数据库
./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3306/data/ --user=mysql
./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3307/data/ --user=mysql
./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3308/data/ --user=mysql
/bin/cp /application/mysql/support-files/my-medium.cnf /etc/my.cnf  #拷贝my.cnf配置文件
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld.server #拷贝启动文件
cp /application/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi.server 
#拷贝mysqld_multi程序文件
#修改mysqld_multi.server路径配置
sed -i ‘s#basedir=/usr/local/mysql#basedir=/application/mysql#g‘ /etc/init.d/mysqld_multi.server
sed -i ‘s#bindir=/usr/local/mysql/bin#bindir=/application/mysql/bin#g‘ /etc/init.d/mysqld_multi.server
#添加mysqld_multi用到的/etc/mysqld_multi.cnf配置文件
#这个模板文件可以用命令mysqld_multi --example导出来
[[email protected] scripts]# vim /etc/mysqld_multi.cnf 
[mysqld_multi]
mysqld     = /application/mysql-5.5.32/bin/mysqld_safe
mysqladmin = /application/mysql-5.5.32/bin/mysqladmin
#user       = multi_admin
#password   = my_password
[mysqld2]
socket     = /data/3306/mysql.sock
port       = 3306
pid-file   = /data/3306/mysql.pid
datadir    = /data/3306/data
#language   = /application/mysql-5.5.32/share/mysql/english
user       = mysql
[mysqld3]
socket     = /data/3307/mysql.sock
port       = 3307
pid-file   = /data/3307/mysql.pid
datadir    = /data/3307/data
#language   = /application/mysql-5.5.32/share/mysql/english
user       = mysql
[mysqld4]
socket     = /data/3308/mysql.sock
port       = 3308
pid-file   = /data/3308/mysql.pid
datadir    = /data/3308/data
#language   = /application/mysql-5.5.32/share/mysql/english
user       = mysql

然后就是启动多实例:

#查看数据库状态 
mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf report
[[email protected] etc]# mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf report
Reporting MySQL servers
MySQL server from group: mysqld2 is not running
MySQL server from group: mysqld3 is not running
MySQL server from group: mysqld4 is not running
#启动数据库
[[email protected] etc]# mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf start 2,3,4
[[email protected] etc]# mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf report
Reporting MySQL servers
MySQL server from group: mysqld2 is running
MySQL server from group: mysqld3 is running
MySQL server from group: mysqld4 is running
#停止数据库
[[email protected] etc]# mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf stop 2,3,4
#登陆数据库
mysql -uroot -h127.0.0.1 -P3306
或者指定socket登陆
[[email protected] etc]# mysql -S /data/3306/mysql.sock
时间: 2024-07-28 19:03:32

mysqld_multi 多实例启动工具的相关文章

mysqld_multi 多实例启动mysql

假设服务器之前有一个3306的实例在运行了,我们要再添加一个3316端口的实例. 直接编辑 /etc/my.cnf ,添加如下内容(红色部分是后添加的配置项): [client] user= root socket= /tmp/mysql.sock port= 3306 [mysql] prompt= '[\d] > ' [mysqld] datadir=/bdata/data/nowdb2 socket= /tmp/mysql.sock user=mysql port= 3306 charac

uTools电脑软件快速启动工具

https://gitee.com/weiyunwps618/codes/6jv2qwnx9yukd0g8p74co70 https://www.cnblogs.com/delphixx/p/11804484.html 电脑软件的快捷方式管理我选用uTools软件https://u.tools/uTools的缺点是安装包太大,足足有40多MB,但是非常要用所以首选uToolsuTools的另一个缺点是打开窗口没有类似Executor的历史列表窗口uTools是一个极简.插件化.跨平台的现代桌面软

openstack安装配置—— 实例启动(双网络模型)

    启动实例前至少需要配置好nova和neutron服务,当然实际中cinder服务也是必须的,否则一台虚拟是可以启动,但没有数据卷也是不合常理的.启动实例之前需要事先创建好网络模型,私有网络模型是包含公有网络模型的,所以我们前面配置netron服务时直接选择了私有网络模型,当然此时我们要想启动实例,公有网络模型和私有网络模型我们都可以选择,本实验中我们会先带大家在公有网络模型下启动一个实例,私有网络模型下启动实例要比公有网络下复杂一些. 第一步:创建物理网络 [[email protect

Windows平台下Oracle实例启动过程中日志输出

Windows平台下Oracle实例启动过程中日志输出记录. 路径:D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log 输出内容: Sat Aug 06 20:39:55 2016 Starting ORACLE instance (normal) LICENSE_MAX_SESSION = 0 LICENSE_SESSIONS_WARNING = 0 Picked latch-free SCN scheme 3 Usin

[抛砖引玉一]Win+R 被隐藏的快速启动工具

虽然win + R 很简单, 但是这个快捷键所创造的效率, 确实相当高的.    自以为这个方法是自己一步步发现的, 看到 但是看到善用佳软, 用了和我相同的方法, 不免感到有些光荣. 一两句话能说清楚的问题, 也许不需要发一个帖子, 但私以为win + R 的用处很大, 所以仿照XBate(善用佳软的博主)这篇帖子的格式, 胡诌一番. 话不多说.什么是win + R? win + R 是一个快捷键, 解释为 Windows + Run, 按住Windows徽标键 + R, 启动如下窗口:这个窗

32bit的windows 2008,Oracle实例启动报错ORA-00064

环境:windows 2008 32bit,oracle db 10.2.0.1 32bit 单机,32GB的物理内存 问题:实例启动报错:ORA-00064: object is too large to allocate on this O/S (1,4004280) 现象如下: H:\oracle\product\10.2.0\db_1\BIN>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 5月 2

Linux——oracle数据库实例启动关闭(转)

-->Oracle 数据库实例启动关闭过程 --================================ [[email protected] ~]# su - oracle --查看未启动实例前的进程情况 [[email protected] ~]$ ps -aef |grep oracle root      3332  3300  0 12:20 pts/1    00:00:00 su - oracle oracle    3333  3332  0 12:20 pts/1   

oracle数据库实例启动与关闭

区分数据库与实例:实例是指各种内存结构和服务进程,数据库是指物里存储磁盘空间. 数据库实例启动: startup [nomount | mount | open | force ]  [resetrict]  [pfile=finename] nomount 表示启动实例不加载数据库 mount 表示启动实例.加载数据库并保持数据库关闭状态 open 表示启动实例.加载并打开数据库,默认为此选项 force 表示终止实例并重新启动数据库 resetrict 表示以受限制的会话方式启动数据库 pf

windows 下的oracle实例启动时报错ora-28056

windows下的的oracle ,实例启动时是会向windows操作系统的事件查看器--应用程序 部分写入启动信息的,并且这个写入行为无法用oracle 的参数或者其他手段去禁止. 若是事件查看器--应用程序的日志满了,会导致如下的情况:ORA-28056: Writing audit records to Windows Event Log failed. 清理完日志之后,数据库实例就能启动了,如下: