MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]安装环境: CentOS版本:CentOS7.6.1810 MySQL版本:5.7.9 以前一些很low的方法是: 解压两个mysql,分别放到不同文件夹。 其实在mysql中已经考虑到了多实例安装…

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

安装环境:

CentOS版本:CentOS7.6.1810
MySQL版本:5.7.9

代码100分

以前一些很low的方法是:

代码100分解压两个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

创建两个数据目录:

代码100分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

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

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

yum -y install perl perl-devel

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

mysqld_multi report

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

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

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

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

开机启动配置:

一般情况下用命令:

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...
"
        # 这里建议用绝对路径,不然会找不到mysqld_multi命令
        /usr/local/mysql/bin/mysqld_multi --defaults-file=/etc/my.cnf start 1,2
}
function_stop_mysql()
{
        printf "Stoping MySQL...
"
        # 这里建议用绝对路径,不然会找不到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...
"
        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目录中

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

如果脚本报错:

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

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

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

注:

#系统在执行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命令查看端口状态如下,则配置成功。

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

若有错不要慌,可以通过命令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的内容改为:

MySQL5.7多实例安装及开机启动配置(亲测)[通俗易懂]

完结!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6940.html

(0)
上一篇 2023-03-30
下一篇 2023-03-30

相关推荐

  • Mysql锁总结_落地式锁客方案培训总结

    Mysql锁总结_落地式锁客方案培训总结今天我们来介绍一下Mysql中不同类型的锁 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来 实现这些访问规则的重要数据…

    2023-01-26
    151
  • sql数据库无法连接到服务器_sqlserver无法启动服务

    sql数据库无法连接到服务器_sqlserver无法启动服务我们将 身份验证 选择为 SQL Server 身份验证。输入刚刚创建的用户名和密码: 但是现在还是不能直接使用,因为权限问题。你会看到下面的错误提示框: 解决问题的方法

    2023-06-17
    147
  • python如何开发gui程序(python做GUI)

    python如何开发gui程序(python做GUI)在网页中下载python3解释器,我下载时候,版本是选择的是3.3,因为python3和python2语法上有些区别,所以大家就跟我一样都用python3吧,或许有朋友对于“语法”这个词不明白,没关系,后面小编会给大家讲到的。下好后,文件名为python-3.3.3.msi,当然因为我们下载时间不同,可能文件有所不同,比如你下的可能是python-3.4.0.msi,因为这个软件也是在不断升级中的

    2023-11-27
    124
  • 用Python Canvas创建视觉效果的Web应用

    用Python Canvas创建视觉效果的Web应用Python是一种非常流行的编程语言,因为它易于学习、灵活且可以用于多种用途,包括Web开发。而Python的Canvas API则是创建交互式Web应用程序的有力工具。在本文中,我们将探索如何使用Python Canvas创建出色的视觉效果,以增强Web应用程序的用户体验。

    2024-01-11
    110
  • PYTHON批量注释工具

    PYTHON批量注释工具在Python开发过程中,注释是不可或缺的一个部分。良好的注释可以使代码更加易读易懂,便于后期维护。但是,在很长一段时间里,Python并没有提供一个批量注释的快捷方式,这让一些开发者感到非常困扰。

    2024-09-15
    22
  • sql server如何通过排序控制insert into … select … 语句的记录插入顺序「建议收藏」

    sql server如何通过排序控制insert into … select … 语句的记录插入顺序「建议收藏」脚本: /* 说明:sql server如何通过排序控制insert into … select … 语句的记录插入顺序 脚本来源:https://www.cnblogs.com/zhang5

    2023-03-01
    146
  • Python中的断言: 定义及用法

    Python中的断言: 定义及用法在Python中,断言(assert)是一种用于调试的有效工具,它允许你核实某个条件是否为真,如果该条件不满足,就会抛出异常。

    2024-01-27
    133
  • 数据分列后怎么是乱码_php导入sql文件

    数据分列后怎么是乱码_php导入sql文件数据库大概长这样 导出,格式选择 csv for ms excel 导出的csv文件用记事本打开,另存为txt格式,编码选择ANSI 把txt文件丢到excel里打开,发现所有内容都在同一列,长这样

    2023-02-08
    150

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注