起因

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

一、准备

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.-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= ### 安装目录
basedir=/home/mysql/mysql_01/ ### 数据存放路径
datadir=/home/mysql/mysql_01/data/ ### 会话文件目录
socket=/home/mysql/mysql_01/mysql.sock # 允许连接失败的最大次数
max_connect_errors= # 服务端的字符集编码
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

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

 # 通过上面可以看到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

【原创】CentOS 7搭建多实例MySQL8(想要几个搞几个)的更多相关文章

  1. 【原创】C#搭建足球赛事资料库与预测平台(2) 数据库与XCode组件

            本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录  本篇文章开始将逐步 ...

  2. SpringMVC笔记——SSM框架搭建简单实例

    落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...

  3. centos上搭建git服务--3

    前言:当我们想要实现几个小伙伴合作开发同一个项目,或者建立一个资源分享平台的时候,GIT就是一个很好的选择.当然,既然是一个共有平台,那么把这个平台放到个人计算机上明显是不合适的,因此就要在服务器上搭 ...

  4. CentOs上搭建nginx

    目录 CentOs上搭建nginx 1. 在root环境下安装nginx 1.1 常用工具安装 1.2 关闭iptables规则 1.3 关闭SELinux 1.4 安装C/C++环境和PCRE库 1 ...

  5. Centos 6 搭建邮箱服务器教程

    Centos 6 搭建邮箱服务器主要是是包括了Postfix, Dovecot和 MySQL了,下文我们详细的为各位介绍Centos 6 搭建邮箱服务器教程(Postfix, Dovecot和 MyS ...

  6. CentOS 7 搭建 GitLab

    概述 GitLab 是我在日常工作中使用的代码仓库管理系统,它带有非常友好的 Web 界面,并且功能丰富.下面将介绍我在 CentOS 7 上搭建 GitLab 的步骤,以及遇到的一些问题. 关于不同 ...

  7. CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)

    CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址.服务启动等) 原 一事能狂便少年 发布于 2016/12/27 11:16 字数 1113 阅读 1.3K  收藏 0 ...

  8. CentOS下搭建LAMP环境详解

    前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS ...

  9. CentOS 配置防火墙操作实例(启、停、开、闭端口):

    CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service   iptables status< ...

随机推荐

  1. 【STM32 .Net MF开发板学习-05】PC通过Modbus协议远程操控开发板

    从2002年就开始接触Modbus协议,以后陆续在PLC.DOS.Windows..Net Micro Framework等系统中使用了该协议,在我以前写的一篇博文中详细记载了这一段经历,有兴趣的朋友 ...

  2. 数学--数论-- HDU6298 Maximum Multiple 打表找规律

    Given an integer nn, Chiaki would like to find three positive integers xx, yy and zzsuch that: n=x+y ...

  3. 应用开发实践之关系型数据库(以MySql为例)小结

    本文主要是对目前工作中使用到的DB相关知识点的总结,应用开发了解到以下深度基本足以应对日常需求,再深入下去更偏向于DB本身的理论.调优和运维实践. 不在本文重点关注讨论的内容(可能会提到一些): 具体 ...

  4. 学习笔记之MySQL的使用

    什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文 ...

  5. SQLite使用(一)

    简单介绍SQLite常用API: int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **p ...

  6. python恺撒密码 与 字符串反码 【chr()与ord()函数的两种不同应用】

    恺撒密码  描述 恺撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪ ...

  7. Java——Spring超详细总结

    Spring概述 一.简化Java开发 Spring为了降低Java开发的复杂性,采用了以下四种策略 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面和惯例进行声明 ...

  8. WPF客户端自动升级

    实现原理:通过一个辅助程序(更新程序.exe)比较本地版本号和服务器的版本,若服务器版本新则通过更新程序.exe下载服务器上资源(我是把最新的文件压缩成zip放到服务器上)到本地进行替换. 服务器放置 ...

  9. React Native超简单完整示例-tabs、页面导航、热更新、用户行为分析

    初学React Native,如果没有人指引,会发现好多东西无从下手,但当有人指引后,会发现其实很简单.这也是本人写这篇博客的主要原因,希望能帮到初学者. 本文不会介绍如何搭建开发环境,如果你还没有搭 ...

  10. java基础篇 之 异常丢失

    我们看如下代码: @Slf4j public class Test { public static void main(String[] args) { try { try { test(); } f ...