安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

SpringBoot项目中实现MySQL读写分离

5月1日 金钟寨投稿
  1、MySQL主从复制
  但我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下问题:读和写所有压力都由一台数据库承担,压力大数据库服务器磁盘损坏则数据丢失,单点故障
  为了解决上述提到的两个问题,我们可以准备两(多)台MySQL,一台主(Master)服务器,一台从(Slave)服务器,主库的数据变更(写、更新、删除这些操作),需要同步到从库中(主从复制)。而用户在访问我们项目时,如果是写操作(insert、update、delete),则直接操作主库;如果是读操作(select),则直接操作从库,这种结构就是读写分离啦。
  在这种读写分离的结构中,从库是可以有多个的1。1、介绍
  MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。二进制日志:
  二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制,就是通过该binlog实现的。默认MySQL是未开启该日志的。MySQL复制过程分成三步:MySQLmaster将数据变更写入二进制日志(binarylog)slave将master的binarylog拷贝到它的中继日志(relaylog)slave重做中继日志中的事件,将数据变更反映它自己的数据
  1。2、主从库搭建
  在环境搭建之前,我们需要准备好两台服务器,如果生活富裕使用的是两台云服务器的时候记得要开放安全组,即防火墙;如果是比狗子我生活好点但也是用的虚拟机的话,记得别分这么多内存启动蓝屏了(别问怎么知道的)
  这里就不给大家展示数据库的安装和防火墙的操作了,这个我感觉网上好多资源都能够满足遇到的问题,在搭建主从库的时候有在网上见到过说MySQL版本要一致的,我也没太留意直接就在之前的MySQL上操作了,大家可以自己去验证一下。1。2。1、主库配置
  服务器:192。168。150。100(别试了黑不了的,这是虚拟机的ip)1、修改Mysql数据库的配置文件vimetcmy。cnf在打开的文件中加入下面两行,其中的serverid不一定是100,确保唯一即可logbinmysqlbin〔必须〕启用二进制ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志aserverid100〔必须〕服务器唯一ID
  2、重启Mysql服务
  这里有三个方法都能重启MySQL,最简单的无疑就是一关一开:systemctlrestartmysqldservicemysqldrestart3、创建数据同步的用户并授权
  登录进去MySQL之后才能够执行下面的命令,因为这是SQL命令,Linux不认识这玩意是啥。GRANTREPLICATIONSLAVEON。to用户名开放的地址identifiedby密码;eg:GRANTREPLICATIONSLAVEON。tomasterDbidentifiedbyMaster123456;记得刷一下权限FLUSHPRIVILEGES;4、查看master同步状态
  这个时候还不用退出MySQL,因为下面的命令还是SQL命令,执行下面的SQL,可以拿到我们后面需要的两个重要参数。
  执行完这一句SQL之后,不要再操作主库!不要再操作主库!不要再操作主库!重要的事情说三遍,因为再操作主库之后可能会导致红框中的两个属性值会发生变化,后面如果发生了错误可能就和这里有那么两毛钱关系了。1。2。2、从库配置
  服务器:192。168。150。101(别试了黑不了的,这也是虚拟机的ip)1、修改Mysql数据库的配置文件vimetcmy。cnf
  这里要注意serverid和主库以及其他从库都不能相同,否则后面将会配置不成功。2、重启Mysql服务
  这里有三个方法都能重启MySQL,最简单的无疑就是一关一开:systemctlrestartmysqldservicemysqldrestart3、设置主库地址及同步位置
  登录进去MySQL之后才能够执行下面的命令,因为这是SQL命令设置主库地址和同步位置changemastertomasterhost192。168。150。100,masterusermasterDb,masterpasswordMaster123456,masterlogfilemysqlbin。000010,masterlogpos68479;记得记得开启从库配置
  参数说明:masterhost:主库的IP地址masteruser:访问主库进行主从复制的用户名(上面在主库创建的)masterpassword:访问主库进行主从复制的用户名对应的密码masterlogfile:从哪个日志文件开始同步(即1。2。1中第4步获取的File)masterlogpos:从指定日志文件的哪个位置开始同步(即1。2。1中第4步获取的Position)4、查看从数据库的状态
  这个时候还不用退出MySQL,因为下面的命令还是SQL命令,执行下面的SQL,可以看到从库的状态信息。通过状态信息中的SlaveIOrunning和SlaveSQLrunning可以看出主从同步是否就绪,如果这两个参数全为Yes,表示主从同步已经配置完成。showslavestatusG;
  1。3、坑位介绍1。3。1、UUID报错
  这可能是由于linux是复制出来的,MySQL中还有一个serveruuid是一样的,我们也需要修改。vimvarlibmysqlauto。cnf
  1。3。2、serverid报错
  这应该就是各位大牛设置serverid的时候不小心设置相同的id了,修改过来就行,步骤在上面的配置中。1。3。3、同步异常解决
  这是狗子在操作过程中搞出来的一个错误
  出错的原因是在主库中删除了用户信息,但是在从库中同步的时候失败导致同步停止,下面记录自己的操作(是在进入MySQL的操作且是从库)。MASTERLOGPOSSTOPSLAVE;SETGLOBALSQLSLAVESKIPCOUNTER1;STARTSLAVE;SHOWSLAVESTATUSG;
  在数据库中操作时,一定要注意当前所在的数据库是哪个,作为一个良好的实践:在SQL语句前加USEdbname。操作不规范,亲人两行泪2、项目中实现2。1、ShardingJDBC
  ShardingJDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
  使用ShardingJDBC可以在程序中轻松的实现数据库读写分离。
  ShardingJDBC具有以下几个特点:适用于任何基于JDBC的ORM框架,如:JPA,Hibernate,Mybatis,SpringJDBCTemplate或直接使用JDBC。支持任何第三方的数据库连接池,如:DBCP,C3P0,BoneCP,Druid,HikariCP等。支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer,PostgreSQL以及任何遵循SQL92标准的数据库。
  下面我们将用ShardingJDBC在项目中实现MySQL的读写分离。2。2、依赖导入
  在pom。xml文件中导入ShardingJDBC的依赖坐标!shardingjdbcdependencygroupIdorg。apache。shardingspheregroupIdshardingjdbcspringbootstarterartifactIdversion4。0。0RC1versiondependency2。3、配置文件
  在application。yml中增加数据源的配置spring:shardingsphere:datasource:names:master,slave主数据源master:type:com。alibaba。druid。pool。DruidDataSourcedriverclassname:com。mysql。cj。jdbc。Driverurl:jdbc:mysql:192。168。150。100:3306dbtest?useUnicodetruecharacterEncodingutf8useSSLfalseusername:rootpassword:123456从数据源slave:type:com。alibaba。druid。pool。DruidDataSourcedriverclassname:com。mysql。cj。jdbc。Driverurl:jdbc:mysql:192。168。150。101:3306dbtest?useUnicodetruecharacterEncodingutf8useSSLfalseusername:rootpassword:123456masterslave:读写分离配置,设置负载均衡的模式为轮询loadbalancealgorithmtype:roundrobin最终的数据源名称name:dataSource主库数据源名称masterdatasourcename:master从库数据源名称列表,多个逗号分隔slavedatasourcenames:slaveprops:sql:show:true开启SQL显示,默认false覆盖注册bean,后面创建数据源会覆盖前面创建的数据源main:allowbeandefinitionoverriding:true2。4、测试跑路
  这时我们就可以对我们项目中的配置进行一个测试,下面分别调用一个更新接口和一个查询接口,通过查看日志中记录的数据源来判断是否能够按照我们预料中的跑。更新操作(写操作)
  查询操作(读操作)
  搞定!!!程序正常按照我们预期的成功跑起来了,成功借助ShardingJDBC在我们项目中实现了数据库的读写分离。
投诉 评论

SpringBoot项目中实现MySQL读写分离1、MySQL主从复制但我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下问题:读和写所有压力都由一台数据库承担,压力大数据库服务器磁盘损坏则……杜锋给全国球迷道歉所有人都无法接受这个成绩直播吧7月20日讯男篮亚洲杯14决赛,中国队不敌黎巴嫩。赛后,中国队主教练杜锋出席新闻发布会,接受了记者的采访。首先在这里给全国球迷道歉,所有的球迷对这个成绩都不会接受,……男性过了50岁,若仍能做到这几件事,或说明身体保养的还算良好50岁常常被人称之为分水岭,50岁之前身体各部位功能和指标或许还是正常的,可是过了50岁某些疾病就找上来了,而且身体当中的很多指标也可能会随之发生变化。对于男性朋友而言,……又有重磅新规来了!中国基金报记者吴君近期,中国证券投资基金业协会发布通知,就《私募投资基金登记备案办法(征求意见稿)》(简称《办法》)及配套指引公开征求意见,意见反馈截止时间为2023年1……后半生最舒服的生活方式(写得真好)知乎上有个话题:人活着到底是为了什么?下面有个高赞回答:是为了活着本身。生命只有一次,我们怎样才能活得更有意义?一千个人心中,有一千个答案。现实中,大多数人的生活,……高热儿童家庭护理怎么做?看这里科普小课堂高热儿童家庭护理珊珊妈妈我家娃发烧39度了,听说你家娃前几天也发烧的,是咋给她降温的啊?小孩生病,一家子都着急,奶奶让捂,爸爸就让散热,想让孩……运营商自研小基站,京信通信资本之路还好走吗?近日,通信与信息解决方案和服务提供商京信通信再次进行了一个新的资本动作。在11月15日晚发布公告称,准备以介绍的方式在新加坡证券交易所上市。若京信通信在新加坡第二上市完成……S28开启倒计时,专精干将强势崛起,已成KPL法核首选,强在大家好我是可达鸭,前不久的正式服更新,开启了英雄试炼,这也象征着S28正式开启倒计时了,而回顾赛季初众多改版和重做,已经有非常多体系亮眼崛起了,甚至诸如法球后羿李信等都已经降温……西安城墙这四座城门终于有门楣了西安城墙是中国现存规模最大、保存最完整的古代城垣,也是西安人的骄傲。但此前很长一段时间,勿幕门、文昌门、和平门以及建国门都没有门楣,成为西安人的遗憾。20日上午,伴随着盛……一路同行打个大的去草原飒飒金秋,茫茫草原,炊烟缕缕,白雪皑皑。金秋十月,乌兰布统大草原的一处蒙古包里,屋内的人们载歌载舞,其乐融融,屋外是北风呼啸,大雪纷飞。这是我们在2020年组织的金……演员汤唯时尚芭莎金九封面大片,清新画风展现淡然气质有话题韩影佳作《分手的决心》傍身,虽然阔别内地影坛许久,有作品就有底气的汤唯也拿下今年内地版《时尚芭莎》金九封面。清淡悠然的画风,松弛俏皮的气质,朴赞郁电影中神秘如海的女子,在……孙怡离婚后我只想好好搞事业8月8日,董子健和孙怡双双发文官宣离婚,称两人决定和平分开,之后将以亲人、朋友的身份共同抚养孩子,两人的离婚声明来得太突然,一下子霸占了整个娱乐热搜榜。事后,网友扒出之前……
中国女排黄金一代今何在(9)张萍,福将成师偏失一份情杨鸣美丽的妻子,晒1儿1女观赛照!辽篮削他的字迹,逗笑网友西域观荷花(随笔)7。13磷肥日评一铵市场窄幅下行二铵市场弱势运行日本到底有没有首都?东京是日本首都吗?不要再被营销号误导了问天梦天神舟中国航天起名的中式浪漫诗意而唯美痛风发作时疼痛难忍,怎么办?试试这4个小妙招,或能缓解千金兑一诺良策引客来宁夏文化和旅游厅拿出千万资金兑现引客入宁教你做猪皮冻,掌握这个比例,晶莹剔透,筋道弹牙,零失败无腥味秋冬灰色系穿搭重磅来袭!看高级灰是如何掌握时尚密码吧丁俊晖再冲冠416万巨奖!6年前资格赛打起夺亚军,或再创奇迹学会快乐哈佛推荐的20个快乐习惯塑料吸管如何手工制作小礼品冬枣和芒果可以一起吃吗可以(两种食物不相克)妈妈,读书可以改变命运吗?这位妈妈做出中肯的回答次韵红蕉店铺前期定位布置妥当后期才能有的放矢你还有这些滥发信息的行为吗后果很严重死亡的交强险赔偿范围是怎样的老人每天七份蔬菜可预防心脏病吗?解读百度架构调整:收入压力下,综合互联网公司的开始?八年级第一学期工作计划春天的公园吕布为什么怕张飞

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利