起因
最近项目上开始重构, 可能会用到主从加读写分离的情况, 就想先在本地搭一个出来试试效果, 结果百度一搜出来一大堆, 然而自己去踩坑的没几个, 绝大多数都是去抄的别人的内容, 关键是实际应用中还会出错, 浏览器开了接近二十个标签页, 试了好几个都有问题, 完全用不了, 时间浪费了不说, 还会让你很憋屈, 所以就自己搞.
一, 准备
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]
来源: https://www.cnblogs.com/fqgump/p/12957145.html