在Debian下通过mysqlmanager多个MySQL实例

有没有人有mysqlmanager运行在Debian上的多个MySQL实例? 问题是,Debian没有提供使用mysqlmanager的init.d脚本。 哦,这对我不起作用。

我试图运行3个实例,这是我启动mysqlmanager后得到的

 #mysqlmanager --defaults-file = / etc / mysql / my.cnf
 ...
 090614 0:42:10启动实例'mysqld2'...
 090614 0:42:10监护人:启动实例“mysqld1”...
 090614 0:42:10启动实例'mysqld1'...
 090614 0:42:10启动实例“mysqld3”...
 090614 0:42:10监护人:启动实例“mysqld3”...
 090614 0:42:10监护人:启动实例“mysqld2”...
 090614 0:42:10启动实例'mysqld2'...
 090614 0:42:10监护人:启动实例“mysqld1”...
 090614 0:42:10启动实例'mysqld1'...
 ...

它只是保持“开始”和“重新启动”,但没有MySQL实例启动。

回答我自己的问题:

mysqld正在重新启动,因为权限问题,正在执行

 #chmod -R mysql:root / var / lib / mysql

固定的。 以前的目录是由mysql:mysql拥有的。

关于mysqlmanager启动脚本,我已经设法破解了一个丑陋的解决scheme,适合我,随时编辑和使用,如果你也需要它:

 #!/斌/庆典
 #
设置-e
设置-u
 $ {DEBIAN_SCRIPT_DEBUG:+ set -v -x}

testing-x / usr / sbin / mysqld || 退出0

 。  / LIB / LSB / INIT-function

 SELF = $(cd $(dirname $ 0); pwd -P)/ $(basename $ 0)
 USER = MySQL的
 PID_FILE =在/ var /运行/ mysqld的/ manager.pid

 mysqlmanager_get_pid(){
     FAIL_PID = -1

    如果[!  -f $ PID_FILE]; 然后
         #尝试按进程名称find它
         PROCESS =`ps -ef |  grep -v grep |  grep mysqlmanager`
        如果[!  $ PROCESS]; 然后
            返回$ FAIL_PID
        其他
            返回$ PROCESS
        科幻
    其他
         PID =`cat $ PID_FILE`
         PROCESS =`ps -ef |  grep -v grep |  grep -c $ PID`
        如果[!  $ PROCESS]; 然后
            返回$ FAIL_PID
        其他
            返回$ PROCESS
        科幻
    科幻
 }

 case“$ {1: - ''}”in
   '开始')
        如果!  mysqlmanager_get_pid; 然后
             / usr / sbin / mysqlmanager --defaults-file = / etc / mysql / my.cnf --run-as-service
        其他
            回声“错误:mysqlmanager已经运行”
        科幻
         ;;

   '停止')
         #我懒得让这个更聪明
         killall -1 mysqlmanager
         killall -1 mysqld
         ;;

   '重新开始')
        设置+ e;  $ SELF停止; 设置-e
         $ SELF开始
         ;;

   *)
        回声“用法:$ SELF start | stop | restart”
        出口1
         ;;
 ESAC

把它放到/etc/init.d/mysql(将原始的mysql脚本移出),

使其可执行

 #chmod + x /etc/init.d/mysql

它应该工作。

也许使用mysqld_multi将是更简单的方法? 我已经分析了SLES中的服务脚本,我发现如果你设置了:

/etc/sysconfig/mysql 

选项:

 MYSQLD_MULTI="no" 

到“是”,而不是正常的守护进程不启动服务器,而是调用mysqld_multi守护进程。

我很遗憾,因为这个方法在Debian中没有实现,但是我相信如果你修改了mysql服务脚本并且添加了使用mysqld_multi守护进程的声明,那么你将拥有具有多个实例的全function服务器。

问候,Vlado