mysql 多实例开机自启动_MySQL5.7多实例安装及开机启动配置(亲测)

本文详细介绍了在CentOS7.6上安装MySQL5.7多实例并实现开机自启动的步骤。首先,配置了两个MySQL实例分别监听3307和3308端口,然后初始化数据目录,设置权限,初始化数据库并更改密码。接着,通过编写启动脚本mysqlauto.sh并将其添加到/etc/rc.d/rc.local中以实现开机启动。最后,检查了多实例的运行状态,并提醒读者注意可能遇到的错误及其解决办法。
摘要由CSDN通过智能技术生成

安装环境:

CentOS版本:CentOS7.6.1810

MySQL版本:5.7.9

以前一些很low的方法是,解压两个mysql,分别放到不同文件夹,其实在mysql中已经考虑到了多实例安装的情况。也有相应的脚本命令的支持。

现在安装两个mysql 一个3307,3308

新建 /etc/my.cnf 配置如下:

[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user = root #登陆数据库用户

password = root1234% #登陆数据库密码,用于关闭数据库,两台数据库密码设置一样

[mysqld1]

user = mysql

port = 3307

socket = /tmp/mysql3307.sock

pid-file = /usr/local/mysql/data3307/mysql.pid

datadir = /usr/local/mysql/data3307

language = /usr/local/mysql/share/mysql/english

log_error = 3307_error.log

[mysqld2]

user = mysql

port = 3308

socket = /tmp/mysql3308.sock

pid-file = /usr/local/mysql/data3308/mysql.pid

datadir = /usr/local/mysql/data3308

language = /usr/local/mysql/share/mysql/english

log_error = 3308_error.log

创建两个数据目录:

mkdir /usr/local/mysql/data3307

mkdir /usr/local/mysql/data3308

chown mysql.mysql /data{3307…3308}

数据库初始化:

mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data3307

mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data3308

cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multid

查看状态

mysqld_multi report

6095472891d67a114c172143e0d2fe0b.png

这个时候发现还需要perl的环境,安装

yum -y install perl perl-devel

在运行,发现已经有实例了

mysqld_multi report

94b10743f530821a66490fcb9d94ccd3.png

mysqld_multi start

启动,分别修改密码,允许远程连接

mysql -u root -S /tmp/mysql.sock1 -p -P3307

mysql -u root -S /tmp/mysql.sock2 -p -P3308

set password = ‘root1234%’;

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root12345’;

flush privileges;

检查多实例运行状态:

mysqld_multi report

5ef344fdbb95e9fd254c7bb78fc60aca.png

此时多实例安装成功。。。

开机启动配置:

一般情况下用命令:

chkconfig mysqld_multid on

但是该命令在多实例场景下是不起作用的。

Mysql多实例配置成功后,想让配置成开机自启。

首先看一下Linux启动的知识点,顺序如下:

1. 加载内核

2. 执行init程序

3. /etc/rc.d/rc.sysinit # 由init执行的第一个脚本

4. /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式,linux 共有7种运行模式,后续会介绍。

5. /etc/rc.d/rc.local # 相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)

6. /sbin/mingetty # 等待用户登录

这里方法有好几种,我们选择第五条,即将执行命令加到/etc/rc.d/rc.local 中,命令如下。

首先,先创建自动启动mysqlauto.sh文件:

#!/bin/bash

mysql_port=$2

mysql_username="root"

mysql_password="root1234%"

function_start_mysql()

{

printf "Starting MySQL...\n"

# 这里建议用绝对路径,不然会找不到mysqld_multi命令

/usr/local/mysql/bin/mysqld_multi --defaults-file=/etc/my.cnf start 1,2

}

function_stop_mysql()

{

printf "Stoping MySQL...\n"

# 这里建议用绝对路径,不然会找不到mysqladmin命令

/usr/local/mysql/bin/mysqladmin -u root -proot1234% -S /tmp/mysql${mysql_port}.sock shutdown

# /usr/local/mysql/bin/mysqladmin -u root -proot1234% -S /tmp/mysql3308.sock shutdown

}

function_restart_mysql()

{

printf "Restarting MySQL...\n"

function_stop_mysql

function_start_mysql

}

function_kill_mysql()

{

kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')

kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')

}

case $1 in

start)

function_start_mysql;;

stop)

function_stop_mysql;;

kill)

function_kill_mysql;;

restart)

function_stop_mysql

function_start_mysql;;

*)

esac

将mysqlauto.sh文件放在/opt/script目录中

ff61be44c4a58534baf8b14a3a2b8e21.png

如果脚本报错:

sed -i ‘s/\r$//’ mysqlauto.sh

其次,系统在执行rc.local文件后才会加载环境变量,所以需要将rc.local的内容改为:

3351f81beb84321da65fcdb36fb78b6a.png

注:

#系统在执行rc.local文件后才会加载环境变量,故有下面配置:

MYSQL_HOME=/usr/local/mysql

PATH=MYSQLHOME/bin:MYSQL

HOME/bin:PATH

source /root/.bash_profile

#分别启动3307和3308端口

/opt/script/mysqlauto.sh start 3307

/opt/script/mysqlauto.sh start 3308

重启机器:

通过netstat命令查看端口状态如下,则配置成功。

b6f41cd1c28bba0b9b5a4dca382642e8.png

若有错不要慌,可以通过命令systemctl list-units –type=service查看报错信息,示例如下:

[root@localhost ~]# systemctl status rc-local.service

● rc-local.service - /etc/rc.d/rc.local Compatibility

Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static; vendor preset: disabled)

Active: failed (Result: exit-code) since 四 2019-06-20 13:20:45 CST; 2min 39s ago

Process: 6554 ExecStart=/etc/rc.d/rc.local start (code=exited, status=1/FAILURE)

6月 20 13:20:45 localhost.localdomain rc.local[6554]: in your path. The command is available from the latest

6月 20 13:20:45 localhost.localdomain rc.local[6554]: MySQL distribution.

6月 20 13:20:45 localhost.localdomain rc.local[6554]: ABORT: Can't find command 'my_print_defaults'.

6月 20 13:20:45 localhost.localdomain rc.local[6554]: This command is available from the latest MySQL

6月 20 13:20:45 localhost.localdomain rc.local[6554]: distribution. Please make sure you have the command

6月 20 13:20:45 localhost.localdomain rc.local[6554]: in your PATH.

6月 20 13:20:45 localhost.localdomain systemd[1]: rc-local.service: control process exited, code=exited status=1

6月 20 13:20:45 localhost.localdomain systemd[1]: Failed to start /etc/rc.d/rc.local Compatibility.

6月 20 13:20:45 localhost.localdomain systemd[1]: Unit rc-local.service entered failed state.

6月 20 13:20:45 localhost.localdomain systemd[1]: rc-local.service failed.

[root@localhost ~]# export PATH=/usr/local/mysql/bin:$PATH

这是未设置mysql环境变量引发的,系统在执行rc.local文件后才会加载环境变量,所以需要将rc.local的内容改为:

4edb07bac0698c473cf9033c39d5f14f.png

完结!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值