www tingclass com

更新时间:2022-11-25 06:08:17 阅读: 评论:0


2022年11月25日发(作者:八年级上册英语课文翻译)

springboot+mycat数据库中间件+mysql(⼀主⼀备)主从复制

springboot+mycat数据库中间件+mysql(⼀主⼀备)主从复制

硬件:3台linux系统虚拟主机,Ip分别为192.168.43.23做主库(读写,192.168.43.12备库(读),192.168.43.155(安装mycat

数据库中间件)

读写分离架构图

主要实现原理:

下使⽤yum安装mysql

(mastr192.168.43.23,slave192.168.43.12)

2.1安装mysql服务器端:

yuminstallmysql-rver

yuminstallmysql-devel

2.2编辑mastr192.168.43.23mysql配置⽂件

vim/etc/加⼊

default-character-t=utf8//设置字符集

rver_id=23//服务id

log-bin=mysql-bin//开启⽇志

2.3编辑slave192.168.43.12配置⽂件

vim/etc/加⼊

default-character-t=utf8

rver_id=12

log-bin=mysql-bin

binlog_do_db=everyday//表⽰要同步的主机数据库实例是everyday

2.4创建root管理员

mysqladmin-urootpassword123456

2.5登录

mysql-uroot-p输⼊密码即可。

3.开放远程连接权限(开放所有IP以root账号连接)

GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'123456'WITHGRANTOPTION;

4同步主从数据库

4.1主服务器给从服务器授权

登录mysql主服务器,执⾏sql:

grantreplicationslaveon*.*to'root'@'192.168.43.12'identifiedby'123456';FLUSHPRIVILEGES;

然后执⾏此语句SHOWMASTERSTATUS:

4.2登录mysql从服务器,执⾏sql

STOPSLAVE;

changemastertomaster_host='192.168.43.23',master_ur='root',master_password='123456',

master_log_file='mysql-bin.000007',master_log_pos=2070;

STARTSLAVE;

然后执⾏该语句:SHOWSLAVESTATUS查询到结果yes,yes说明同步成功

数据同步原理:通过同步2进制sql⽂件mysql-bin.000007进⾏同步,包含delete,inrt,update等操作记录。

5.安装mycat数据库中间件

什么是mycat

⼀个彻底开源的,⾯向企业应⽤开发的⼤数据库集群

⽀持事务、ACID、可以替代MySQL的加强版数据库

⼀个可以视为MySQL集群的企业级数据库,⽤来替代昂贵的Oracle集群

⼀个融合内存缓存技术、NoSQL技术、HDFS⼤数据的新型SQLServer

结合传统数据库和新型分布式数据仓库的新⼀代企业级数据库产品

⼀个新颖的数据库中间件产品

5.1.安装mycat(192.168.43.155)

解压-C/usr/local/

移动到/usr/local⽬录mvmycat/usr/local

cd/usr/local/mycat/bin

./mycatstart启动

./mycatstop停⽌

5.2配置mycat实现读写分离

#vim/usr/local/mycat/conf///新增2个账号⽤来登录mycat,添加以下内容

//mycat⽤户名

mycat//mycat密码

mydb//mycat虚拟数据库名

true//只读

mycat

mydb

在这⾥要注意,默认的虚拟数据名是TESTDB,如果⾥⾯没有配置testdb,那就要把testdb改成⾥⾯有的虚拟数

据名。这⾥定义的⽤户名和密码,虚拟数据库名,并不是在mysql中真实存在的。

:wq保存退出

配置

<?xmlversion="1.0"?>

//定义虚拟数据库名mydb

//真实数据库名test

lectur()

//真实数据库的连接⽅式

//同上

mycat的配置参数,相当的多。重点说⼀下balance="1"与writeType="0"

e属性负载均衡类型,⽬前的取值有4种:

e="0",不开启读写分离机制,所有读操作都发送到当前可⽤的writeHost上。

e="1",全部的readHost与standbywriteHost参与lect语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2-

>S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与lect语句的负载均衡。

e="2",所有读操作都随机的在writeHost、readhost上分发。

e="3",所有读请求随机的分发到wiriterHost对应的readhost执⾏,writerHost不负担读压⼒,注意balance=3只在1.4及

其以后版本有,1.3没有。

ype属性

负载均衡类型,⽬前的取值有3种:

ype="0",所有写操作发送到配置的第⼀个writeHost,第⼀个挂了切到还⽣存的第⼆个

writeHost,重新启动后已切换后的为准,切换记录在配置⽂件中:ties.

ype="1",所有写操作都随机的发送到配置的writeHost。

ype="2",没实现。

#./mycatstart

StartingMycat-rver...

#netstat-tpnl|grep8066

tcp00:::8066:::*LISTEN31728/java

#./mycatstatus

Mycat-rverisrunning(31726).

6配置完成之后添加数据测试

登录windows系统中的mysql客户端进⾏连接

mycat连接⽅式如下:

mycat中间件做读写分离完成

7springboot通过⽂件配置mycat连接池

项⽬⽬录

项⽬依赖

xsi:schemaLocation="/POM/4.0.0/xsd/">

4.0.0

d

spboot

0.0.1-SNAPSHOT

spring-boot-starter-parent

E

spring-boot-starter-web

spring-boot-starter-freemarker

mysql

mysql-connector-java

mybatis-spring-boot-starter

1.1.1

spring-boot-starter-jdbc

spring-boot-configuration-processor

spring:

datasource:

url:jdbc:mysql://192.168.43.155:8066/mydb

urname:mycat

password:mycat

driverClassName:

controller

ller;

;

red;

ller;

ap;

tMapping;

ndView;

;

Service;

@Controller

publicclassTicketController{

@Autowired

privateTicketServiceticketService;

@RequestMapping("/")

publicModelAndViewgetTicketList(){

ListticketList=ketList();

ModelAndViewmav=newModelAndView();

wName("index");

ect("ticketList",ticketList);

returnmav;

};

@RequestMapping("/")

publicModelAndViewgetFtl(ModelAndViewmav){

ect("name","ss");

wName("index");

returnmav;

};

@RequestMapping("/index")

publicStringgetFtlt(ModelMapmap){

ribute("name","你妈");

return"index";

};

}

rvice

e;

;

red;

e;

Mapper;

;

ils;

@Service

publicclassTicketService{

@Autowired

privateTicketMapperticketMapper;

publicListgetTicketList(){

ListticketList=ketList();

for(Ticketticket:ticketList){

StringbeginTimeStr=Time(inTime());

StringendTimeStr=Time(Time());

inTimeStr(beginTimeStr);

TimeStr(endTimeStr);

}

returnticketList;

}

}

mapper

;

;

;

;

publicinterfaceTicketMapper{

@Select("lect*fromticket;")

ListgetTicketList();

}

ticket

;

;

/**

*

*@ClassName:Ticket

*@Description:车票信息实体类

*@

*@date2018年1⽉14⽇下午7:29:17

*

*/

publicclassTicket{

/*

*车票ID

*/

privateIntegerticketID;

/*

*开车地点

*/

privateStringstartting;

/*

*到站地点

*/

privateStringdestination;

/*

*价钱

*/

privateIntegerprice;

/*

*开车时间

*/

privateDatebeginTime;

/*

*到站时间

*/

privateDateendTime;

/*

*开车时间字符串

*/

privateStringbeginTimeStr;

/*

*到站时间字符串

*/

privateStringendTimeStr;

publicIntegergetTicketID(){

returnticketID;

}

publicvoidtTicketID(IntegerticketID){

ID=ticketID;

}

publicStringgetStartting(){

returnstartting;

}

publicvoidtStartting(Stringstartting){

ing=startting;

}

publicStringgetDestination(){

returndestination;

}

publicvoidtDestination(Stringdestination){

ation=destination;

}

publicIntegergetPrice(){

returnprice;

}

publicvoidtPrice(Integerprice){

=price;

}

publicDategetBeginTime(){

returnbeginTime;

}

publicvoidtBeginTime(DatebeginTime){

ime=beginTime;

}

publicDategetEndTime(){

returnendTime;

}

publicvoidtEndTime(DateendTime){

e=endTime;

}

publicStringgetBeginTimeStr(){

returnbeginTimeStr;

}

publicvoidtBeginTimeStr(StringbeginTimeStr){

imeStr=beginTimeStr;

}

publicStringgetEndTimeStr(){

returnendTimeStr;

}

publicvoidtEndTimeStr(StringendTimeStr){

eStr=endTimeStr;

}

}

(模板引擎)

Inrttitlehere

车票编号

出发地点

⽬的地

价钱

发车时刻

到达时刻

<#listticketListasticket>

${ID}

${ing}

${ation}

${}

${imeStr}

${eStr}

全局捕获异常

ption;

p;

;

rvletRequest;

rvletRespon;

tionUtils;

llerAdvice;

ionHandler;

Body;

Status;

/**

*

*@ClassName:GlobalExceptionHandler

*@Description:springboot全局异常捕获

*@author

*@date2018年1⽉26⽇

*

*/

@ControllerAdvice

publicclassGlobalExceptionHandler{

@ResponBody

@ExceptionHandler()

publicMapexceptionHandler(HttpServletRequestrequest,HttpServletResponrespon,Exceptione){

if(notation(ss(),)!=null){

try{

throwe;

}catch(Exceptione1){

tackTrace();

}

}

MapresMap=newHashMap<>();

("url",uestURL());

("class",ss());

("cau",());

("message",sage());

returnresMap;

}

}

packageapplication;

Scan;

Application;

AutoConfiguration;

entScan;

/**

*

*@ClassName:application

*@Description:企业级启动⽅式

*@author

*@date2018年1⽉26⽇下午4:27:25

*

*/

@ComponentScan(baPackages=".*")

@MapperScan(baPackages=".*")

@EnableAutoConfiguration

publicclassApplication{

publicstaticvoidmain(String[]args){

(,args);

}

}

点击右键启动项⽬,控制台打印如下⽇志

访问接⼝

结果页⾯

本文发布于:2022-11-25 06:08:17,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/16723.html

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

相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图