mysqld_safe启动多个mysql实例
1 名称解释
mysqld: mysql的守护进程, 主要工作是存储
mysqld_safe: 一般用它来启动mysqld。并且监视mysqld的健康状态,在mysqld由于某种错误中断后重新启用它
MySQL Utilities: 提供一组命令行工具用于维护和管理 MySQL 服务器
mysqladmin: 客户端管理工具
Workbench: MySQL的图形化管理工具
2 Mysqld启动方式
2.1 mysqld 直接启动
2.2 通过mysqld_safe 来启动 mysqld
3 linux系统启动Mysqld作为服务
3.1 service mysql start (兼容centos6, 需要些脚本)
3.2 systemctl start mysql (适用于systemd管理的liunx版本
3.3 通过mysqld_multi 启动多个实例 (启动简单, 但关闭服务比较麻烦)
本次是用 service mysql start + mysqld_safe 来启动多个实例。
启动脚本是mysql安装程序自带的(但需要做些修改)
优点:
a 实例之间相互独立;
b 启动或关闭简单;
c 按需启动;
d 所有实例公用一个mysql安装程序(主要3点差异: datadir, pid_file, socket);
e 不会对之前的mysqld进程有任何影响
## 参数假定
假定mysql安装程序位于: /usr/local/mysql
数据保存于: /usr/local/mysql/data
当前配置文件: /etc/my.cnf
当前service启动脚本: /etc/rc.d/init.d/mysql
## 目标
在3307端口新建另一个mysqld_safe启动的mysqld进程
## 步骤
1 初始化配置文件
cp /etc/my.cnf /etc/my3307.cnf
修改:
[mysqld]
port = 3307
datadir = /usr/local/mysql/data3307
socket = /tmp/mysql3307.sock
2 初始化存储目录
mkdir /usr/local/mysql/data3307
mysqld --defaults-file=/etc/my3307.cnf --initilize (记下初始的root密码)
3 初始化启动脚本
cp /etc/rc.d/init.d/mysql /etc/rc.d/init.d/mysql7
修改:
3.1 在basedir= 上面一行增加
port=3307
conf_file=/etc/my3307.cnf
socket=
3.2 lock_file_path="$lockdir/mysql3307"
3.3 parse_server_arguments函数: 增加
--socket=*)
socket=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
3.4 启动命令改为:
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --port="${port}" --socket="${socket}" $other_args >/dev/null &
## 测试
service mysql7 start
service mysql7 status
ps aux | grep 'mysql' 可以看到多个mysqld_safe和mysqld进程
service mysql7 stop
## 连接
mysql -h127.0.0.1 (需带上ip, 不然默认使用socket连接)