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连接)

 

  

posted @ 2021-05-26 12:41  吴知客  阅读(1268)  评论(0编辑  收藏  举报