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高一致性,可用性集群方案设计

在传统的mysql 主从复制架构:

其mysql master对slave节点时异步复制,有可能会导致客户端读到的数据是脏数据,则如何要求mysql集群中各节点保持严格的数据一致呢?用PXC集群来搭建mysql集群:

可见,pxc mysql集群,是多主结构,每个节点可读可写,且数据都保持一致?

mycat进行分库分表

mycat 表分为:逻辑表,e-r表,分片表,全局表,非分片表

?如:schema.xml

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

	<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
	
	    <table name="config" primaryKey="id" type="global" dataNode="dn1,dn2" />

		<table name="user" primaryKey="id" dataNode="dn1,dn2" rule="mod-long" autoIncrement="true" fetchStoreNodeByJdbc="true">
			<childTable name="course_user" primaryKey="id" joinKey="user_id" parentKey="id"> </childTable>
		</table>
		
        <table name="order" primaryKey="id" autoIncrement="true" fetchStoreNodeByJdbc="true"  dataNode="dn3" />
	</schema>

	<dataNode name="dn1" dataHost="localhost1" database="my_test" />
	<dataNode name="dn2" dataHost="localhost2" database="my_test" />
	<dataNode name="dn3" dataHost="localhost3" database="my_test" />
	
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
	
		<writeHost host="W1" url="jdbc:mysql://192.168.211.128:3306" user="root" password="root">
		  <readHost host="W1R1" url="jdbc:mysql://192.168.211.128:3307" user="root" password="root" />
		</writeHost>
		
	</dataHost>
	<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		
		<writeHost host="W2" url="jdbc:mysql://192.168.211.128:3316" user="root" password="root">
				  <readHost host="W2R2" url="jdbc:mysql://192.168.211.128:3317" user="root" password="root" />
		</writeHost>
		
	</dataHost>
	
	<dataHost name="localhost3" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		
		<writeHost host="W3" url="jdbc:mysql://192.168.211.128:13306" user="root" password="root">
				  <readHost host="W3R1" url="jdbc:mysql://192.168.211.128:13307" user="root" password="root" />
				  <readHost host="W3R2" url="jdbc:mysql://192.168.211.128:13308" user="root" password="root" />
		</writeHost>
		
	</dataHost>

</mycat:schema>

config表是全局表

order表是非分片表

course_user是 user 的e-r表

user和course_user都是分片表

看server.xml,root用户下配置的逻辑库是TESTDB,逻辑库可以看到全量数据

?

注意:在逻辑库中创建表一定要在schema.xml中配置的表,否则创建不了?

?如果需要单库分表的话,则分库的分片规则,要根据非主键id去分库,分表的分片规则可以根据主键去进行分片,分片规则都可以在rule.xml配置

?高一致性集群方案设计

HAProxy可以承载千万级并发,当然在一定的硬件条件下:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:18:09  更:2022-04-04 12:21:52 
 
开发: 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 4:59:23-

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