mysql 5.7.31 多实例部署

一、使用mysql_install_db初始化,进行实例创建

1.创建datadir的文件目录

[root@localhost]# mkdir /data/mysql/3307
[root@localhost]# chown -R mysql:mysql /data

2.使用mysql_install_db初始化和配置文件

复制配置文件,并修改创建实例的相关参数

[root@localhost]# cp /etc/my.cnf  /data
[root@localhost]# vim /data/my.cnf

[mysqld]
basedir =/usr/local/mysql
datadir =/data/mysql/3307
port = 3307
socket =/tmp/mysql3307.sock

#lc-messages = en_US
#lc-messages-dir = /usr/share/mysql/
#socket=/var/lib/mysql/mysql.sock

symbolic-links=0
log-error=/var/log/mysqld3307.log
pid-file=/var/run/mysqld/mysqld3307.pid
max_allowed_packet=1048576
#skip-grant-tables

新建Mysql实例初始化。使用mysql_install_db。因为mysqld初始会有很多错误和麻烦

[root@localhost]# mysql_install_db    --defaults-file=/data/my.cnf  --basedir=/usr/local/mysql  --datadir=/data/mysql/3307  --user=mysql

3.SSL连接初始化

[root@localhost]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3307

4.修改密码

修改实例密码。免密配置

[root@localhost]# vim /data/my.cnf
skip-grant-tables

启动3307实例启动

[root@localhost]# mysqld --defaults-file=/data/my.cnf    --user=mysql &

同时,也启动mysql

[root@localhost 3307]# systemctl start mysqld

查看进程

[root@localhost 3307]# ps -ef|grep mysql
mysql     13875      1  0 12:01 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
mysql     14751  12528  3 12:17 pts/2    00:00:00 mysqld --defaults-file=/data/my.cnf --user=mysql   #创建实例的msyql

登录创建的root密码

[root@localhost 3307]# mysql -uroot -P3307 -h127.0.0.1   -p123456
mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

登录再次修改一遍密码

[root@localhost]# mysql -uroot -P3307 -h127.0.0.1 -p123456
mysql> SET PASSWORD = PASSWORD('123456');
mysql> flush privileges;
mysql>show databases;   #执行查看效果
#取消免秘钥密码
[root@localhost]# vim /data/my.cnf
#skip-grant-tables

5.尝试登录

杀死创的实例进程。重启创建实例的mysql

[root@localhost 3307]# kill -9  14751
[root@localhost]# mysqld --defaults-file=/data/my.cnf    --user=mysql &
[root@localhost 3307]# mysql -uroot -P3307 -h127.0.0.1   -p123456
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

二、使用mysqld初始化,进行实例创建

1.创建datadir的文件目录

[root@localhost]# mkdir /data/mysql/3307
[root@localhost]# chown -R mysql:mysql /data

2.使用mysqld初始化和配置文件

  对于初始化过程出现Can’t find messagefile '/usr/share/mysql/english/errmsg.sys,以下操作:

搜索errmsg.sys,确认errmsg.sys

[root@localhost mysql]# find /  -iname  errmsg.sys
/usr/share/mysql/czech/errmsg.sys
/usr/share/mysql/danish/errmsg.sys
/usr/share/mysql/dutch/errmsg.sys
/usr/share/mysql/english/errmsg.sys
/usr/share/mysql/estonian/errmsg.sys
/usr/share/mysql/french/errmsg.sys
/usr/share/mysql/german/errmsg.sys

通过搜索可见在在/usr/share/mysql的子目录下

复制配置文件,并修改创建实例的相关参数

[root@localhost]# cp /etc/my.cnf  /data
[root@localhost]# vim /data/my.cnf

[mysqld]
basedir =/usr/local/mysql
datadir =/data/mysql/3307
port = 3307
socket =/tmp/mysql3307.sock

lc-messages = en_US
lc-messages-dir = /usr/share/mysql/  #配置文件中指定errmsg.sys
#socket=/var/lib/mysql/mysql.sock

symbolic-links=0
log-error=/var/log/mysqld3307.log
pid-file=/var/run/mysqld/mysqld3307.pid
max_allowed_packet=1048576
#skip-grant-tables

创建/var/log/mysqld3307.log文件

[root@localhost]# touch /var/log/mysqld3307.log
[root@localhost]#  chmod -R mysql:mysql   mysqld3307.log

开始Mysqld实例初始化。

[root@localhost]# mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3307 --initialize

3.SSL连接初始化

[root@localhost 3307]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3307 

mysqld尝试启动

[root@localhost 3307]# mysqld --defaults-file=/data/my.cnf    --user=mysql &

第4步骤、第5步骤参照以上

三、其他补充

1.实例的远程登录实现

[root@localhost 3307]# mysql -uroot -P3307 -h127.0.0.1   -p123456
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2.编写mysql实例的启停脚本内容

[root@localhost ~]# vim mysql3307
#!/bin/bash

select=$1

start(){
ther=$(ps -ef|grep mysqld|grep -v grep|grep '\/my.cnf'|wc -l)
   if [ $ther -eq 1 ]
   then
      echo    mysql3307 is running!!
   else
      mysqld --defaults-file=/data/my.cnf    --user=mysql &
      if [ $? == 0  ]
      then
          echo  mysql3307 is ok。
      else
          echo  mysql3307 is failed。
      fi
   fi
}
stop(){
      ther=$(ps -ef|grep mysqld|grep -v grep|grep '\/my.cnf'|wc -l)
      if [ $ther == 0 ]
      then
         echo mysql is not  exist
      else
        ps -ef|grep mysqld|grep -v grep|grep '\/my.cnf'| awk '{print $2}'|xargs kill -9
        if [ $? == 0  ]
        then
            echo  mysql3307 is stop  ok。
        else
            echo  mysql3307 is stop  failed。
        fi

      fi
}
case  $select in
"start")
     #mysqld --defaults-file=/data/my.cnf    --user=mysql &
   start
   ;;
"stop")
     stop
   ;;
"restart")
     stop
     start
   ;;
*)
   No option exists
   ;;
esac

脚本赋予可执行权限,放入到系统环境变量中,例如:

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# cp mysql3307   /usr/bin/

使用命令进行实例的启停和重启

[root@localhost ~]# mysql3307  start
[root@localhost ~]# mysql3307  stop
[root@localhost ~]# mysql3307  restart
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐