欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

程序员文章站 2022-05-02 10:39:18
...

零、写在前面

    为了尝试新技术和业务需要,因此打算搞一套这样的环境玩儿一下

    服务器的安装请见上一篇

  

一、硬件规划

    我用的是自己的本机(8核、16G),划分出三台虚拟机(一主两从--MySQL)

主机名 IP CPU 内存 用途 备注
centos7One 192.168.122.21 2 4 主/写(MySQL)主(Redis) Mysql8/Redis4/Centos7
centos7Two 192.168.122.22 1 2 从/读(MySQL)主(Redis) Mysql8/Redis4/Centos7
centos7Three 192.168.122.23 1 2 从/读(MySQL)从(Redis) Mysql8/Redis4/Centos7
centos7Four 192.168.122.24 1 2 从(Redis) Redis4/Centos7

    基本的规划就是如上面所写

    后续会在这四台服务器上安装redis的集群


二、聊聊其他

    1、 网上好多种安装mysql8的方法,我最开始使用的是编译安装的方式,这种方式的最大缺点就是过程较慢

        特别是make这一步,需要好久好久。。。然后一旦有问题就会彻底崩溃,如果你像我一样没把握

        建议还是像我一样使用更靠谱的yum方式安装比较好

    2、 请先参考这篇文章 https://www.cnblogs.com/LiuChunfu/p/8052890.html

        这篇文章先阐述了一下rpm和yum之间的关联关系,同时也介绍了linux下各个文件夹的一些作用。很不错

三、安装Mysql8

    0、 建立新用户和删除老版本

        如果在安装系统的时候,没有为mysql创建独立的用户和划分独立的空间,那么需要在这里建立一下

        创建用户组和用户
            groupadd mysql
            useradd -r -g mysql -s /mysql
        找到原先安装的mysql的rpm和依赖
            rpm -pa | grep mysql

        如果有显示结果,那么使用下面的命令逐个删除
            yum remove mysql xxx    (xxx就是要删除的文件名) 
        以上的操作不会删除mysql 的配置文件,需要手动操作
            find / -name mysql
        找到所有相关的MySQL的配置信息,然后逐条删除即可
            rm -rf xxx    (xxx)就是配置文件
        由于Mysql在Centos7中收费了,所以Centos7开始免费集成的数据库是MariaDB而安装Mysql会和MariaDB冲突,
        因此需要先删除MariaDB,首先搜索
            rpm -pa | grep mariadb
        可能看到的结果如下
            mariadb-libs-5.5.56-2.e17.x86_64
        删除之
            rpm -e mariadb-libs-5.5.56-2.e17.x86_64
        如果提示“依赖检测失败”,适用如下命令强删
            rpm -e --nodeps mariadb-libs-5.5.56-2.e17.x86_64

    1、下载及安装

        先从这里 https://dev.mysql.com/downloads/repo/yum/ 获取rpm包

        安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

    下载后上传到你的服务器,或者使用wget命令获取

        wget http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm   
    上传成功后,使用yum在本地安装
        yum localinstall mysql80-community-release-el7-1.noarch.rpm
    安装完毕之后,检查一下
        yum repolist enabled | grep "mysql.*-community.*" 
    有类似下图的效果说明成功
安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

    如果看到上图,我们就执行下面的命令,安装MySQL的服务端

    yum install -y mysql-community-server

    一般来说,到这里应该能安装成功,然后我们启动并查看MySQL状态吧,如下图红框所示

        安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

   

    2、密码那些事

        因为没有密码,我们需要让MySQL给我们生成一套,这么玩儿

        先把/etc/my.cnf配置文件中的"default-authentication-plugin=mysql_native_password"解注释

安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

    改完上图所示部分后,重启    systemctl restart mysqld

    这样,MySQL会给我们在/etc/log/mysqld.log下,为root用户生成了一个新的密码

    可以通过grep 'temporary password' /var/log/mysqld.log查看到

安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

    3、现在登录吧

        mysql -uroot -p
        (你的密码)

    但是,你现在还是干不了任何事,比如我想使用某个数据库都不行,说是需要修改密码,那就改呗。。。

    那我们先随手写一个“123456”,还是不行,说是强度太低,如下图

安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

    那咱们改一下强度规则呗

    安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

    如上图所示,第一个是修改强度限制,0是最低级别,数字越大,限制越多

    第二个是密码长度最低不能少于6位,然后我还用之前的那个“123456”,这次没问题啦。   


    4、远程登录

        上面解决的是本地访问,那么远程访问的咋办?修改规则呗

        但是,传统的方式不能用了,如下图所示

安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

        解决方法1:创建一个单独的用户

        安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

            其中,第一个命令是创建一个密码为123456,同时访问ip为全ip(%)的用户

            第二个命令是让这个用户拥有全部的DDL和DML权限

            创建完毕之后,应该就可以使用给这个新用户登录了,只是他没有给别人赋权限的权限

            如果需要,可以如下这么玩儿

            GRANT all PRIVILEGES ON databasename.tablename TO 'username'@'host' IDENTIFIED BY 'xxxxxx' WITH GRANT OPTION;

        解决方法2:直接改权限

            由于MySQL8新增了一种密码类型“caching_sha2_password”

            所以有些拥有这个属性的用户就是不能从远程登录,

            我们可以通过查看mysql数据库的user表获取相关信息

         安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

        上图中的这个lalala用户就铁定不能从远程登录,其实略作修改即可

            update user set plugin='mysql_native_password' where user='lalala';

        同时,上图的root用户也不能从远程登录,而root的原因是由于host的类型只允许本机

            update user set plugin='%' where user='root';

    5、别忘了防火墙

        如果你的服务器之前设置过防火墙的相关,那么进行完上面那步就可以登录了

        如果不行,那就再该点东西吧

        systemctl stop firewalld.service
        systemctl disable firewalld.service
        systemctl mask firewalld.service

        然后,安装并开启iptables

        yum install iptables-services -y 
        systemctl enable iptables
        systemctl start iptables

        再在iptables中加一条关于MySQL的端口限制规则,如下图的两个红框中所示

安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

    重启iptables

    systemctl enable iptables.service
    systemctl restart iptables.service

    到这儿为止,应该就可以了,然后从远程测试一下吧

        安装Centos7 、 Mysql8 集群,实现读写分离 高可用(二)-- 数据库安装篇

        搞定


参考资料

https://blog.csdn.net/managementandjava/article/details/80039650

https://www.linuxidc.com/Linux/2016-09/135288.htm

https://blog.csdn.net/qq_16075483/article/details/80296611