当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    Springboot + Mysql8实现读写分离功能

    栏目:win服务器问题汇总 时间:2019-10-16 15:46

    在实际的生产环境中,为了确保数据库的稳定性,我们一般会给数据库配置双机热备机制,这样在master数据库崩溃后,slave数据库可以立即切换成主数据库,通过主从复制的方式将数据从主库同步至从库,在业务代码中编写代码实现读写分离(让主数据库处理 事务性增、改、删操作,而从数据库处理查询操作)来提升数据库的并发负载能力。

    下面我们使用最新版本的Mysql数据库(8.0.16)结合SpringBoot实现这一完整步骤(一主一从)。

    安装配置mysql

    从 https://dev.mysql.com/downloads/mysql/页面下载mysql安装包,我这里下载的是mysql8.0.16 Linux-Generic.

    准备两台虚拟机用作安装mysql,并将下载后的文件mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz上传至服务器/app/mysql

    192.168.249.131 CENTOS7 主
    192.168.249.129 CENTOS7 从

    查看防火墙状态,如果启动需要先关闭防火墙

    service firewalld status ## 查看防火墙状态
    service firewalld stop  ## 关闭防火墙
    使用如下命令将xz文件解压成tar文件
    xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz

    解压安装包

    tar -xvf mysql-8.0.16-linux-gl-ibc2.12-x86_64.tar

    在/app/mysql下建立data文件夹,用于存放数据

    创建mysql用户组和mysql用户

    groupadd mysql                 ## 创建用户组
    useradd -g mysql -d /app/mysql mysql  ## 在用户组下创建mysql用户并授权相关目录
    groupdel mysql                 ## 删除用户组名(若报已存在相关用户组)
    userdel mysql   ## 删除用户(若报已存在相关用户)

    初始化安装mysql数据库

    ./mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysqld --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data --initialize
    
    2019-07-01T02:05:52.681626Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    2019-07-01T02:05:52.681694Z 0 [System] [MY-013169] [Server] /app/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.16) initializing of server in progress as process 1479
    2019-07-01T02:05:52.681726Z 0 [ERROR] [MY-010338] [Server] Can't find error-message file '/app/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
    2019-07-01T02:05:55.713747Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xa6(H>rK/r<E
    2019-07-01T02:05:57.303240Z 0 [System] [MY-013170] [Server] /app/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.16) initializing of server has completed

    注意,此时mysql会生成一个默认的临时密码,如上所示,需要先保存下来然后修改

    建立mysql服务并增加执行权限

    cp mysql-8.0.16-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysqld

    修改mysql配置文件 vi /etc/my.cnf 增加如下配置

    [mysqld]
    port=3306
    basedir=/app/mysql/mysql-8.0.16-linux-glibc2.12-x86_64
    datadir=/app/mysql/data
    socket=/tmp/mysql.sock
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/app/mysql/data/log/error.log
    pid-file=/app/mysql/data/mysql.pid
    user=mysql
    tmpdir=/tmp
    character_set_server=utf8
    default-storage-engine=INNODB
    init_connect='SET NAMES utf8'
    
    !includedir /etc/my.cnf.d