【原创】CentOS 7搭建多实例MySQL8(想要几个搞几个)
<h2 class="md-end-block md-heading"><span style="font-size: 31.5px">起因</span></h2><p> </p>
<p><span style="font-size: 16px"> 最近项目上开始重构,可能会用到主从加读写分离的情况,就想先在本地搭一个出来试试效果,结果百度一搜出来一大堆,然而自己去踩坑的没几个,绝大多数都是去抄的别人的内容,关键是实际应用中还会出错,浏览器开了接近二十个标签页,试了好几个都有问题,完全用不了,时间浪费了不说,还会让你很憋屈,所以就自己搞。</span></p>
<h2 class="md-end-block md-heading"><span style="font-size: 1.5em">一、准备</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">1、首先检查并清理系统中存在的mysql相关文件</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> # 检查系统中是否存在Mysql的文件
</span><span style="color: rgba(0, 0, 255, 1)">find</span> / -<span style="color: rgba(0, 0, 0, 1)">name mysql
# 删除存在mysql的文件或文件夹
</span><span style="color: rgba(0, 0, 255, 1)">rm</span> -rf /usr/lib64/mysql/<span style="color: rgba(0, 0, 0, 1)">
# 检查是否存在mysql的相关依赖
rpm </span>-qa|<span style="color: rgba(0, 0, 255, 1)">grep</span><span style="color: rgba(0, 0, 0, 1)"> mysql
# 卸载mysql的依赖
rpm </span>-e mysql-.....</pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">2、下载对应版本的mysql安装文件</span></h3>
<p class="md-end-block md-p"><span class="md-plain" style="font-size: 16px">因为我使用的是CentOS 7 64位,所以在MySQL官网中选择如下图的操作系统,然后选择tar包进行下载。</span></p>
<p class="md-end-block md-p"><span class="md-pair-s" style="font-size: 16px"><code>在这儿说明下,为什么我要使用tar包进行安装,而不是使用网上普遍的一个正常安装,另一个用rpm安装的方法,因为如果第一个使用yum正常安装,第二个使用本地安装,那么无法指定安装路径,无法将两个mysql放在一起进行系统性管理,所以我在这儿使用tar包来安装多个实例,并且放在同一目录下方便管理与配置。</code></span></p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150124307-1932817516.png" alt=""></p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150153680-816457456.png" alt=""></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> # 在下载前先创建一个mysql用户,为什么要创建MySQL用户?因为解压出来的mysql文件没有任何的属组,以及为了避免在配置、启动时MySQL不能读取某些文件,所以建议使用mysql用户来运行mysql
adduser mysql
# 设置密码
</span><span style="color: rgba(0, 0, 255, 1)">passwd</span><span style="color: rgba(0, 0, 0, 1)"> mysql # 接下来输入两次密码
# 切换用户
</span><span style="color: rgba(0, 0, 255, 1)">su</span><span style="color: rgba(0, 0, 0, 1)"> mysql
# 下载Mysql的tar包
</span><span style="color: rgba(0, 0, 255, 1)">wget</span> https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-el7-x86_64.tar.gz</span>
<span style="color: rgba(0, 0, 0, 1)">
# 解压文件并重命名文件夹为 mysql_01
</span><span style="color: rgba(0, 0, 255, 1)">tar</span> xf mysql-<span style="color: rgba(128, 0, 128, 1)">8.0</span>.<span style="color: rgba(128, 0, 128, 1)">20</span>-el7-x86_64.<span style="color: rgba(0, 0, 255, 1)">tar</span>.gz ./<span style="color: rgba(0, 0, 0, 1)">mysql_01
# 复制一份mysql_01并重命名为mysql_02
</span><span style="color: rgba(0, 0, 255, 1)">cp</span> -r ./mysql_01 ./mysql_02/<span style="color: rgba(0, 0, 0, 1)">
# 切换到root用户,更改两个mysql的数组为mysql用户,然后再切换回mysql用户
exit
</span><span style="color: rgba(0, 0, 255, 1)">chown</span> -R mysql:mysql /home/mysql/mysql_01/ /home/mysql/mysql_02/
<span style="color: rgba(0, 0, 255, 1)">su</span> mysql</pre>
</div>
<p> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">二、修改配置</span></h2>
<p class="md-end-block md-p"><span class="md-plain" style="font-size: 16px">接下来就是对MySQL进行配置,两个MySQL的配置其实是差不多的,只是说路径不同而已,在这儿我就只展示mysql_01的配置,mysql_02则将相应的路径替换成自己的路径即可。</span></p>
<h3 class="md-end-block md-heading"><span class="md-plain">1、自定义配置my.cnf</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> # 切换到mysql_01路径下
cd .</span>/<span style="color: rgba(0, 0, 0, 1)">mysql_01
# 创建配置文件my.cnf,直接使用vim编辑,保存后即可。其中###表示为必须项,#表示为可选项
vim my.cnf
</span>----------以下是文件内容-------------<span style="color: rgba(0, 0, 0, 1)">
### 端口号
port</span>=<span style="color: rgba(128, 0, 128, 1)">10085</span><span style="color: rgba(0, 0, 0, 1)">
### 安装目录
basedir</span>=/home/mysql/mysql_01/<span style="color: rgba(0, 0, 0, 1)">
### 数据存放路径
datadir</span>=/home/mysql/mysql_01/data/<span style="color: rgba(0, 0, 0, 1)">
### 会话文件目录
socket</span>=/home/mysql/mysql_01/<span style="color: rgba(0, 0, 0, 1)">mysql.sock
# 允许连接失败的最大次数
max_connect_errors</span>=<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">
# 服务端的字符集编码
character</span>-set-server=<span style="color: rgba(0, 0, 0, 1)">utf8
# 默认存储引擎
default</span>-storage-engine=<span style="color: rgba(0, 0, 0, 1)">INNODB
# 默认用户
user</span>=<span style="color: rgba(0, 0, 0, 1)">mysql
# 开启慢查询
slow_query_log</span>=<span style="color: rgba(0, 0, 0, 1)">on
# 慢查询日志文件目录
slow_query_log_file</span>=/home/mysql/mysql_01/slow-query.log<br><br><br></pre>
<pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded"> <br> ### 连接服务端使用的端口号 <br> port=10085 <br> <br> ### 会话文件 <br> socket=/home/mysql/mysql_01/mysql.sock<br> <br> # 默认字符集编码 <br> default-character-set=utf8 <br> ---------------文件内容结束--------------------<br> <br> # 在上面的配置中可以看到datadir项中存在data文件夹,而mysql_01下并没有,因此需要创建data文件夹<br> mkdir data</pre>
</div>
<h3 class="md-end-block md-heading"><span class="md-plain">2、修改自带的默认配置</span></h3>
<p class="md-end-block md-p"><span class="md-plain" style="font-size: 16px">接下来就需要修改mysql的默认配置信息</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> # 修改文件中的默认配置信息
vim .</span>/support-files/<span style="color: rgba(0, 0, 0, 1)">mysql.server
# 将文件中的所有有关basedir和datadir的配置全部修改为当前的路径,如下图</span></pre>
</div>
<p> </p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150348116-1723680873.png" alt=""></p>
<p class="md-end-block md-p"><span class="md-plain" style="font-size: 16px">以及修改该文件中加载的MySQL配置文件路径,修改为刚才创建的my.cnf文件,如下图,修改完成后,保存退出。</span></p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150418195-1246690492.png" alt=""></p>
<p class="md-end-block md-p"><span class="md-plain" style="font-size: 16px">同样也需要修改support-files下的另一个文件</span></p>
<div class="cnblogs_code">
<pre> # 修改support-<span style="color: rgba(0, 0, 0, 1)">files文件夹下的mysqld_multi.server文件
vim .</span>/support-files/<span style="color: rgba(0, 0, 0, 1)">mysqld_multi.server
#还是修改basedir和datadir两项属性,如下图所示</span></pre>
</div>
<p> </p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150503749-1029450487.png" alt=""></p>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">三、初始化安装及启动服务</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">1、初始化安装</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> # 切换到mysql_01的根目录
cd </span>/home/mysql/mysql_01/<span style="color: rgba(0, 0, 0, 1)">
# 初始化安装 </span>--defaults-file表示指定初始化的配置文件 --<span style="color: rgba(0, 0, 0, 1)">console表示将初始化信息打印在控制台
.</span>/bin/mysqld --defaults-<span style="color: rgba(0, 0, 255, 1)">file</span>=/home/mysql/mysql_01/my.cnf --initialize --console --user=<span style="color: rgba(0, 0, 0, 1)">mysql
# 初始化成功后,会在控制台中打印出初始化密码,大致格式如下
root@localhost: fa356fgss,</span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-p"><span class="md-plain">2、启动服务</span></h3>
<div class="cnblogs_code">
<pre> # 后台启动当前mysql_01的mysql服务,还是需要去指定配置文件,因为在配置文件中我们设置了一个socket参数,只有按照这个配置文件去启动,才会按照socket配置的路径去生成,否则会自动生成在/tmp/<span style="color: rgba(0, 0, 0, 1)">mysql.sock,如果mysql_02也是这么生成,则会形成覆盖,在连接时造成只能连接一个服务,甚至报错。
.</span>/bin/mysqld_safe --defaults-<span style="color: rgba(0, 0, 255, 1)">file</span>=./my.cnf &<span style="color: rgba(0, 0, 0, 1)">
# 使用命令查看mysql服务是否启动,如下图
netstat </span>-nultp|<span style="color: rgba(0, 0, 255, 1)">grep</span> <span style="color: rgba(128, 0, 128, 1)">10085</span></pre>
</div>
<p> </p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150554062-493103158.png" alt=""></p>
<h2 class="md-end-block md-heading"><span class="md-plain">四、连接数据库与修改密码</span></h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> # 通过上面可以看到mysql服务已经启动,那么就可以连接MySQL了
.</span>/bin/mysql --socket=./mysql.sock -uroot -<span style="color: rgba(0, 0, 0, 1)">p # 输入初始密码
# 修改MySQL登录密码,这儿我的修改为 root,注意末尾的结束符分号
alter user root@localhost identified by </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">"</span>;</pre>
</div>
<p> </p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150623877-831575793.png" alt=""></p>
<p class="md-end-block md-p"><span class="md-plain" style="font-size: 16px">同样配置之后,启动mysql_02,效果如下</span></p>
<p class="md-end-block md-p"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2020.cnblogs.com/blog/1558842/202005/1558842-20200525150708757-1087174571.png" alt=""></p>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"><span class="md-pair-s " style="font-size: 18px"><strong>以上就是MySQL_01的配置,同样的MySQL_02和这个一致,只需要将对应的目录修改为自己的文件路径即可。当安装上多个实例之后,就可以进行主从复制、读写分离等相关配置。</strong></span></p>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"><span style="font-size: 18pt">【</span><span style="font-size: 14pt"><span style="font-size: 18pt">转载请注明 https://www.cnblogs.com/fqgump/p/12957145.html】</span><br></span></p>
<p class="md-end-block md-p"> </p><br><br>
来源:https://www.cnblogs.com/fqgump/p/12957145.html
頁:
[1]