• 【原创】CentOS 7搭建多实例MySQL8(想要几个搞几个)


    起因

     最近项目上开始重构,可能会用到主从加读写分离的情况,就想先在本地搭一个出来试试效果,结果百度一搜出来一大堆,然而自己去踩坑的没几个,绝大多数都是去抄的别人的内容,关键是实际应用中还会出错,浏览器开了接近二十个标签页,试了好几个都有问题,完全用不了,时间浪费了不说,还会让你很憋屈,所以就自己搞。

    一、准备

    1、首先检查并清理系统中存在的mysql相关文件

     # 检查系统中是否存在Mysql的文件
     find / -name mysql
     ​
     # 删除存在mysql的文件或文件夹
     rm -rf /usr/lib64/mysql/
     ​
     # 检查是否存在mysql的相关依赖
     rpm -qa|grep mysql
     ​
     # 卸载mysql的依赖
     rpm -e mysql-.....

    2、下载对应版本的mysql安装文件

    因为我使用的是CentOS 7 64位,所以在MySQL官网中选择如下图的操作系统,然后选择tar包进行下载。

    在这儿说明下,为什么我要使用tar包进行安装,而不是使用网上普遍的一个正常安装,另一个用rpm安装的方法,因为如果第一个使用yum正常安装,第二个使用本地安装,那么无法指定安装路径,无法将两个mysql放在一起进行系统性管理,所以我在这儿使用tar包来安装多个实例,并且放在同一目录下方便管理与配置。

     # 在下载前先创建一个mysql用户,为什么要创建MySQL用户?因为解压出来的mysql文件没有任何的属组,以及为了避免在配置、启动时MySQL不能读取某些文件,所以建议使用mysql用户来运行mysql
     adduser mysql
     # 设置密码
     passwd mysql # 接下来输入两次密码
     ​
     # 切换用户
     su mysql
     ​
     # 下载Mysql的tar包
     wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-el7-x86_64.tar.gz
     ​
     # 解压文件并重命名文件夹为 mysql_01
     tar xf mysql-8.0.20-el7-x86_64.tar.gz ./mysql_01
     ​
     # 复制一份mysql_01并重命名为mysql_02
     cp -r ./mysql_01 ./mysql_02/
     ​
     # 切换到root用户,更改两个mysql的数组为mysql用户,然后再切换回mysql用户
     exit
     chown -R mysql:mysql /home/mysql/mysql_01/ /home/mysql/mysql_02/
     su mysql

    二、修改配置

    接下来就是对MySQL进行配置,两个MySQL的配置其实是差不多的,只是说路径不同而已,在这儿我就只展示mysql_01的配置,mysql_02则将相应的路径替换成自己的路径即可。

    1、自定义配置my.cnf

     # 切换到mysql_01路径下
     cd ./mysql_01
     ​
     # 创建配置文件my.cnf,直接使用vim编辑,保存后即可。其中###表示为必须项,#表示为可选项
     vim my.cnf
     ----------以下是文件内容-------------
     [mysqld]                              
     ### 端口号                                 
     port=10085                            
                                           
     ### 安装目录                                
     basedir=/home/mysql/mysql_01/         
                                           
     ### 数据存放路径                              
     datadir=/home/mysql/mysql_01/data/    
                                           
     ### 会话文件目录                              
     socket=/home/mysql/mysql_01/mysql.sock
                                           
     # 允许连接失败的最大次数                         
     max_connect_errors=10                 
                                           
     # 服务端的字符集编码                           
     character-set-server=utf8             
                                           
     # 默认存储引擎                              
     default-storage-engine=INNODB         
                                           
     # 默认用户                                
     user=mysql                            
                                           
     # 开启慢查询                               
     slow_query_log=on                     
                                           
     # 慢查询日志文件目录                           
     slow_query_log_file=/home/mysql/mysql_01/slow-query.log


     [client]                              
     ### 连接服务端使用的端口号                        
     port=10085
     ​
     ### 会话文件                                
     socket=/home/mysql/mysql_01/mysql.sock
                                           
     # 默认字符集编码                            
     default-character-set=utf8
     ---------------文件内容结束--------------------
     ​
     # 在上面的配置中可以看到datadir项中存在data文件夹,而mysql_01下并没有,因此需要创建data文件夹
     mkdir data

    2、修改自带的默认配置

    接下来就需要修改mysql的默认配置信息

     # 修改文件中的默认配置信息
     vim ./support-files/mysql.server
     # 将文件中的所有有关basedir和datadir的配置全部修改为当前的路径,如下图

    以及修改该文件中加载的MySQL配置文件路径,修改为刚才创建的my.cnf文件,如下图,修改完成后,保存退出。

    同样也需要修改support-files下的另一个文件

     # 修改support-files文件夹下的mysqld_multi.server文件
     vim ./support-files/mysqld_multi.server
     ​
     #还是修改basedir和datadir两项属性,如下图所示

     

    三、初始化安装及启动服务

    1、初始化安装

     # 切换到mysql_01的根目录
     cd /home/mysql/mysql_01/
     ​
     # 初始化安装   --defaults-file表示指定初始化的配置文件    --console表示将初始化信息打印在控制台
     ./bin/mysqld --defaults-file=/home/mysql/mysql_01/my.cnf --initialize --console --user=mysql
     ​
     # 初始化成功后,会在控制台中打印出初始化密码,大致格式如下
     root@localhost: fa356fgss,

    2、启动服务

     # 后台启动当前mysql_01的mysql服务,还是需要去指定配置文件,因为在配置文件中我们设置了一个socket参数,只有按照这个配置文件去启动,才会按照socket配置的路径去生成,否则会自动生成在/tmp/mysql.sock,如果mysql_02也是这么生成,则会形成覆盖,在连接时造成只能连接一个服务,甚至报错。
     ./bin/mysqld_safe --defaults-file=./my.cnf &
     ​
     # 使用命令查看mysql服务是否启动,如下图
     netstat -nultp|grep 10085

    四、连接数据库与修改密码

     # 通过上面可以看到mysql服务已经启动,那么就可以连接MySQL了
     ./bin/mysql --socket=./mysql.sock -uroot -p   # 输入初始密码
     ​
     # 修改MySQL登录密码,这儿我的修改为 root,注意末尾的结束符分号
     alter user root@localhost identified by "root";

    同样配置之后,启动mysql_02,效果如下

     

    以上就是MySQL_01的配置,同样的MySQL_02和这个一致,只需要将对应的目录修改为自己的文件路径即可。当安装上多个实例之后,就可以进行主从复制、读写分离等相关配置。

     

     

    转载请注明 https://www.cnblogs.com/fqgump/p/12957145.html

     

  • 相关阅读:
    深入理解JavaScript系列(17):面向对象编程之概论
    深入理解JavaScript系列(16):闭包(Closures)
    深入理解JavaScript系列(15):函数(Functions)
    深入理解JavaScript系列(14):作用域链(Scope Chain)
    SSM框架之多数据源配置
    开源项目之架构分享
    SpringBoot实战(十二)之集成kisso
    开源项目之kisso
    MP实战系列(十八)之XML文件热加载
    MP实战系列(十七)之乐观锁插件
  • 原文地址:https://www.cnblogs.com/fqgump/p/12957145.html
Copyright © 2020-2023  润新知