由于项目的需求,在一台服务器上面需要运行多个mysql实例来完成,接下来www.gui2000.com就为大家详细的介绍一下mysql多端口配置启动多个实例,有需要的小伙伴可以参考一下:

 

1、准备工作:

mysql -V

    首先我们要查看一下当前服务器上面的Mysql的版本,因为5.7.6之后mysql初始化数据库使用的是mysqld,5.6及以前的版本是使用的mysql_install_db初始化数据库

2、复制my.cnf配置文件:

cp /etc/my.cnf /etc/my3307.cnf

文件名可以根据自己的喜好命名,我是以将要新开的端口来命名。

3、修改配置文件:

    对应参数修改如下:

vim /etc/my3307.cnf
[client]
port = 3307
socket = /tmp/mysql3307.sock
[mysqld]
port = 3307
socket = /tmp/mysql3307.sock
datadir = /usr/local/mysql/var3307
innodb_data_home_dir = /usr/local/mysql/var3307
innodb_log_group_home_dir = /usr/local/mysql/var3307

4、初始化数据库:

    (1)、5.6及以前版本初始化:

cd /usr/local/mysql/scripts/
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --defaults-file=/etc/my3307.cnf
     参数解读:--basedir为mysql安装目录,--defaults-file为刚修改的配置文件,mysql_install_db文件有些版本的数据库是在scripts目录下,如果这个目录下没有就看下bin目录文件试是否存在。

    (2)、5.7及以后版本初始化:

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf --initialize-insecure --user=mysql --basedir=/usr/local/mysql

     MySQL5.7使用mysqld命令初始化数据,--initialize-insecure--initialize参数可以定制密码复发度、有效期,[email protected]

 

    初始化参数解读:

--defaults-file:指定配置文件,该参数必须放在第一个,不然会报错
--user :以用户身份运行mysqld服务
--basedir :安装目录的路径
--datadir :数据库根目录的路径
--initialize-insecure :无限制,无临时密码(推荐)
--initialize 参数功能:
对于密码复杂度进行定制
密码过期时间,默认180天
[email protected]

5、启动3307数据库:

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf 2>&1 >/dev/null &

5.6及以下版本数据库密码默认为空,登录成功,修改为自己的密码即可

6、数据库登录:

    (1)、sock方式:

mysql -S /tmp/mysql3307.sock -u root
    (2)、端口方式:
mysql -h 127.0.0.1 -P 3307 -u root

7、设置多端口mysql服务脚本:

    设置多端口mysql服务脚本,方便我们启动关闭数据库,

vim /etc/init.d/mysqlp
     脚本内容如下:
#!/bin/sh
[ -f /etc/init.d/functions ]&&. /etc/init.d/functions||exit
#Define Variables
Port=$1
Mysql_sock=/tmp/mysql${Port}.sock
Path=/usr/local/mysql/bin
RETVAL=0
Defaults_file=/etc/my${Port}.cnf
#Define Start Function
start() {
  if [ ! -e "$Mysql_sock" ];then
    /bin/sh $Path/mysqld_safe --defaults-file=$Defaults_file 2>&1 >/dev/null &
    RETVAL=$?
    if [ $RETVAL -eq 0 ];then
        action "Starting $Port MySQL..." /bin/true
      else
        action "Starting $Port MySQL..." /bin/false
    fi
    else
      echo "$Port MySQL is Running..."
  fi
  return $RETVAL
}
 
#Define Stop Function
stop() {
  if [ ! -e "$Mysql_sock" ];then
      echo "$Port MySQL is Stopped..."
    else
      Mysql_datadir=`sed -n -r 's/.*datadir.*=[[:space:]](.*).*/1/p' $Defaults_file`
      Mysqld_pid_file_path=$Mysql_datadir/`hostname`.pid
      Mysqld_pid=`cat "$Mysqld_pid_file_path"`
      kill $Mysqld_pid
      RETVAL=$?
      if [ $RETVAL -eq 0 ];then
        action "Stopping $Port MySQL..." /bin/true
      else
        action "Stopping $Port MySQL..." /bin/false
      fi
  fi
  return $RETVAL
}
 
case "$2" in
  start)
        start
        RETVAL=$?
        ;;
  stop)
        stop
        RETVAL=$?
        ;;
  restart)
        stop
while [ -f "$Mysqld_pid_file_path" ]
do
sleep 1
done
        start
        RETVAL=$?
        ;;
  *)
        echo -e "USAGE:$0 {3307|3308|...} {start|stop|restart}"
        RETVAL=2
        ;;
esac
exit $RETVAL

8、修改脚本权限:

chmod +x /etc/init.d/mysqlp

9、操作命令:

service mysqlp 3307 start
service mysqlp 3307 stop
service mysqlp 3307 restart

 

 

以上就是www.gui2000.com为大家介绍的关于Mysql多端口启动配置的全部内容了,希望对大家有所帮助,了解更多相关文章请关注www.gui2000.com网!