Mysql8.0主从复制搭建,shardingsphere+springboot+myba。
。。
1、安装mysql8.0
⾸先需要在192.167.3.171上安装JDK。
下载后放到linux系统中
官⽹说需要先查看本机是否已安装mysql,删除mysql这⾥不介绍。
1yum install libaio  yum install openssl
安装mysql所需的软件包:libaiohe openssl。
1tar -xvf mysql-8.0.13-linux-glibc2.12-x86_
解压。
1mv mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql
将解压⽂件移动到local下。
1 2 3 4 5 6 7 8 9 10 11 12 13groupadd mysql
useradd -r -g mysql -s /bin/false mysql cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files chmod 750 mysql-files
bin/mysqld --initialize --user=mysql
初始化数据库,注意此处随机⽣成的密码,第⼀次登陆mysql的时候要使⽤。
1bin/mysql_ssl_rsa_setup
安装ssl。
1cp support-files/mysql.server /etc/init.d/mysql.server
将服务⽂件复制到开机启动⽬录,实现服务开机⾃启动。
1bin/mysqld_safe --user=mysql &
开启服务,&是后台运⾏的意思,执⾏命令之后,终端会卡在⼀个位置,再按⼀下Enter即可。
如果上⾯命令报错,什么log,pid⽂件未到之类的,就需要执⾏下⾯⽅法。由于mysql服务启动时,会去读取/etc/myf⽂件中的配置
内容,我们打开⽂件来看,⽂件内容如下(我已修改):
原来的内容地址就是启动mysql服务时报错的路径,我们可以知道,⽂件不存在问题导致启动失败。这时,就需要新建⽂件,并设置⽂件权限了。我这⾥修改了红框内的路径,具体命令如下:
1 2 3 4 5 6 7 8 9 10 11cd /usr/local/mysql/mysql-files
mkdir log ;  mkdir pid
touch log/mysql.log ; touch pid/mysql.pid cd /usr/local/mysql
chown -R mysql:mysql mysql-files chmod -R 750 mysql-files
然后再次执⾏:
1bin/mysqld_safe --user=mysql &
1bin/mysql -uroot -p
登陆mysql,回车后粘贴之前初始密码。
如果登陆时报错,错误如下图,然后,去查看/tmp下⾯的⽂件,发现确实没有mysql.sock⽂件,本地⽤户登录时使⽤socket登陆,所以需要这样⼀个⽂件,那好,就⼀个呗,执⾏  find / -name mysql.sock,到在/var/lib/mysql下⾯有⼀个⽂件,然后,我尝试cp到tmp 下,发现失败,那⾏,我ln⼀个呗,ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock,然后再尝试登陆,有⼀台机器就可以了,另⼀
台始终不⾏。那⾏,我指定⾏了吧,⽤以下命令登陆:mysql -uroot -p -S /var/lib/mysql/mysql.sock,试了下可以,那就这样吧!
1 2 3ALTER USER 'root'@'localhost' IDENTIFIED BY 'ibethfy; flush privileges
执⾏完成后,我⼜想使⽤navicat登陆,那好,试试呗,navicat连接直接报不到服务,2003 cannot。。。。。,⾏嘛,排除原因,总结如下:
1、建⽴供外部连接的mysql⽤户。
1 2 3 4 5 6 7mysql -uroot -pibethfy -s /var/lib/mysql/mysql.sock
create user 'ibethfy'@'%' identified by 'ibethfy';
grant all on *.* to 'ibethfy'@'%';    --注意,mysql8的grant语句和之前版本有差别。flush privileges;
2、防⽕墙关了,我⽤的centos。
1 2 3 4 5firewall-cmd --state          -- 查看防⽕墙状态,发现时running;systemctl stop firewalld.service    -- 关闭防⽕墙
firewall-cmd --state        --  再次查看,发现not running;
然后再⽤navicat连接,好嘛,⼜报错,caching-sha2-password,看来⼀下,应该是mysql的加密策略变了,navicat版本没跟上呗,那⾏,执⾏下⾯命令,然后再连接,没问题了!
1 2 3 4 5 6 7mysql -uroot -pibethfy -s /var/lib/mysql/mysql.sock
alter user 'ibethfy'@'%' identified by 'ibethfy' password expire never; alter user 'ibethfy'@'%' identified with mysql_native_password by 'ibethfy'; flush privileges;
ps -ef |grep mysql,可以看到mysql服务有两个,mysqld_safe和mysqld。说明启动成功了。
⼤家在linux装mysql8.0的时候,如果按照步骤来,还出现问题,就分析⼀下,主要导致的⼀些原因就是权限问题和⽂件问题,依次解决⼀下再试试。
2、mysql主从安装
分别按以上⽅发安装两个mysql服务,分别为192.167.3.171(主),192.167.3.172(从)。
配置主服务mysql下载jar包
重启mysql,service restart mysql;如果没有到服务,直接⽤ps -ef|grep mysql,到对应进程,kill -9强⾏终⽌后,使⽤
mysqld_safe --user=mysql &  重启。
登陆mysql,赋予外部连接的ibethfy⽤户权限并刷新。grant replication slave on *.* to 'ibethfy'@'%';        flush privileges;
查看主服务信息,从服务配置时需要⽤到,show master status;
修改从mysql服务配置
修改myf,vi /etc/myf
配置从服务,先登陆后,执⾏  CHANGE MASTER TO MASTER_HOST='192.167.3.171', MASTER_USER='ibethfy',
MASTER_PASSWORD=ibethfy',MASTER_LOG_FILE='binlog.000010',  MASTER_LOG_POS=1179;
start slave;
show slave status\G;查看从服务状态,如果内容中有Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it);错误,需要执⾏下⾯语句:
show variables like 'server_id';可以看见server_id=1,这⾥与主服务id相同,则执⾏,set global server_id=2;与myf内容相同即可。
重新启动start slave;
如果得到以下信息,则提⽰主从复制配置成功。
现在可以测试了,在主服务建⼀个database,从服务可以看见,代表配置成功。
3、springboot+mybatis+shardingsphere搭建主从分离
使⽤idea创建springboot⼯程
1 2 3 4 5 6 7 8 9<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"    xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。