IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mysql配置读写分离 -> 正文阅读

[大数据]Mysql配置读写分离

前置环境


事先准备3台虚拟机,其配置如下

  • 主数据库(master)ip:192.168.126.151,装有Percona5.6.51
  • 从数据库(slave)ip:192.168.126.152,装有Percona5.6.51
  • mycat服务(mycat):192.168.126.153,装有 mycat

另外,以上3台服务器均需配置jdk(1.8)

?

配置主从


master

master服务器上,使用vim /etc/my.cnf打开mysql配置文件,加入

server-id=1
log-bin=mysql-bin # binlog

重启mysql后查看binlog名字

service mysql restart
show master status

可以看到
在这里插入图片描述

slave

与master一样,使用vim /etc/my.cnf并添加

server-id=2
log-bin=mysql-bin # binlog

然后在mysql中执行如下语句

CHANGE MASTER TO MASTER_HOST="192.168.126.151", 
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000002",
MASTER_LOG_POS=120

其中file和pos的值要与上面show master status得到的一样。

执行start slave开启服务,并使用show master status查看,如出现下图,则成功完成主从配置
在这里插入图片描述
这时我们修改master,则slave也会出现相应更改。

注意:如果主从是由同一台虚拟机克隆而来的话,server-uuid会一样,这时需要删除其中一台虚拟器的/var/lib/mysql/auto.cnf 文件,并进行重启,这样mysql会重新生成server_uuid

?

读写分离


读写分离即读和写操作在不同数据库上完成。通过将read和write分开,可以有效减低获取锁冲突的几率。

但是Dao层不会关心数据库操作具体会由哪个库执行,因此,我们需要一个MySQL Proxy来完成具体数据库的分派。

而mycat就是这个MySQL Proxy。

在这里插入图片描述

图片来源:码农翻身

配置mycat

进入mycat安装目录./mycat/conf,会有schema.xml和server.xml。

在server.xml 加入

	<!--对业务端暴露的逻辑数据库,实际并不存在,在schema.xml中配置-->
	<user name="root">
		<property name="password"></property>
		<!--数据库名-->
		<property name="schemas">mycat</property> 
	</user>

修改schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">


	<!--配置逻辑数据库-->
	<schema name="mycat" checkSQLschema="false" sqlMaxLimit="100">
		<!--此处name为实际要对应的表名, 并配置上数据源-->
		<table name="test1" dataNode="dn1" />
	</schema>

	<!--可以理解为数据源-->
	<!--此处database实际数据库名-->
	<dataNode name="dn1" dataHost="master" database="test" />
	
	<!--每个dataHost可以看做一套主从架构,在外看来只是数据源-->
	<dataHost name="master" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		
		<!--心跳机制中执行的语句-->
		<heartbeat>select user()</heartbeat>

		<!-- can have multi write hosts -->
		<!--user和password为服务器而非MySQL-->>
		<writeHost host="hostM1" url="192.168.126.151:3306" user="root" password="dj123456">	
			<readHost host="hostM2" url="192.168.126.152:3306" user="root" password="dj123456"/>
		</writeHost>
		
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>
</mycat:schema>

其中shema配置文件有些概念需要理清,可参考下图
在这里插入图片描述

测试


启动mycat服务

mycat start
mycat status

如果启动不成功,可以在./mycat/logs/wrapper.log中查看启动日志

连接上接mycat插入数据

在这里插入图片描述
主库已出现数据
在这里插入图片描述
而从库配置为readhost,不会出现数据
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 11:56:15  更:2022-04-28 11:57:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:14:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码