返回顶部
首页 > 资讯 > 数据库 >图文演示通过OneProxy实现MySQL分库分表
  • 159
分享到

图文演示通过OneProxy实现MySQL分库分表

2024-04-02 19:04:59 159人浏览 独家记忆
摘要

不知道大家之前对类似通过OneProxy实现Mysql分库分表的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完通过OneProxy实现mysql分库分表你一定会有所

不知道大家之前对类似通过OneProxy实现Mysql分库分表的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完通过OneProxy实现mysql分库分表你一定会有所收获的。

OneProxy实现Mysql分库分表

简介

Part1:写在最前

    随着网站的壮大,MySQL数据库架构一般会经历一个过程:

图文演示通过OneProxy实现MySQL分库分表

当我们数据量比较小的时候,一台单实例数据库足矣。等我们数据量增大的时候,我们会采用一主多从的数据库架构来降低我们的读写io。当我们某张业务表达到几百万上千万甚至上亿时,就应该去进行分表处理。本文演示OneProxy对数据库实现分表处理,对前端应用是透明的。


Part2:环境简介

HE1:192.168.1.248 Master1

HE3:192.168.1.250 Master2

HE4:192.168.1.251 Oneproxy


环境构建

Part1:安装Oneproxy

Oneproxy的安装不是本文讲述的重点,需要的可移步至

OneProxy实现MySQL读写分离与负载均衡

Http://suifu.blog.51cto.com/9167728/1884673


Part2:proxy.cnf

proxy.cnf文件是oneproxy的主要参数配置文件,新版的oneproxy对整个目录进行了重新的划分,配置文件都放在了conf目录里

[root@HE4 oneproxy]# cat conf/proxy.conf 
[oneproxy]
keepalive = 1
event-threads = 4
log-file = log/oneproxy.log
pid-file = log/oneproxy.pid
lck-file = log/oneproxy.lck
mysql-version = 5.7.16
proxy-address = :3307
proxy-master-addresses.1 = 192.168.1.248:3306@group1
proxy-master-addresses.2 = 192.168.1.250:3306@group2
proxy-user-list = sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test
proxy-part-tables.1 = /root/oneproxy/conf/part.txt
#proxy-part-tables.2 = /root/oneproxy/conf/part2.txt
proxy-charset = utf8_bin
proxy-group-policy.1 = group1:master-only
proxy-group-policy.2 = group2:master-only
proxy-secure-client = 192.168.1.248
proxy-sequence.1 = default
proxy-httpserver = :8080
proxy-httptitle = OneProxy Monitor


Part3:part.txt

part.txt文件是分区策略配置文件,在本博文中,采取hash分区来进行简单演示

[root@HE4 oneproxy]# cat conf/part.txt 
[
  {
    "table" : "helei",
    "pkey" : "id",
    "type" : "int",
    "method" : "hash",
    "partitions" :     
      [
        { "suffix" : "_0", "group": "group1" },
        { "suffix" : "_1", "group": "group2" },
        { "suffix" : "_2", "group": "group1" },
        { "suffix" : "_3", "group": "group2"}
      ]
  }
]


实战

Part1:启动OneProxy

[root@HE4 oneproxy]# ./oneproxy.service start
Starting OneProxy ...                                      [  OK  ]


Part2:监控页面

我这里是两台Master

图文演示通过OneProxy实现MySQL分库分表


Part3:创建相关表

登录oneproxy管理库创建表

[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 test
mysql: [Warning] Using a passWord on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 103
Server version: 5.7.16 OneProxy-CommUnity-5.8.5 (OneXSoft)
Copyright (c) 2000, 2016, oracle and/or its affiliates. All rights reserved.
Oracle is a reGIStered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create table helei(
    -> id int(10) unsigned NOT NULL AUTO_INCREMENT,
    -> c1 int(10) NOT NULL DEFAULT '0',
    -> c2 int(10) unsigned DEFAULT NULL,
    -> c5 int(10) unsigned NOT NULL DEFAULT '0',
    -> c3 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    -> c4 varchar(200) NOT NULL DEFAULT '',
    -> PRIMARY KEY(id),
    -> KEY idx_c1(c1),
    -> KEY idx_c2(c2)
    -> )ENGINE=InnoDB ;
Query OK, 0 rows affected (0.27 sec)
mysql> \q


Part4:插入数据

[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 test -e"insert into helei(id,c1,c2,c5,c4) values(1,1,1,1,'1')"
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 test -e"insert into helei(id,c1,c2,c5,c4) values(2,2,2,2,'2')"
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 test -e"insert into helei(id,c1,c2,c5,c4) values(3,3,3,3,'3')"
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 test -e"insert into helei(id,c1,c2,c5,c4) values(4,4,4,4,'4')"
mysql: [Warning] Using a password on the command line interface can be insecure.

校验

Part1:校验oneproxy表内容

这里可以看到虚拟表helei中已经具有刚刚插入的内容;

[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 test -e"select * from helei";
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+----+------+----+---------------------+----+
| id | c1 | c2   | c5 | c3                  | c4 |
+----+----+------+----+---------------------+----+
|  4 |  4 |    4 |  4 | 2016-12-23 00:07:21 | 4  |
|  1 |  1 |    1 |  1 | 2016-12-23 16:07:04 | 1  |
|  2 |  2 |    2 |  2 | 2016-12-23 00:07:10 | 2  |
|  3 |  3 |    3 |  3 | 2016-12-23 16:07:16 | 3  |
+----+----+------+----+---------------------+----+


Part2:校验Master1中的内容

[root@HE1 ~]# mysql -uroot -pMANAGER test
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 158
Server version: 5.7.16-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| checksums      |
| helei_0        |
| helei_2        |
| sbtest         |
+----------------+
4 rows in set (0.00 sec)
mysql> select * from helei_0;
+----+----+------+----+---------------------+----+
| id | c1 | c2   | c5 | c3                  | c4 |
+----+----+------+----+---------------------+----+
|  4 |  4 |    4 |  4 | 2016-12-23 00:07:21 | 4  |
+----+----+------+----+---------------------+----+
1 row in set (0.00 sec)
mysql> select * from helei_2;
+----+----+------+----+---------------------+----+
| id | c1 | c2   | c5 | c3                  | c4 |
+----+----+------+----+---------------------+----+
|  2 |  2 |    2 |  2 | 2016-12-23 00:07:10 | 2  |
+----+----+------+----+---------------------+----+
1 row in set (0.00 sec)


Part3:校验Master2中的内容

[root@HE3 ~]# mysql -uroot -pMANAGER test
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2997
Server version: 5.7.16-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| checksums      |
| helei_1        |
| helei_3        |
+----------------+
3 rows in set (0.00 sec)
mysql> select * from helei_1;
+----+----+------+----+---------------------+----+
| id | c1 | c2   | c5 | c3                  | c4 |
+----+----+------+----+---------------------+----+
|  1 |  1 |    1 |  1 | 2016-12-23 16:07:04 | 1  |
+----+----+------+----+---------------------+----+
1 row in set (0.00 sec)
mysql> select * from helei_3;
+----+----+------+----+---------------------+----+
| id | c1 | c2   | c5 | c3                  | c4 |
+----+----+------+----+---------------------+----+
|  3 |  3 |    3 |  3 | 2016-12-23 16:07:16 | 3  |
+----+----+------+----+---------------------+----+
1 row in set (0.00 sec)

注意

Warning:警告1

不支持预编译语句 PreparedStatement,不支持Bind、Execute调用接口。


Warning:警告2

不支持使用use命令来切换后端数据库,use命令可执行,但其含义是切换到不同的MySQL主备集群,OneProxy在支持分库分表功能后,就将一个主备集群视为一个数据库了,链接Oneproxy时如果指定了数据库名,则需替换成Server Group的名字


Warning:警告3

禁止使用set命令,任何set命令都会直接返回成功,而不做任何处理。


Warning:警告4

默认禁止CALL、PREPARE、EXECUTE、DEALLOCATE命令,不支持存储过程和函数。


Warning:警告5

OneProxy支持master进行故障转移切换,但建议采用流行的高可用方案MHA实现。故障切换后,OneProxy可以自动识别哪台机器是master。另外,架构必须是一主带N从,不能是双主带N从。

通过OneProxy实现MySQL分库分表看完这篇文章,大家觉得怎么样?如果想要了解更多相关,可以继续关注我们的数据库板块。

您可能感兴趣的文档:

--结束END--

本文标题: 图文演示通过OneProxy实现MySQL分库分表

本文链接: https://lsjlt.com/news/36750.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 图文演示通过OneProxy实现MySQL分库分表
    不知道大家之前对类似通过OneProxy实现MySQL分库分表的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完通过OneProxy实现MySQL分库分表你一定会有所...
    99+
    2024-04-02
  • 通过MySQL开发实现分库分表与水平扩展的项目经验分享
    通过MySQL开发实现分库分表与水平扩展的项目经验分享引言:随着大数据时代的到来,数据量的爆炸式增长使得传统的单机数据库已经无法满足业务需求。为了解决数据存储和查询的性能问题,分库分表与水平扩展成为了当下非常流行的技术。本文将分享一些通过M...
    99+
    2023-11-02
    水平扩展 项目经验分享 MySQL分库分表
  • mysql分库分表如何实现
    MySQL分库分表可以通过以下几个步骤实现: 水平分库:将原始的单个数据库分成多个独立的数据库。每个数据库可以独立运行在不同的服务...
    99+
    2023-10-27
    mysql
  • 利用RadonDB实现MySQL分库分表
    利用RadonDB实现MySQL分库分表 RadonDB是青云上提供的MySQL分布式解决方案,提供数据库的透明拆分及高可用服务。RadonDB包括Radon, Xenon, MySQL三部分安装。其中Radon,Xenon官方没有发行二...
    99+
    2022-02-20
    利用RadonDB实现MySQL分库分表
  • MySQL中如何实现分库分表
    本篇文章为大家展示了MySQL中如何实现分库分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、    背景介绍1.大数据...
    99+
    2024-04-02
  • MySQL中怎么实现分库分表
    今天就跟大家聊聊有关MySQL中怎么实现分库分表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Mysql分库分表方案1.为什么要分表:当一张表的数据...
    99+
    2024-04-02
  • Vue通过echarts实现数据图表化显示
    目录一、项目引入echarts二、创建容器三、配置图表一、项目引入echarts ecahrts官网 官网有许多图表案例,并且可以直接复制对应的配置代码。 vue项目中引入: 安装...
    99+
    2024-04-02
  • MySQL 分库分表原理和详细实现过程,看完就懂了
    1. 什么是分库分表 MySQL 分库分表是指将一张表的数据分散到多个库或多个表中,从而减轻单个数据库或表的压力,达到水平扩展的目的。 2. 分库分表的优缺点 优点 提高系统的可用性和稳定性提高系统的性能和吞吐量扩展能力强,可根据业务需求随...
    99+
    2023-09-01
    mysql 数据库 java
  • mysql分库分表的实现方法有哪些
    在MySQL中,实现分库分表有多种方法,包括: 水平分库:将数据按照一定规则分散到不同的数据库中,通常是按照用户ID或者时间段进...
    99+
    2024-04-17
    mysql
  • golang通过mysql语句实现分页查询
    目录1.前端接口调用2.register访问入口3.解析参数4.service实现5.mapper实现1.前端接口调用 2.register访问入口 //查询一个用户下所有的sub...
    99+
    2024-04-02
  • 怎么在MySQL数据库中实现分表分库操作
    这篇文章将为大家详细讲解有关怎么在MySQL数据库中实现分表分库操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。分表分库垂直拆分垂直拆分就是要把表按模块划...
    99+
    2024-04-02
  • mysql创建表分区的实现示例
    目录1. 基本概念1.1 什么是表分区?1.2 表分区与分表的区别1.3 表分区有什么好处?1.4 分区表的限制因素2. 如何判断当前mysql是否支持分区?3.分区类型详解3.1 MySQL支持的分区类型有哪些?3.2...
    99+
    2024-01-29
    mysql 创建表分区 mysql 表分区创建
  • Mycat中怎么实现MySQL单库分表
    Mycat中怎么实现MySQL单库分表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、Mycat安装部署安装环境Linux   目前只有1.6.5版本支持单库...
    99+
    2023-06-19
  • PHP如何实现MySQL数据库分表
    本篇内容介绍了“PHP如何实现MySQL数据库分表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、MySQL分表的概念MySQL分表是将一...
    99+
    2023-07-06
  • PHP通过ICMP协议实现ping的示例分析
    小编给大家分享一下PHP通过ICMP协议实现ping的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP通过ICMP协议实现ping(原始套接字)最近想...
    99+
    2023-06-14
  • 借助MyCat如何实现MySQL分库分表的方法
    这篇文章给大家分享的是有关借助MyCat如何实现MySQL分库分表的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。❝借助MyCat来实现MySQL的分库分表落地,没有实现过的...
    99+
    2024-04-02
  • Python通过pytesseract库实现识别图片中的文字
    目录前言一、pytesseract1.pytesseract是什么2.安装pytesseract3.查看pytesseract版本4.安装PIL5.查看PIL版本二、Tesserac...
    99+
    2023-05-19
    Python pytesseract识别图片中文字 Python pytesseract识别文字 Python pytesseract
  • SpringBoot整合sharding-jdbc实现分库分表与读写分离的示例
    目录一、前言二、数据库表准备三、整合四、docker-compose部署mysql主从五、本文案例demo源码一、前言 本文将基于以下环境整合sharding-jdbc实现分库分表与...
    99+
    2024-04-02
  • 通过MySQL开发实现数据可视化与报表分析的项目经验分享
    在当今数据大爆炸的时代,数据分析和数据可视化成为了企业决策的重要工具。作为一名开发人员,在MySQL数据库上开发实现数据可视化与报表分析的项目经验,我想和大家分享一下。首先,我想提到的是选择MySQL作为数据库的原因。MySQL是一款开源的...
    99+
    2023-11-04
    MySQL 数据可视化 报表分析
  • Mysql数据库中的分库分表怎么利用MyBatis来实现
    本篇文章给大家分享的是有关Mysql数据库中的分库分表怎么利用MyBatis来实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MyBatis实现分表最简单步骤我们模拟用户表数...
    99+
    2023-05-31
    mybatis mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作