开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

十问 TiDB :关于架构设计的一些思考

作者:黄东旭 >“我希望能够把 TiDB 的设计的一些理念能够更好的传达给大家,相信大家理解了背后原因后,就能够把 TiDB 用的更好。” 做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多...
TiDB 发布于 2天前 阅读 1612 评论 7 点赞 21

从删库到跑路or恢复,记一次MySQL数据库文件损坏恢复经历

## 一、 前言 2018年5月28日,北京晴有轻度沙尘暴。 坐上公交车走在上班的路上,想起老罗经常说起的一句话:想成盛田昭夫时代的索尼,想成乔布斯时代的苹果,于是继续研读着 **《日本制造:盛田昭夫的日式经营...
OSC李强 发布于 2天前 阅读 20

spring cache实现方法缓存(spring boot + redis)

本文代码示例:...
啊哼哼 发布于 1周前 阅读 52

什么是事务、事务特性、事务隔离级别、spring事务传播特性

1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败)。 2.事务特性: ...
Javaer_Sun 发布于 2周前 阅读 513 评论 3 点赞 6

「华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

TiDB 源码阅读系列文章(九)Hash Join

>作者:张建 ## 什么是 Hash Join Hash Join 的基本定义可以参考维基百科:[Hash join](https://en.wikipedia.org/wiki/Hash_join)。简单来说,A 表和 B 表的 Hash Join 需要我们选择一个 Inner 表来构造哈希表,然后对 Outer 表的每一行数据都去这个哈希表中查找是否有匹配的数据。 我们不用 “小表” 和 “大表” 这两个术语是因为:对于类似 Left Outer Join 这种 Outer Join 来说,如果我们使用 Hash Join,不管 Left 表相对于 Right 表而言是大表还是小表,我们都只能使用 Right 表充当 Inner 表并在之上建哈希表,使用 Left 表来当 Outer 表,也就是我们的驱动表。使用 Inner 和 Outer 更准确,没有迷惑性。在 Build 阶段,对 Inner 表建哈希表,在 Probe 阶段,对由 Outer 表驱动执行 Join 过程。 ## TiDB Hash Join 实现 TiDB 的 Hash Join 是一个多线程版本的实现,主要任务有: + Main Thread,一个,执行下列任务: - 读取所有的 Inner 表数据; - 根据 Inner 表数据构造哈希表; - 启动 Outer Fetcher 和 Join Worker 开始后台工作,生成 Join 结果,各个 goroutine 的启动过程由 [fetchOuterAndProbeHashTable](https://github.com/pingcap/tidb/blob/source-...
TiDB 发布于 2周前 阅读 375 评论 2

基于前序遍历的无递归的树形结构的数据库表设计

本文介绍的方法基于多叉树的前序遍历序列,是所有数据库树结构存储方案中查询子树速度最快的方案。最早发表在这里"http://drinkjava2.iteye.com/blog/2353983",但那篇文章太啰嗦了,这是整理后的精简版,其实原理很简单,几句话就能说完。 目前常见的树形结构数据库存储方案有以下四种,但是都存在一定问题: 1)Adjacency List(邻接表):每个节点仅记录父节点主键。优点是简单,缺点是访问子树需要递归遍历,对数据库压力大(即使是支持递归SQL的数据库)。 2)Path Enumerations( 路径枚举):用一个字符串记录当前节点所在路径。优点是查询方便,缺点是占用空间大,查询需要使用like模糊方法,效率低,插入新记录时要手工更改此节点以下所有路径,维护不便。 3)Closure Table(闭包表):专门一张表维护Path,缺点是占用空间大,操作不直观。 4)Nested Sets (嵌套集):记录左值和右值,优点是查询子树无需递归,缺点是非常复杂、难操作。 本文介绍的基于树形结构的前序遍历序列方法,示意图如下:   如上图左边的树结构,映射在数据库里的结构见右图表格,注意整个表格是一个排好序的树结构的前序遍历序列,相同节点深度的排序以line为准。 表格的最后一行(或每个根节点)必...
yong9981 发布于 1个月前 阅读 374 评论 6

MONDRIAN支持的常用mysql函数

Mondrian,mysql
仔仔1993 发布于 1个月前 阅读 93

高并发大容量NoSQL解决方案探索

大数据时代,企业对于DBA也提出更高的需求。同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注。本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容:一、公司在KV存储上的架构演进以及运维需要解决的问题;二、对NoSQL如何选型以及未来发展的一些思考。 据官方统计,截止目前(2018年4月20日)NoSQL有225个解决方案,具体到每个公司,使用的都是其中很小的一个子集,下图中蓝色标注的产品是当前个推正在使用的。 NoSQL的由来 1946年,第一台通用计算机诞生。但一直到1970年RDMBS的出现,大家才找到通用的数据存储方案。到21世纪,DT时代让数据容量成为最棘手的问题,对此谷歌和亚马逊分别提出了自己的NoSQL解决方案,比如谷歌于2006年提出了Bigtable。2009年的一次技术大会上,NoSQL一词被正式提出,到现在共有225种解决方案。 NoSQL与RDMBS的区别主要在两点:第一,它提供了无模式的灵活性,支持很灵活的模式变更;第二,可伸缩性,原生的RDBMS只适用于单机和小集群。而NoSQL一开始就是分布式的,解决了读写和容量扩展性问题。以上两点,也是NoSQL产生的根本原因。 实现分布式主要有两种手段:副本(Replication)和分片(...
illy安智 发布于 1个月前 阅读 4321 评论 5 点赞 6

在MySQL中使用explain查询SQL的执行计划

1、什么是MySQL执行计划        要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。         MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。 应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。 逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。         首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。         计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。 物理层,实际物理磁盘上存储的文件,主要有分文数据文件,日志文件。    通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为...
Oo若离oO 发布于 2个月前 阅读 1835 评论 2 点赞 5

专访 | 黄东旭:如何运用 HTAP 数据库帮到你?来听听 TiDB 的故事

>日前,我司 CTO 黄东旭接受了即将开幕的 WOT2018 全球软件与运维技术峰会记者的采访,介绍了 TiDB 作为 HTAP 数据库的技术思考及应用情况,以及 PingCAP 自创立以来对开源的一些心得,以下是报道原文。Enjoy~ 作者:查士加 ## 创立 PingCAP 的理由异常简单 黄东旭提到,自己与朋友一同创业,理由很简单,源自一个需求。彼时,黄东旭与刘奇(现任 PingCAP CEO)同属豌豆荚的分布式存储团队,当时的他们开源了 Codis,解决了豌豆荚内部缓存的扩展性问题,数据库问题成了硬骨头。如何构建一个对业务端透明,兼具良好的扩展性和完整的分布式事务支持的数据库,是构建新一代微服务架构的核心问题之一。当时,团队在开源社区并没有找到比较好的方案,分库、分表、中间件,这些传统做法在涉及到业务大的改动时会带来很大的运维成本,如何彻底解决这个问题呢? 受当时 Google 发表的一系列在分布式数据库方面的论文(Spanner/F1)启发,PingCAP 的初创团队打算从头开始实现一个新一代的关系型数据库,来解决关系型数据库的扩展性问题。由此看来,PingCAP 创立的初衷很简单,就是几个工程师想要解决一个很困难的技术问题,同时想通过开源的方式帮到大家。 ![PingCAP 联合创始人兼 ...
TiDB 发布于 2个月前 阅读 70 评论 1

福利:饿了么《分布式时序数据库 - LinDB》!

背景 饿了么对时序数据库的需求主要来自各监控系统,主要用于存储监控指标。原来使用graphite,后来慢慢有对指标有多维的需求(主要体现在对一个指标加多个Tag, 来组成Series,然后对Tag进行Filter和Group进行计算),这时graphite基本很难满足需求。 业界现在用的比较多的主要有如下几类TSDB: InfluxDB:很多公司都在用,包括饿了么有部分监控系统也是用InfluxDB。优点,支持多维和多字段,存储也根据TSDB的特点做了优化。但开源的部分不支持,很多公司自己做集群化, 但大多基于指标名来,这样会有单指的热点问题。现在饿了么也是类似的做法,但热点问题很严重,大的指标已经用了最好的服务器,但是查询性能还是不够理想, 如果做成按Series Sharding那成本还是有一点高; Graphite:根据指标写入及查询,计算函数很多,但很难支持多维,包括机房或多集群的查询,原来饿了么把业务层的监控指标存储在Graphite中,并工作的很好, 但是多活之后基本已经很难满足一些需求了,由于其存储结构的特点,很占IO,根据目前线上的数据写放大差不多几十倍以上; OpenTSDB: 基于HBase,优点存储层不用自己考虑,做好查询聚合就可以,也会存在HBase的热点问题等,在以前公司也弄基于H...
java高级架构牛人 发布于 2个月前 阅读 663 评论 3 点赞 1

ArangoDB 的使用 -- 安装和配置

  ArangoDB 是一个开源的分布式原生多模型数据库,是兼有图 (graph)、文档 (document)和键/值对 (key/value) 三种数据模型的 NoSQL 数据库。ArangoDB 使用类SQL的查询语言(AQL)构建出高性能应用程序。 ArangoDB 的安装 ArangoDB 支持在 Windows、Linux、Dcoker、Mac 等多种系统下运行。本文将以 Windows、Linux 系统为例讲解如何安装和配置。 Windows 下 ArangoDB 的安装 Windows 下可以下载压缩包版,也可以下载可执行文件版。我比较喜欢使用压缩包版,下载后选择一个目录直接解压就可以了。解压后的目录结构大致包括: etc:所有的配置文件在该目录下 usr:包括数据库的执行文件,js 的模块类库 var:数据目录和FOXX 程序目录 启动文件在 usr/bin/ 目录下,启动时打开一个终端,切换到该目录下,执行启动文件,或在也可以做成 windows 的服务。 Linux 下 ArangoDB 的安装 本文是以 CentOS 7 为例,其他 Linux 发行版依照官方给的提示操作即可。 使用 root 的权限执行以下命令: cd /etc/yum.repos.d/ curl -OL https://download.arangodb.com/arangodb33/CentOS_7/arangodb.repo yum -y install arangodb3-3.3.7 yum -y install arangodb3-debuginfo-3.3.7(默认情况...
_电工_ 发布于 2个月前 阅读 348

优化 | Redis AOF重写导致的内存问题

Redis突然内存爆涨,直到服务器内存不足半夜报警,是天灾还是人祸?
o翡翠谷o 发布于 2个月前 阅读 401 评论 2

基于Docker的MySQL主从数据库搭建

最初的想法是为了做数据备份,但实际作用远不止于此,菜鸟一枚,仅作为记录。
Raphael_Zhang 发布于 2个月前 阅读 612

Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?

Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?  QQ群里有人问:如何导出一个用户下的存储过程?   麦苗答:方法有多种,可以使用DBMS_METADATA.GET_DDL包。 使用PL/SQL DEVELOPER工具 -- 下面的SQL语句,如果报错:ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 4994, 最大: 4000),那么去掉TO_CAHR SELECT TO_CHAR(DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME)) ||CHR(10)||'/'   FROM USER_OBJECTS U  WHERE OBJECT_TYPE = 'PROCEDURE'  ;       然后将结果拷贝到Excel中, 打开Excel,复制内容到plsql developer里边,注意粘贴的时候使用右键的“Past from host Language”,否则粘贴后的代码含有双引号:   运行这些脚本脚本即可:   使用SQL*Plus   使用如下的脚本即可导出某个用户下的存储过程代码到/tmp/a.sql文件中: SET PAGESIZE 0 SET TRIMSPOOL ON SET LINESIZE 10000 SET LONG 90000 SET FEEDBACK OFF SET FEED OFF; SET ECHO OFF spool /tmp/a.sql SELECT DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME)||CHR(10)||'/'   FROM USER_OBJECTS ...
小麦苗 发布于 2个月前 阅读 109

TiDB 源码阅读系列文章(七)基于规则的优化

>作者:毛康力 在 TiDB 里面,SQL 优化的过程可以分为逻辑优化和物理优化两个部分。逻辑优化主要是基于规则的优化,简称 RBO(rule based optimization)。物理优化会为逻辑查询计划中的算子选择某个具体的实现,需要用到一些统计信息,决定哪一种方式代价最低,所以是基于代价的优化 CBO(cost based optimization)。 本篇将主要关注逻辑优化。先介绍 TiDB 中的逻辑算子,然后介绍 TiDB 的逻辑优化规则,包括列裁剪、最大最小消除、投影消除、谓词下推、TopN 下推等等。 ## 逻辑算子介绍 在写具体的优化规则之前,先简单介绍查询计划里面的一些逻辑算子。 - DataSource 这个就是数据源,也就是表,`select * from t` 里面的 t。 - Selection 选择,例如 `select xxx from t where xx = 5` 里面的 where 过滤条件。 - Projection 投影, `select c from t` 里面的取 c 列是投影操作。 - Join 连接, `select xx from t1, t2 where t1.c = t2.c` 就是把 t1 t2 两个表做 Join。 选择,投影,连接(简称 SPJ) 是最基本的算子。其中 Join 有内连接,左外右外连接等多种连接方式。 ``` select b from t1, t2 where t1.c = t2.c and t1.a > 5 ``` 变成逻辑查询计划之后,t1 t2...
TiDB 发布于 2个月前 阅读 47

ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)

  ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)       (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26040)简介 如果只是错误ORA-01578,而没有伴随ORA-26040,那么这个坏块是由其它的原因引起的坏块,可以尝试使用RMAN的BMR(Block Media Recovery)修复。 如果数据段(表段、索引段)被定义为NOLOGGING属性,那么当NOLOGGING加APPEND、UNRECOVERABLE操作修改该数据段或者使用数据泵(DATAPUMP)impdp参数DISABLE_ARCHIVE_LOGGING:Y时,联机重做日志只会记录很少的日志信息。如果这些联机重做日志或归档日志被用来恢复数据文件,那么Oracle会将对应的数据块标志为无效(Soft Corrupt),而且下一次访问这些数据块时,会报ORA-01578和ORA-26040错误。 例如: SQL> select * from test_nologging;   ORA-01578: ORACLE data block corrupted (file # 11, block # 84) ORA-01110: data file 4: '/oradata/users.dbf' ORA-26040: Data block was loaded using the NOLOGGING option 数据字典视图DBA_TABLES、DBA_INDEXES、DBA_LOBS、DBA_TAB_PARTITIONS、DBA_LOB_PARTITIONS、DBA_TAB_SUBPARTITIONS中的LOGGING列记录了NOL...
小麦苗 发布于 2个月前 阅读 107

tcpcopy+mysql压力测试

一、tcpcopy工具介绍 tcpcopy 是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现 bug,增加上线信心。 tcpcopy 的优势在于其实时性及真实性,除了少量的丢包,完全拷贝线上流量到测试机器,真实的模拟线上流量的变化规律。   二、tcpcopy原理   tcpcopy新版架构图 tcpcopy包含三部分:online server、assistant server、target server tcpcopy拷贝一次流量访问的步骤如下 1、一个访问请求到达线上内核后端机; 2、socket 包在 IP 层被拷贝了一份传给tcpcopy 进程; 3、tcpcopy 修改包的目的及源地址,发给测试内核后端机; 4、拷贝的包到达测试内核后端机; 5、测试内核后端机的推荐内核处理访问,并返回结果; 6、返回结果在 IP 层被截获、丢弃,由 intercept 拷贝返回结果的 IP header 返回; 7、IP header 被发送给线上内核后端机的 tcpcopy 进程。   三、tcpcopy搭建 3.1  服务器规划 角色 主机名 mysql端口 online server test00 3308(5.6) assistant server offline01   target server offline02 3318(5.7) 3.2  tcpcopy安装及配置 安装依赖 # yum -y install lib...
IT--小哥 发布于 2个月前 阅读 344 评论 1

pgAgent (PostgreSQL定时任务)

简介 在pgAdminIII v1.4中引入的pgAgent是一个用于PostgreSQL的作业调度代理,可用于执行操作系统批处理脚本和SQL任务。 从pgAdmin 1.9开始,pgAgent独立于pgAdmin单独安装。 环境: PostgreSQL 9.6.6 pgAgent 3.4.0 cmake 2.8.11 wxWidgets 2.8.12 先安装PG、wxGTK、cmake 安装pgAgent [yangjie@young-1 package]$ tar zxvf pgAgent-3.4.0-Source.tar.gz [yangjie@young-1 package]$ cd pgAgent-3.4.0-Source/ [yangjie@young-1 pgAgent-3.4.0-Source]$ cmake ./ -- -- ================================================================================ -- Configuration summary: -- -- Project : pgagent -- Description : pgAgent is a job scheduling engine for PostgreSQL -- Version : 3.4.0 -- -- PostgreSQL version string : PostgreSQL 9.6.6 -- PostgreSQL version parts : 9.6.6 -- PostgreSQL path : /work/pgsql/pg96 -- PostgreSQL config binary : /work/pgsql/pg96/bin/pg_config -- PostgreSQL include path : /work/pgsql/pg96/include ...
yonj1e 发布于 2个月前 阅读 258

MySQL 5.6 升级为 MySQL 5.7

该篇主要讲In-Place Upgrade的升级方式,即物理方式的升级。
o翡翠谷o 发布于 3个月前 阅读 575

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上供下载。 创建informi...
wangxuwei 发布于 7小时前

Redis持久化RDB和AOF

本文转载自:http://www.ymq.io/2018/03/24/redis/ Redis是一种高级key-value数据库。数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。 Redis为了保证效率,数据缓存在内存中,Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。 Redis是一个支持持久化的内存数据库,可以将内存中的数据同步到磁盘保证持久化。 Redis的持久化策略:2种 RDB:快照形式是直接把内存中的数据保存到一个 dump 文件中,定时保存,保存策略。 AOF:把所有的对Redis的服务器进行修改的命令都存到一个文件里,命令的集合。 Redis默认是快照RDB的持久化方式 当 Redis 重启时,它会优先使用 AOF 文件来还原数据集,因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。你甚至可以关闭持久化功能,让数据只在服务器运行时存。 一、RDB 持久化 默认 Redis 是会以快照 “RDB” 的形式将数据持久化到磁盘的,一个二进 制文件,dump.rdb 工作原理简单介绍一下: 当 Redis 需要做持久化时,Red...
IT--小哥 发布于 2个月前 阅读 16

CentOS7.4安装mysql-5.7.21

CentOS7.4安装mysql-5.7.21
菩提_ 发布于 2个月前 阅读 71

「华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

SQL-on-Hadoop实现方案对比

Hive 建立在Hadoop分布式文件系统(HDFS)和MapReduce之上。 提供HiveQL语言,允许用户进行类似SQL的查询。 是老牌的Hadoop数据仓库产品,在MapReduce计算框架上封装一个SQL语义层简化MR的开发、 优点: 简化MR程序的开发,稳定性最好 缺点: 速度慢,适用于后台的批处理应用场景,不适合交互即时查询和联机分析。   Spark SQL Hadoop的另一个SQL引擎,以Spark作为底层计算框架,是一个Scala的子集。 Spark SQL是Spark处理结构化数据的程序模块。 可以将结构化数据作为Spark RDD进行查询(弹性分布式数据集) 提供了一种分布式共享内存的受限形式 由于RDD是只读的,只能对其进行创建、转化和求值等操作 优点: 共享内存计算,性能上要比Hive快几倍,这种内存操作减少了磁盘IO,大大提高了计算速度。 缺点: 开发Spark初衷是用于机器学习系统的培训算法,而不是针对只读操作和SQL查询,所以性能上要差一些 Spark在20TB的数据集集合上做SQL查询要10min,速度是Hive的3倍,但是还是不能支撑交互查询和OLAP应用,同时占用了大量内存容易oom   Impala 运行在Hadoop上的MPP(大规模并行处理)查询引擎,提供对Hadoop集群数据的高性能,低延迟SQL查询,使用HDFS作为底层存储。 ...
yangty2017 发布于 2个月前 阅读 63

安装 mysql 数据库, 并做 主 从(二)

按照第一篇安装 mysql 数据库, 并做 主 从(一)  安装好两台mysql;做好这些后,我们来做主从吧! ip serverid role 192.168.80.119 1 master 192.168.80.110 2 slave master上开启binlog日志,加入以下配置 vim /etc/my.cnf [mysqld] server-id=1 #服务器id (主从必须不一样) log-bin=mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径 #作为主机的配置,可以不写,默认所有 binlog-do-db=                 #要给从机同步的库(多个写多行) binlog-ignore-db=mysql #不给从机同步的库(多个写多行) binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改 重启数据库 service mysqld restart mysql -uroot -p password mysql> show variables like '%log_bin%';   master的数据库中建立备份账号:backup为用户名,%表示任何远程地址,如下表示密码为123456的任何远程地址的backup都可以连接master主机 mysql> grant replication slave on *.* to 'backup'@'%' identified by '123456'; mysql> use mysq...
努力爬坑人 发布于 2个月前 阅读 10

PostgreSQL中如何将单列多行组合成一行?

客户有一个场景,希望将某个字断查询出得结果组合成为一个字符串,用逗号分割,具体实施方法为通过PG中的函数实现: --查看某一列数据 select name from cities; Las Vegas Mariposa Madison --使用string_agg函数组合多行为一行 select string_agg(name,',') from cities; Las Vegas,Mariposa,Madison  
闻术苑 发布于 1个月前 阅读 31

Hadoop和Spark的区别

談到大數據,相信大家對Hadoop 和Apache Spark 這兩個名字並不陌生。但我們往往對它們的理解只是提留在字面上,並沒有對它們進行深入的思考,下面不妨跟我一塊看下它們究竟有什麼異同。 1.解決問題的層面不一樣 首先,Hadoop 和Apache Spark 兩者都是大數據框架,但是各自存在的目的不盡相同。 Hadoop 實質上更多是一個分佈式數據基礎設施: 它將巨大的數據集分派到一個由普通計算機組成的集群中的多個節點進行存儲,意味著您不需要購買和維護昂貴的服務器硬件。 同時,Hadoop 還會索引和跟踪這些數據,讓大數據處理和分析效率達到前所未有的高度。 Spark,則是那麼一個專門用來對那些分佈式存儲的大數據進行處理的工具,它並不會進行分佈式數據的存儲。 2.兩者可合可分 Hadoop 除了提供為大家所共識的HDFS 分佈式數據存儲功能之外,還提供了叫做MapReduce 的數據處理功能。所以這裡我們完全可以拋開Spark,使用Hadoop 自身的MapReduce 來完成數據的處理。 相反,Spark 也不是非要依附在Hadoop 身上才能生存。但如上所述,畢竟它沒有提供文件管理系統,所以,它必須和其他的分佈式文件系統進行集成才能運作。這裡我們可以選擇Hadoop 的HDFS,也可以選擇其他的基於雲的數據系...
临江仙卜算子 发布于 1个月前 阅读 4

MySQL控制(关闭、打开)自动提交功能——commit和rollbacke的使用

      今天在操作mysql数据库时,犯了一个大错误,执行了一个更新语句,但时条件没写全,结果在执行了几秒之后才发现这个问题,将一些不该改变的记录值改变了。1天时间全部耗在数据恢复上了,于是恶补了mysql中关于自动提交功能及commit和rollback的内容,在此做一个标记,防止类似事情再次发生! MySQL的自动提交功能         在MySQL中执行命令时,通常都直接被确定提交了。也就是说用户不用意识此事,所有的命令都会被自动COMMIT。特别是当存储引擎为MyISAM的情况下,本身它是不支持事务处理的,只要执行了命令,所有的命令部会被提交。         这样的默认自动提交的功能就被称为自动提交功能。自动提交功能默认被置为ON的状态。但是,如果存储引擎为InnoDB (Default)时,当执行了START TRANSACTION或BEGIN命令(MySQL事务处理-删除后回滚)后,将不会自动提交了,只有明确执行了COMMIT命令后才会被提交,在这之前可以执行ROLLBACK 命令回滚更新操作。         所有的 DML 语句都是要显式提交的(autocommit=OFF情况下),也就是说要在执行完DML语句之后,执行 COMMIT 。而其他的诸如 DDL语句的,都是隐式提交的。也就是说,在运行那些非 ...
fairy1674 发布于 4周前 阅读 20

Redis配置文件参数说明

Redis配置文件参数说明 配置文件参数说明:    1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程     daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定     pidfile /var/run/redis.pid 3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字     port 6379 4. 绑定的主机地址     bind 127.0.0.1 5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能     timeout 300 6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose     loglevel verbose 7. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null     logfile stdout 8. 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id     databases 16 9. 指定在多长时间内,有多少次更新操作...
rootliu 发布于 4周前 阅读 10

pycharm不能访问oracle(sybase)的问题

oracle环境: 服务器:docker中的oracle服务器,服务名为xe,参考unbuntu下Docker安装oracle和mysql 客户端:instantclient客户端,参考打造ubuntu下精简版的oracle客户端及pro*c编译环境 由于oracle环境变量: export ORACLE_HOME=/opt/ora11g/instantclient_11_2 export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG='simplified chinese_china'.UTF8 export PATH=$ORACLE_HOME/bin:$PATH alias sqlplus='/usr/bin/rlwrap sqlplus' 在.bashrc中设置,而pycharm是通过桌面快捷方式来启动的,导致pycharm没有继承oracle相关的环境变量,从而python无法识别oracle服务名: 解决方案: 1、在bash中启动pycharm $/usr/local/bin/charm 2、修改python代码加上主机地址 如: conn= cx_Oracle.connect('scott/tiger@XE') 改为: conn= cx_Oracle.connect('scott/tiger@127.0.0.1/XE') 这样连接成功,但中文会乱码:因为没有继承 export NLS_LANG='simplified chinese_china'.UTF8 python代码中加上: import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 就可解决。 3、通过pyodbc也会有同样的问题: /etc/odbcinst.ini配置不变: [oracle] Descr...
wangxuwei 发布于 4周前 阅读 20

MySQL

查看表相关命令 - 查看表结构    desc 表名 - 查看生成表的SQL    show create table 表名 - 查看索引    show index from  表名   使用索引和不使用索引 由于索引是专门用于加速搜索而生,所以加上索引之后,查询效率会快到飞起来。 # 有索引 mysql> select * from tb1 where name = 'zhangqiye'; +-----+-------------+---------------------+----------------------------------+---------------------+ | nid | name        | email               | radom                            | ctime               | +-----+-------------+---------------------+----------------------------------+---------------------+ | 889 | zhangqiye | zhangqiye@live.com | 5312269e76a16a90b8a8301d5314204b | 2016-08-03 09:33:35 | +-----+-------------+---------------------+----------------------------------+---------------------+ 1 row in set (0.00 sec) # 无索引 mysql> select * from tb1 where email = 'zhangqiye@live.com'; +-----+-------------+---------------------+----------------...
stars永恒 发布于 5天前 阅读 7

MySQL底层索引剖析

1:Mysql索引是什么 mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引。可简单理解为排好序的快速查找数据结构。如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。 1.1:索引分类 单值索引:一个索引包含1个列 create index idx_XX on table(f1) 一个表可以建多个。 唯一索引: 索引列的值必须唯一,但允许有空值 create unique index idx_XX on table(f1) 复合索引: 一个索引包含多个列 如:create index idx_XX on table(f1,f2,..) 1.2:索引结构 BTree Hash索引 full-text全文索引: 1.3:什么情况建立索引 主键自动建立唯一索引 频繁作为查询条件的字段因该创建索引 查询中与其他表关联的字段,外键关系建立索引 频繁更新的字段不适合建立索引 where条件里用不到的字段不建立索引 单键/复合索引的选择(高并发下倾向复合) 查询中排序的字段因建立索引 查询中统计或分组字段 1.4:什么情况建不建立索引 频繁增删改的表 表记录太少 数据重复且分布平均的表字段。(重复太多索引意义不大) 2:Mysql索引为什么要用B+Tree实现 2.1:B+树在数据库索引中的应用 目前大部...
老道士 发布于 3天前 阅读 8

Mysql数据库开发 怎么优化SQL语句?

    1) 现场抓出慢查询语句 show full processlist;   2) 配置参数:   slow_query_log_file = ON 慢查询开启开关   long_query_time =2 记录大于2秒的sql语句...
老男孩Linux培训 发布于 2天前 阅读 6

十问 TiDB :关于架构设计的一些思考

作者:黄东旭 >“我希望能够把 TiDB 的设计的一些理念能够更好的传达给大家,相信大家理解了背后原因后,就能够把 TiDB 用的更好。” 做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多...
TiDB 发布于 2天前 阅读 1612 评论 7 点赞 21

高并发大容量NoSQL解决方案探索

大数据时代,企业对于DBA也提出更高的需求。同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注。本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容:一、公司在KV存储上的架构演进以及运维需要解决的问题;二、对NoSQL如何选型以及未来发展的一些思考。 据官方统计,截止目前(2018年4月20日)NoSQL有225个解决方案,具体到每个公司,使用的都是其中很小的一个子集,下图中蓝色标注的产品是当前个推正在使用的。 NoSQL的由来 1946年,第一台通用计算机诞生。但一直到1970年RDMBS的出现,大家才找到通用的数据存储方案。到21世纪,DT时代让数据容量成为最棘手的问题,对此谷歌和亚马逊分别提出了自己的NoSQL解决方案,比如谷歌于2006年提出了Bigtable。2009年的一次技术大会上,NoSQL一词被正式提出,到现在共有225种解决方案。 NoSQL与RDMBS的区别主要在两点:第一,它提供了无模式的灵活性,支持很灵活的模式变更;第二,可伸缩性,原生的RDBMS只适用于单机和小集群。而NoSQL一开始就是分布式的,解决了读写和容量扩展性问题。以上两点,也是NoSQL产生的根本原因。 实现分布式主要有两种手段:副本(Replication)和分片(...
illy安智 发布于 1个月前 阅读 4321 评论 5 点赞 6

从删库到跑路or恢复,记一次MySQL数据库文件损坏恢复经历

## 一、 前言 2018年5月28日,北京晴有轻度沙尘暴。 坐上公交车走在上班的路上,想起老罗经常说起的一句话:想成盛田昭夫时代的索尼,想成乔布斯时代的苹果,于是继续研读着 **《日本制造:盛田昭夫的日式经营...
OSC李强 发布于 2天前 阅读 20

TiDB 在西山居实时舆情监控系统中的应用

## 公司简介 西山居创建 1995 年初夏,在美丽的海滨小城珠海,西山居工作室孕育而生,一群西山居居士们十年如一日尅勊业业的奋斗。"创造快乐,传递快乐!" 一直是西山居居士们的创作宗旨。西山居以领先的技术作为坚实的基础以独特的本土化产品为玩家提供时尚化服务。在未来,西山居仍以娱乐软件为主导产品,不断进行研发和市场活动,逐步发展成为国内最优秀的集制作、发行于一体的数字化互动娱乐公司。 ## 业务背景 由于公司产品的社交属性都非常强,对相关舆情进行分析与了解就显得很有必要,在此背景下,舆情监控系统应运而生。该系统利用算法组提供的分词算法,对文本进行解析与分类,打上各类标记后再通过计算产生中间结果。舆情系统直接查询这些中间结果,产生各类报表与趋势图,为及时掌握各类舆情趋势提供便利。用户可以自由组合舆情关注点,从而对平台有很严格的实时交互性查询要求,是典型的实时 HTAP 类业务。 ## 存储技术选型 舆情系统之前我们曾经实现过一个客服系统,这个系统要求能实时查询,但面对是海量的玩家行为记录。在当时情况下(2016 年),可以选择的对象只有 MyCAT 这类数据库中间件,通过综合压力测试后,我们选定了 KingShard 这一款由公司前同事...
TiDB 发布于 2周前 阅读 47

spring cache实现方法缓存(spring boot + redis)

本文代码示例:...
啊哼哼 发布于 1周前 阅读 52

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL的教程的第1部分中,我们做了所有在MySQL中编辑root用户,拥有完全访问所有的数据库。 但是,在可能需要更多限制的情况下,可以使用自定义权限创建用户。 让我们从在MySQL shell中创建一个新用户开始: CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 可悲的是,此时newuser没有权限对数据库执行任何操作。 事实上,如果newuser甚至尝试登录(使用密码,密码),他们将无法访问MySQL shell。 因此,首先要做的是为用户提供访问他们将需要的信息的权限。 GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost'; 此命令中的星号分别表示它们可以访问的数据库和表(这些命令允许用户在所有数据库和表中读取,编辑,执行和执行所有任务)。 一旦您确定了要为新用户设置的权限,请务必重新加载所有权限。 FLUSH PRIVILEGES; 您的更改现已生效。 如何授予不同的用户权限 以下是用户可以享受的其他常见可能权限的简短列表。 ALL PRIVILEGES - 正如我们前面所看到的,这将...
问题终结者 发布于 3天前 阅读 28

TiDB 分布式数据库在转转公司的应用实践

> 作者:孙玄,转转公司首席架构师;陈东,转转公司资深工程师;冀浩东,转转公司资深 DBA。 ## 公司及业务架构介绍 转转二手交易网 —— 把家里不用的东西卖了变成钱,一个帮你赚钱的网站。由腾讯与 58 集团共同投资。为海量用户提供一个有担保、便捷的二手交易平台。转转是 2015 年 11 月 12 日正式推出的 APP,遵循“用户第一”的核心价值观,以“让资源重新配置,让人与人更信任”为企业愿景,提倡真实个人交易。 转转二手交易涵盖手机、3C 数码、母婴用品等三十余个品类。在系统设计上,转转整体架构采用微服务架构,首先按照业务领域模型垂直拆分成用户、商品、交易、搜索、推荐微服务。对每一个功能单元(商品等),继续进行水平拆分,分为商品网关层、商品业务逻辑层、商品数据访问层、商品 DB / Cache,如下图所示:  ![image](http://upload-images.jianshu.io/upload_images/542677-7f01b39a1ae06a79?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 项目背景 1. **面临的问题** 转转后端业务现阶段主要使用 MySQL 数据库存储数据,还有少部分业务使用 MongoDB。虽然目前情况下使用这两种存储基本可以满足我们的需求,但随着业务的增长,公司的数据规...
TiDB 发布于 3周前 阅读 38

高并发大容量NoSQL解决方案探索

大数据时代,企业对于DBA也提出更高的需求。同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注。本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容:一、公司在KV存储上的架构演进以及运维需要解决的问题;二、对NoSQL如何选型以及未来发展的一些思考。 据官方统计,截止目前(2018年4月20日)NoSQL有225个解决方案,具体到每个公司,使用的都是其中很小的一个子集,下图中蓝色标注的产品是当前个推正在使用的。 NoSQL的由来 1946年,第一台通用计算机诞生。但一直到1970年RDMBS的出现,大家才找到通用的数据存储方案。到21世纪,DT时代让数据容量成为最棘手的问题,对此谷歌和亚马逊分别提出了自己的NoSQL解决方案,比如谷歌于2006年提出了Bigtable。2009年的一次技术大会上,NoSQL一词被正式提出,到现在共有225种解决方案。 NoSQL与RDMBS的区别主要在两点:第一,它提供了无模式的灵活性,支持很灵活的模式变更;第二,可伸缩性,原生的RDBMS只适用于单机和小集群。而NoSQL一开始就是分布式的,解决了读写和容量扩展性问题。以上两点,也是NoSQL产生的根本原因。 实现分布式主要有两种手段:副本(Replication)和分片(...
illy安智 发布于 1个月前 阅读 4321 评论 5 点赞 6

十问 TiDB :关于架构设计的一些思考

作者:黄东旭 >“我希望能够把 TiDB 的设计的一些理念能够更好的传达给大家,相信大家理解了背后原因后,就能够把 TiDB 用的更好。” 做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多...
TiDB 发布于 2天前 阅读 1612 评论 7 点赞 21

spring cache实现方法缓存(spring boot + redis)

本文代码示例:...
啊哼哼 发布于 1周前 阅读 52

6月25日至27日,为何全球开源大咖齐聚国家会议中心?LC3来啦!

广告
今年6月25日至27日, LinuxCon + ContainerCon + CloudOpen(LC3)将在北京国家会议中心召开。本次会议针对开源技术在人工智能和深度学习、区块链、云原生、虚拟服务器架构和微服务、新兴技术、基础实施和自动化、IoT和M2M、KVM、Linux系统、网络编排等10大前沿领域的应用,邀请了全球数百位业界大咖,用三天时间、超过200场分享,从市场、技术、产业甚至整个生态层面,将做全方位的探讨。
LinuxCon + ContainerCon + CloudOpen(LC3)

(转)hive中解析json数组

hive中解析一般的json是很容易的,get_json_object就可以了。 但如果字段是json数组,比如 [{"bssid":"6C:59:40:21:05:C4","ssid":"MERCURY_05C4"},{"bssid":"AC:9C:E4:04:EE:52","appid":"10003","ssid":"and-Business"}], 直接调用get_json_object返回空值。这样的话对于不会写UDF的同学来说,解析json数组就变得很棘手,好在hive中自带了explode函数,从而让解析json数组变得有可能了。这里先介绍一下explode的使用方法。 explode(array) select explode(array('A','B','C')) as col; select tf.* from (select 0 from dual) t lateral view explode(array('A','B','C')) tf as col; 运行结果: col  C B A 函数说明:explode的参数是数组,提供了类似于列转的功能;假如参数数组长度为3,则返回的记录会是3行,且每列为各个数组项,如上。回到  [{"bssid":"6C:59:40:21:05:C4","ssid":"MERCURY_05C4"},   {"bssid":"AC:9C:E4:04:EE:52","appid":"10003","ssid":"and-Business"}], 怎么解析出bssid?思路是通过explode把原数据变成2行数据 ({"bssid":"6C:59:40:21:05:C4","ssid":"MERCURY_05C4"}和  {"bssid":"AC:9C:E4:04:EE:52","appid":"10003","ssid":"and-Bu...
Avner 发布于 3个月前 阅读 248

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL的教程的第1部分中,我们做了所有在MySQL中编辑root用户,拥有完全访问所有的数据库。 但是,在可能需要更多限制的情况下,可以使用自定义权限创建用户。 让我们从在MySQL shell中创建一个新用户开始: CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 可悲的是,此时newuser没有权限对数据库执行任何操作。 事实上,如果newuser甚至尝试登录(使用密码,密码),他们将无法访问MySQL shell。 因此,首先要做的是为用户提供访问他们将需要的信息的权限。 GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost'; 此命令中的星号分别表示它们可以访问的数据库和表(这些命令允许用户在所有数据库和表中读取,编辑,执行和执行所有任务)。 一旦您确定了要为新用户设置的权限,请务必重新加载所有权限。 FLUSH PRIVILEGES; 您的更改现已生效。 如何授予不同的用户权限 以下是用户可以享受的其他常见可能权限的简短列表。 ALL PRIVILEGES - 正如我们前面所看到的,这将...
问题终结者 发布于 3天前 阅读 28

mysql in action / alter table

# change character set ``` ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ; ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLATE = utf8mb4_general_ci ; ```
qwfys 发布于 5天前 阅读 25

(四)购物商城数据库设计-订单系统设计

上一篇文章[购物商城数据库设计-商品表设计](https://my.oschina.net/u/3658366/blog/1820965)中我们介绍了商品表的设计与实现。 接下来我们来一起设计下订单表。 订单系统在整个商城体系中的作用非常重要,因为一些业务的开展往往是围绕订单来展开的。因此设计好一个订单系统是多么的重要。 我们根据用户的行为逐个设计表结构。 首先用户浏览商品,将看中的商品加入到购物车,这里应该有一张购物车表 ``` 购物车表(order_cart) ---- skuId spuId 用户id 店铺id 商品名称 商品数量 商品价格 状态(下单之后对应商品就不应该显示在购物车了) ``` 选中购物车中的某些商品,进行下单,订单表也就应运而生 ``` 订单表(order_info) ---- 订单编号(如果对编号格式没什么要求,可使用雪花算法https://blog.csdn.net/u011499747/article/details/78254990来生成) itemCount (商品项数量,不是商品个数,比如手机*2,鼠标*1,这里应该是2) 用户id 店铺id 下单时间 支付方式(可用数字表示,如1:支付宝,2:微信,3:银行卡...) 支付时间 outTradeNo 支付宝订单号 配送方式 期望配送日期 商品总额 运费 实际付款 订单状态(这里的状态可根据实际项目来定,可以定10,20,30..这...
tanghc 发布于 3天前 阅读 26

MySQL中utf8字符集、排序规则及utf8mb4_bin列大小写不敏感方法

# utf8mb4 和 utf8 比较 > - `utf8mb4`: A UTF-8 encoding of the Unicode character set using one to four bytes per character. > > - `utf8mb3`: A UTF-8 encoding of the Unicode character set using one to three bytes per character. > > - `utf8`: An alias for `utfmb3`. > > (https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html) UTF-8是使用1~4个字节,一种变长的编码格式。([字符编码](https://github.com/4rnold/Blog/issues/2) ) mb4即 most bytes 4,使用4个字节来表示完整的UTF-8。而MySQL中的utf8是utfmb3,只有三个字节,节省空间但不能表达全部的UTF-8,只能支持“基本多文种平面”(Basic Multilingual Plane,BMP)。 推荐使用utf8mb4。 # utf8mb4_unicode_ci 和 utf8mb4_general_ci 比较 general_ci 更快,unicode_ci 更准确 >  in German and some other languages `ß` is equal to `ss`. 这种情况unicode_ci能准确判断。 具体有什么差别呢?参见下面的连接。 http://mysql.rjweb.org/utf8mb4_collations.html ``` utf8mb4_general_ci P=p Q=q R=r=Ř=ř S=s=ß=Ś=ś=Ş=ş=Š=š sh ss sz utf8mb4_unicode_ci P=p Q=q ...
4rnold 发布于 7天前 阅读 30

mysql 运算符 <=>,:=,@,@@的含义

mysql 运算符 <=>,:= 的含义
big_cat 发布于 1个月前 阅读 145

安装和初始化mysql-8.0.11-winx64

一.下载解压,设置配置文件 [mysql] ; 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] ;设置3306端口 port = 3306 ; 设置mysql的安装目录 basedir=D:\mysql-8.0.11-winx64 ; 设置mysql数据库的数据的存放目录 datadir=D:\mysql-8.0.11-winx64\data ; 允许最大连接数 max_connections=200 ; 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 ; 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB 将以上配置信息保存为my.ini,放到mySQL解压的根目录,如D:\mysql-8.0.11-winx64 二.配置系统环境变量 1.我的电脑-属性 2.高级系统设置 3.环境变量 4.系统变量-path 5.新建,添加(mySQL安装的根目录的绝对路径,如D:\mysql-8.0.11-winx64)即可 三.初始化设置 1.打开shell终端(开始-运行-cmd) 2.输入“mysqld --initialize --insecure --user=mysql”,注意命令之间用一个空格隔开。 自动生成root用户(密码为空),并在mysql数据库下生成user等多张表。 mysqld --initialize --insecure --user=mysql 或者带随机密码: mysqld --initialize --user=mysql 随机密码被保存在错误日志里,位于(前面配置好的datadir)数...
Kefy 发布于 1个月前 阅读 205

navicat for mysql 链接时报错:1251-Client does not support authentication protocol requested by server

客户端使用navicat for mysql。本地安装了mysql 8.0。但是在链接的时候提示: 主要原因是mysql服务器要求的认证插件版本与客户端不一致造成的。 打开mysql命令行输入如下命令查看,系统用户对应的认证插件: 可以看到root用户使用的plugin是caching_sha2_password,mysql官方网站有如下说明: 意思是说caching_sha2_password是8.0默认的认证插件,必须使用支持此插件的客户端版本。 plugin的作用之一就是处理后的密码格式和长度是不一样的,类似于使用MD5加密和使用base64加密一样对于同一个密码处理后的格式是不一样的。 解决方法: 我不希望更新本地的客户端版本,想直接使用原来的环境来链接。 解决方法是将root的plugin改成mysql_native_password。相当于降了一级。 mysql官方网站提供了从mysql_old_password升级到mysql_native_password,我们可以仿照这个。官方原文如下: 这里改成: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; 这行代码有两层含义,第一:修改root的密码为'root',摒弃原来的旧密码。第二:使用mysql_native_password对新密码进行编码。   修改完成后再用客户端登陆成功: 补充: 如果在修改插件的时候出现错...
硕硕和果果 发布于 1个月前 阅读 289

【LeetCode】196. 删除重复的电子邮箱

编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。 +----+------------------+ | Id | Email | +----+------------------+ | 1 | john@example.com | | 2 | bob@example.com | | 3 | john@example.com | +----+------------------+ Id 是这个表的主键。 例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行: +----+------------------+ | Id | Email | +----+------------------+ | 1 | john@example.com | | 2 | bob@example.com | +----+------------------+   答案:   解法一: #按Email分组 , 获取分组后查询出来的sql的id,删除不包含这些id的数据 DELETE FROM Person WHERE Id NOT IN (SELECT Id FROM (SELECT MIN(Id) Id FROM Person GROUP BY Email) p); 解法二: #直接用where将两表关联起来也,把相同邮箱且Id大的删除掉 DELETE p2 FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p2.Id > p1.Id;  ...
时刻在奔跑 发布于 1个月前 阅读 131

购物商城数据库设计-商品表设计

大家好,今天我们来设计一下购物商城的商品表。 我们的目标是表结构能够满足下面这张图的搜索: ![搜索](https://img-blog.csdn.net/2018052321034917?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoYzE5ODc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 在设计表之前,我们先来了解下商品中的两个概念:SPU和SKU - SPU SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。 - SKU SKU=Stock Keeping Unit(库存量单位)。即库存进出计量的基本单元,可以是以件,盒,托盘等为单位。 举个例子:iPhone6是一个SPU,iPhone6 32G 白色是一个SKU,iPhone6 128G 白色是另一个SKU。 因此,不难发现,这里需要一张SPU表。 ![SPU](https://img-blog.csdn.net/20180527210756619?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoYzE5ODc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) SPU表有了,这里还是以iPhone6为例,iPhone6有内存16G的,有32G的,有黑色,有白色等信息,这些信息我们称...
tanghc 发布于 3周前 阅读 42

Mysql 5.7 / 5.8 性能测试

![Mysql 5.7 性能测试](http://img.chuansong.me/mmbiz/8XkvNnTiapONa9YjfwAIibGRJRv03AGgtVgFNO3JHbTcDyJMHWmJwjyahq8MpWnAO19QlWE8jhrzxdaZuMGibW8Ng/0?wx_fmt=jpeg "Mysql 5.7 性能测试") ![Mysql 5.8 性能测试](https://static.oschina.net/uploads/space/2018/0420/014526_i6nC_2720166.png "Mysql 5.7 性能测试")
vga 发布于 2个月前 阅读 131 评论 1

使用Navicat将数据导出为text文本 然后再导入

将数据导出为text文本效率很高   1. 准备工作 1.1 准备表结构 1.2 目标库 执行生成表结构sql     2.将表数据导出为text文本 生成的text文本 3. 目标库 导入text 4.效果
Lucky_Me 发布于 3天前 阅读 18

在MySQL中使用explain查询SQL的执行计划

1、什么是MySQL执行计划        要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。         MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。 应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。 逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。         首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。         计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。 物理层,实际物理磁盘上存储的文件,主要有分文数据文件,日志文件。    通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为...
Oo若离oO 发布于 2个月前 阅读 1835 评论 2 点赞 5

MYSQL主从复制搭建及切换操作(GTID与传统)

如下:     MYSQL主从复制方式有默认的复制方式异步复制,5.5版本之后半同步复制,5.6版本之后新增GTID复制,包括5.7版本的多源复制。 MYSQL版本:5.7.20 操作系统版本:linux 6.7 64bit   1、异步复制   MYSQL 默认的复制方式,就是主库写入binlog日志后即可成功返回客户端,无须等待binlog日志传递给从库的过程。但这样一旦主库发生宕机,就有可能出现数据丢失的情况。   1.1搭建异步主从 1、 server-id 不一样 2、 开启binlog,建议开启log_slave_updates,让从库也写binlog,方便后期扩展架构 3、 binlog格式为row。   主库操作: 创建主从复制账号 create user 'rep'@'192.16.20.%' identified by 'mysql';   grant replication slave on *.* to 'rep'@'192.16.20.%';     初始化: mysqldump -S /tmp/mysql3307.sock --single-transaction -uroot -pmysql --master-data=2 -A > salve.sql (我全库导入的有问题,只用的test库)   注意:必须加参数 –master-data=2,让备份出来的文件中记录备份这一刻binlog文件与position号,为搭建主从环境做准备。查看备份文件中记录的当前binlog文件和position号。   scp salve.sql 172.16.20.21:/binlogbak     mysq...
rootliu 发布于 4天前 阅读 20

TiDB 源码阅读系列文章(九)Hash Join

>作者:张建 ## 什么是 Hash Join Hash Join 的基本定义可以参考维基百科:[Hash join](https://en.wikipedia.org/wiki/Hash_join)。简单来说,A 表和 B 表的 Hash Join 需要我们选择一个 Inner 表来构造哈希表,然后对 Outer 表的每一行数据都去这个哈希表中查找是否有匹配的数据。 我们不用 “小表” 和 “大表” 这两个术语是因为:对于类似 Left Outer Join 这种 Outer Join 来说,如果我们使用 Hash Join,不管 Left 表相对于 Right 表而言是大表还是小表,我们都只能使用 Right 表充当 Inner 表并在之上建哈希表,使用 Left 表来当 Outer 表,也就是我们的驱动表。使用 Inner 和 Outer 更准确,没有迷惑性。在 Build 阶段,对 Inner 表建哈希表,在 Probe 阶段,对由 Outer 表驱动执行 Join 过程。 ## TiDB Hash Join 实现 TiDB 的 Hash Join 是一个多线程版本的实现,主要任务有: + Main Thread,一个,执行下列任务: - 读取所有的 Inner 表数据; - 根据 Inner 表数据构造哈希表; - 启动 Outer Fetcher 和 Join Worker 开始后台工作,生成 Join 结果,各个 goroutine 的启动过程由 [fetchOuterAndProbeHashTable](https://github.com/pingcap/tidb/blob/source-...
TiDB 发布于 2周前 阅读 375 评论 2

MongoDB的简单学习5-Mongo数据库的管理

主要包括数据导入、数据导出、数据备份、数据恢复、用户安全和认证
wind2012 发布于 4周前 阅读 41

MySQL默认配置文件位置发生改变后如何查找

今天在公司一台陌生服务器上处理MySQL问题,突然发现找不到/etc/my.cnf文件,而这台服务器确实是有安装MySQL的,无奈之下查看资料,整理如下,如何在一台陌生的MySQL服务器上找到MySQL的核心配置文件。 1、首先先看看你的mysql在哪,通过which命令         which mysql         会得到如下结果 [zz@localhost ~]$ which mysql /usr/bin/mysql 2、针对此位置的MySQL查看配置文件路径         /usr/bin/mysql --verbose --help | grep -A 1 'Default options'          结果如下所示: [zz@localhost ~]$ /usr/bin/mysql --verbose --help | grep -A 1 'Default options' Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf     这个信息的意思是:      服务器首先读取的是/etc/my.cnf文件,如果前一个文件不存在则继续读/etc/mysql/my.cnf文件,如若 还不存在便会按照顺序依次读取后面的配置文件。      最终在 /usr/local/mysql/etc/my.cnf 下找到了,问题解决。         ...
Oo若离oO 发布于 3个月前 阅读 185

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们无语预估近日头条的日...
原创小博客 发布于 1天前 阅读 4

在MySQL中设置主从复制入门实例

导读 MySQL复制是一个允许您通过自动从主数据库复制到从数据库来轻松维护MySQL数据的多个副本的过程。 这可能有助于许多原因,包括为数据提供备份,一种在不使用主数据库的情况下分析数据的方法,或者只是作为向外...
问题终结者 发布于 1天前 阅读 2

Redis 数据备份与恢复

Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份。 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE ...
rootliu 发布于 2天前 阅读 4

生产环境redis备份与恢复

生产环境redis备份与恢复
rootliu 发布于 2天前 阅读 2

分布式数据库中间件DDM的实现原理

随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性、甚至指数级上升的情况。此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据...
中间件小哥 发布于 2天前 阅读 6

Mysql数据库开发 怎么优化SQL语句?

    1) 现场抓出慢查询语句 show full processlist;   2) 配置参数:   slow_query_log_file = ON 慢查询开启开关   long_query_time =2 记录大于2秒的sql语句...
老男孩Linux培训 发布于 2天前 阅读 6

怎样监控主从故障是否正常?MySQL数据库

写监控脚本 不同步时发送邮件 #!/bin/bash . /etc/init.d/functions function check(){ rep_file=/tmp/rep$(date +%F).txt while true  do rep=(`/application/mysql/bin/mysql -e "show slave status\G"|awk '/Slave_SQL_Running:/{print $2};/Slave_IO_Running:/{print $2};$1~/Seconds_Behind_Master/{print $2}'|xargs`)   if [ "${rep[0]}" != "Yes" ]; then      echo "Slave_IO_Running: NO" >$rep_file      break 1   fi   if [ "${rep[1]}" != "Yes" ]; then      echo "Slave_SQL_Running: NO" >$rep_file   fi     if [ "${rep[2]}" -ne 0 ]; then      echo " Seconds_Behind_Master delay" >$rep_file      break 1   fi   sleep 3 done }   function main(){   while true   do      check      mail -s "replication false" snowxue521520@163.com </tmp/rep$(date +%F).txt 互联网企业大多用的数据库是MySQL的,想要众多的IT工作者中脱颖而出,就需要拥有高深的技术,学习增值是必不可少的。学习之路,是贵在坚持的。  ...
老男孩Linux培训 发布于 2天前 阅读 2

ISO:数据持久化4(sqlite3)

SQLite3 1、简介 SQLite使用C语言编写,可移植性性强,可靠性高,小而易用,运行时同使用它的应用程序公用相同的进程空间,并不会出现在两个不同的进程里; SQLite提供了SQL-92标准的支持,支持多表、索引、事务、...
京一 发布于 2天前

如何开启MySQL慢查询日志

前言 数据库日志记录了用户对数据库的各种操作及数据库发生的各种事件。能帮助数据库管理员追踪、分析问题。MySQL提供了错误日志、二进制日志、查询日志、慢查询日志。 MySQL的慢查询日...
全部原谅 发布于 2天前

从MySQL到HBase:数据存储方案转型的演进

一、集群化方案 1、MySQL应用的演化 MySQL与HBase说到最核心的点,是一种数据存储方案。方案本身没有对错、没有好坏,只有合适与否。相信多数公司都与...
迷你芊宝宝 发布于 2天前

比特币现金开发者提出新的交易订单规则

本周,四位比特币现金的四位开发者和研究员:Joannes Vermorel(L...
lpy411 发布于 2天前 阅读 2

CentOS7安装使用MongoDB 3.4 单节点(for Hygieia)

安装准备 NUMA Settings Running MongoDB on a system with Non-Uniform Access Memory (NUMA) can cause a number of operational problems, including slow performan...
valiantjiang 发布于 2天前 阅读 2

读书博客能否像互联网大佬京东JD一样创造奇迹?

因为最近在说手写博客,是一个关于教育方面的读书博客,希望自己能够坚持,让自己的所学的知识得到用武之地,以后能够让自己有些成就感,但经过6个月的努力,发现还是比较困难,写博客虽然看似简单,但其实不然...
原创小博客 发布于 2天前 阅读 5

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema;   2、查询所有数据的大小...
源哥L 发布于 2天前 阅读 8

十问 TiDB :关于架构设计的一些思考

作者:黄东旭 >“我希望能够把 TiDB 的设计的一些理念能够更好的传达给大家,相信大家理解了背后原因后,就能够把 TiDB 用的更好。” 做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多...
TiDB 发布于 2天前 阅读 1612 评论 7 点赞 21

CentOS7.4安装Mysql

CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用MariaDB代替了,MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了M...
早起的虫儿被鸟吃 发布于 2天前

事务隔离级别概念

脏读 两个事务,第一个事务修改了数据但是没有提交,这时第二个事务读取了第一个事务没有提交的数据,称之为脏读。 不可重复读 两个事务,第一个事务读取一条数据,这时第二个事务修改了或者提交了第一事务读取...
Jpchina 发布于 2天前 阅读 11

从删库到跑路or恢复,记一次MySQL数据库文件损坏恢复经历

## 一、 前言 2018年5月28日,北京晴有轻度沙尘暴。 坐上公交车走在上班的路上,想起老罗经常说起的一句话:想成盛田昭夫时代的索尼,想成乔布斯时代的苹果,于是继续研读着 **《日本制造:盛田昭夫的日式经营...
OSC李强 发布于 2天前 阅读 20

MySQL备份还原和定时任务

## 一、前言 2018年5月28日这个日子已经过去20几天了,那天发生的一切到现在回想一下都有些后怕。最近看了一篇文章里面有一句话挺好,**删库(数据库损坏)只有两条路可以走,一是恢复,二是跑路**。很明显我选...
OSC李强 发布于 2天前

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作文写作方面的站点...
原创小博客 发布于 3天前 阅读 6

TiDB 源码阅读系列文章(九)Hash Join

>作者:张建 ## 什么是 Hash Join Hash Join 的基本定义可以参考维基百科:[Hash join](https://en.wikipedia.org/wiki/Hash_join)。简单来说,A 表和 B 表的 Hash Join 需要我们选择一个 Inner 表来构造哈希表,然后对 Outer 表的每一行数据都去这个哈希表中查找是否有匹配的数据。 我们不用 “小表” 和 “大表” 这两个术语是因为:对于类似 Left Outer Join 这种 Outer Join 来说,如果我们使用 Hash Join,不管 Left 表相对于 Right 表而言是大表还是小表,我们都只能使用 Right 表充当 Inner 表并在之上建哈希表,使用 Left 表来当 Outer 表,也就是我们的驱动表。使用 Inner 和 Outer 更准确,没有迷惑性。在 Build 阶段,对 Inner 表建哈希表,在 Probe 阶段,对由 Outer 表驱动执行 Join 过程。 ## TiDB Hash Join 实现 TiDB 的 Hash Join 是一个多线程版本的实现,主要任务有: + Main Thread,一个,执行下列任务: - 读取所有的 Inner 表数据; - 根据 Inner 表数据构造哈希表; - 启动 Outer Fetcher 和 Join Worker 开始后台工作,生成 Join 结果,各个 goroutine 的启动过程由 [fetchOuterAndProbeHashTable](https://github.com/pingcap/tidb/blob/source-...
TiDB 发布于 2周前 阅读 375 评论 2

高并发大容量NoSQL解决方案探索

大数据时代,企业对于DBA也提出更高的需求。同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注。本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容:一、公司在KV存储上的架构演进以及运维需要解决的问题;二、对NoSQL如何选型以及未来发展的一些思考。 据官方统计,截止目前(2018年4月20日)NoSQL有225个解决方案,具体到每个公司,使用的都是其中很小的一个子集,下图中蓝色标注的产品是当前个推正在使用的。 NoSQL的由来 1946年,第一台通用计算机诞生。但一直到1970年RDMBS的出现,大家才找到通用的数据存储方案。到21世纪,DT时代让数据容量成为最棘手的问题,对此谷歌和亚马逊分别提出了自己的NoSQL解决方案,比如谷歌于2006年提出了Bigtable。2009年的一次技术大会上,NoSQL一词被正式提出,到现在共有225种解决方案。 NoSQL与RDMBS的区别主要在两点:第一,它提供了无模式的灵活性,支持很灵活的模式变更;第二,可伸缩性,原生的RDBMS只适用于单机和小集群。而NoSQL一开始就是分布式的,解决了读写和容量扩展性问题。以上两点,也是NoSQL产生的根本原因。 实现分布式主要有两种手段:副本(Replication)和分片(...
illy安智 发布于 1个月前 阅读 4321 评论 5 点赞 6

在MySQL中使用explain查询SQL的执行计划

1、什么是MySQL执行计划        要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。         MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。 应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。 逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。         首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。         计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。 物理层,实际物理磁盘上存储的文件,主要有分文数据文件,日志文件。    通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为...
Oo若离oO 发布于 2个月前 阅读 1835 评论 2 点赞 5

十个实用MySQL函数

十个实用MySQL函数,你要不要进来领走...
andyqian 发布于 6个月前 阅读 3211 评论 6 点赞 6

谈谈开源(一)

作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 KPI 或者是技术宣传的手段。但是在我们看来,大多数人开源做的并不好,大多数开源项目也没有被很好的维护。比如前一段时间微博上流传关于 Tengine 的讨论,一个优秀的开源项目不止是公布源代码就 OK 了,还需要后续大量的精力去维护,包括制定 RoadMap、开发新功能、和社区交流、推动项目在社区中的使用、对使用者提供一定程度的支持,等等。 目前我们在国内没看到什么特别好的文章讲如何运营一个开源项目,或者是如何做一个顶级的开源项目。TiDB 这个项目从创建到现在已经有两年多,从开发之初我们就坚定地走开源路线,陆续开源了 TiDB、TiKV、PD 这三个核心组件,获得了广泛的关注,项目在 GitHub 的 Trending 上面也多次登上首页。在这两年中,我们在这方面积累了一些经验和教训,这里和大家交流一下我们做开源过程中的一些感受,以及参与开源项目(至少是指 TiDB 相关项目)的正确姿势。 ### 什么是开源 Open-source software (OSS) is computer software with its source code made available with a license in which the copyright ...
TiDB 发布于 9个月前 阅读 1497 评论 7 点赞 2

浅析开源数据库MySQL架构

数据库是所有应用系统的核心,故保证数据库稳定、高效、安全地运行是所有企业日常工作的重中之重。数据库系统一旦出现问题无法提供服务,有可能导致整个系统都无法继续工作。所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的。下面就为大家介绍一下如何构建一个高可用的MySQL数据库系统。 做过DBA或者是运维的同学都应该知道,任何设备或服务,存在单点就会带来巨大风险,因为这台物理机一旦宕机或服务模块crash,若在短时间内无法找到替换的设备,势必会影响整个应用系统。因而如何保证不出现单点就是我们的重要工作,使用MySQL高可用方案可以很好地解决这个问题,一般有以下几种: 一、利用MySQL自身的Replication来实现高可用 MySQL自带的Replication就是我们常说的主从复制(AB复制),通过对主服务器做一个从机,在主服务器宕机的情况下快速地将业务切换到从机上,保证应用的正常使用。利用AB复制做高可用方案也分为几种不同的架构: 1、常规的MASTER---SLAVE解决方案 普通的MASTER---SLAVE是目前国内外大多数中小型公司最常用的一种架构方案,主要的好处就是简单、使用设备较少(成本较低)、维护方便。这种架构能解决单点的问题,而且还能在很大程度上...
illy安智 发布于 9个月前 阅读 2412 评论 5 点赞 1

MySQL 死锁与日志二三事

最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root cause 分析颇费周折。那实际业务当中咱们如何能快速的定位线上 MySQL 问题,修复异常呢?下文我会根据两个实际 case,分享下相关的经验与方法。 1、Case1:部分数据更新失败 某天渠道同学反馈某报表极个别渠道数据为 0,大部分渠道数据正常。这个数据是由一个统计程序每天凌晨例行更新的,按理来说,要么全部正常,要么全部失败,那会是什么原因导致极个别数据异常呢? 首先我们能想到的自然是根据统计任务日志来看了,但是看了统计程序打印的日志没有发现诸如 SQL update 失败的异常描述,那当时的数据库究竟发生了什么呢?在查看 MySQL-server 日志之前,习惯性的看了下数据库状态: SHOW ENGINE INNODB STATUS\G 恰好看到了凌晨这个 update 发生了死锁: ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2017-07-17 04:09:01 0x7f6de03c8700 *** (1) TRANSACTION: TRANSACTION 215208479, ACTIVE 0 sec fetching rows mysql tables in use 3, locked 3 LOCK WAIT 5 lo...
大数据之路 发布于 11个月前 阅读 8482 评论 9 点赞 19 打赏 1

数据库中间件 MyCAT 源码分析 —— SQL ON MongoDB

![wechat_mp](http://www.yunai.me/images/common/wechat_mp.jpeg) > 🙂🙂🙂关注**微信公众号**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 ------- - [1. 概述](#) - [2. 主流程](#) - [3. 查询操作](#) - [4. 插入操作](#) - [5. 彩蛋](#) ------- # 1. 概述 可能你在看到这个标题会小小的吃惊,MyCAT 能使用 MongoDB 做数据节点。是的,没错,确实可以。 吼吼吼,让我们开启这段神奇的“旅途”。 本文主要分成四部分: 1. 总体流程,让你有个整体的认识 2. 查询操作 3. 插入操作 4. 彩蛋,😈彩蛋,🙂彩蛋 建议你看过这两篇文章(_非必须_): 1. [《MyCAT 源码分析 —— 【单库单表】插入》](http://www.yunai.me/MyCAT/single-db-single-table-insert/?self) 2. [《MyCAT 源码分析 —— 【单库单表】查询》](http://www.yunai.me/MyCAT/single-db-single-table-select/?self) # 2....
芋道源码 发布于 11个月前 阅读 1919 评论 18 点赞 2

数据库中间件 MyCAT源码分析 —— 跨库两表Join

![wechat_mp](http://www.yunai.me/images/common/wechat_mp.jpeg) > 🙂🙂🙂关注**微信公众号**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 ------- - [1. 概述](#) - [2. 主流程](#) - [3. ShareJoin](#) - [3.1 JoinParser](#) - [3.2 ShareJoin.processSQL(...)](#) - [3.3 BatchSQLJob](#) - [3.4 ShareDBJoinHandler](#) - [3.5 ShareRowOutPutDataHandler](#) - [4. 彩蛋](#) ------- # 1. 概述 MyCAT 支持跨库表 Join,目前版本仅支持跨库**两**表 Join。虽然如此,已经能够满足我们大部分的业务场景。况且,Join 过多的表可能带来的性能问题也是很麻烦的。 本文主要分享: 1. 整体流程、调用顺序图 2. 核心代码的分析 前置阅读:[《MyCAT 源码分析 —— 【单库单表】查询》](http://www.yunai.me/MyCAT/single-db-single-table-select/?yunai)。 OK,Let's Go。 # 2. 主流程 当执行...
芋道源码 发布于 11个月前 阅读 1585 评论 1 点赞 3

如何理解并正确使用MySql索引

1、概述 索引是存储引擎用于快速查找记录的一种数据结构,通过合理的使用数据库索引可以大大提高系统的访问性能,接下来主要介绍在MySql数据库中索引类型,以及如何创建出更加合理且高效的索引技巧。 注:这里主要针对的是InnoDB存储引擎的B+Tree索引数据结构                        2、索引的优点 1、大大减轻了服务器需要扫描的数据量,从而提高了数据的检索速度 2、帮助服务器避免排序和临时表 3、可以将随机I/O变为顺序I/O 3、索引的创建 3.1、主键索引 ALTER TABLE 'table_name' ADD PRIMARY KEY 'index_name' ('column'); 3.2、唯一索引 ALTER TABLE 'table_name' ADD UNIQUE 'index_name' ('column'); 3.3、普通索引 ALTER TABLE 'table_name' ADD INDEX 'index_name' ('column'); 3.4、全文索引 ALTER TABLE 'table_name' ADD FULLTEXT 'index_name' ('column'); 3.5、组合索引 ALTER TABLE 'table_name' ADD INDEX 'index_name' ('column1', 'column2', ...); 4、B+Tree的索引规则 创建一个测试的用户表 DROP TABLE IF EXISTS user_test; CREATE TABLE user_test( id int AUTO_INCREMENT PRIMARY KEY, user_name varchar(30) NOT NULL, sex bit(...
FEINIK 发布于 11个月前 阅读 7001 评论 24 点赞 30 打赏 2

MySQL基于gtid特性与xtrabackup的数据恢复

通过备份文件新建从库,将binlog跑到指定的gtid位置,可以将数据恢复到指定的时间点。
o翡翠谷o 发布于 12个月前 阅读 1952 评论 2 点赞 2

对MySQL交换分区的实践

前言 在介绍交换分区之前,我们先了解一下 mysql 分区。 数据库的分区有两种:水平分区和垂直分区。而MySQL暂时不支持垂直分区,因此接下来说的都是水平分区。水平分区即:以行为单位对表进行分区。比如:按照时间分区,每一年一个分区等。 在MySQL中,分区是可以交换的,可以将一个分区表中的一个分区和一个普通表中的数据互换。   交换分区的实现 1、交换分区的语法 alter table pt exchange partition p with table nt; 解释: 将 分区表pt 的 分区p 和 一个普通表nt 中的数据 进行互换。 交换的前提条件: 普通表nt 不为临时表,且不是分区表。 表结构和分区表pt的结构一致。 普通表nt 没有外键引用。 普用表nt 若为非空。在MySQL5.6以及之前的版本,必须在分区的范围内;在MySQL5.7之后则可以不再其分区范围内,也依然会成功存入该分区中。 2、实验 交换分区 (1) 创建一个分区表,并插入数据 # 创建一个 分区表e CREATE TABLE e ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30) ) PARTITION BY RANGE (id) ( PARTITION p0 VALUES LESS THAN (50), PARTITION p1 VALUES LESS THAN (100), PARTITION p2 VALUES LES...
star_glm 发布于 12个月前 阅读 2051 评论 4 点赞 5

三篇文章了解 TiDB 技术内幕 —— 谈调度

任何一个复杂的系统,用户感知到的都只是冰山一角,数据库也不例外。 前两篇文章介绍了 TiKV、TiDB 的基本概念以及一些核心功能的实现原理,这两个组件一个负责 KV 存储,一个负责 SQL 引擎,都是大家看得见的东西。在这两个组件的后面,还有一个叫做 PD(Placement Driver)的组件,虽然不直接和业务接触,但是这个组件是整个集群的核心,负责全局元信息的存储以及 TiKV 集群负载均衡调度。 本篇文章介绍一下这个神秘的模块。这部分比较复杂,很多东西大家平时不会想到,也很少在其他文章中见到类似的东西的描述。我们还是按照前两篇的思路,先讲我们需要什么样的功能,再讲我们如何实现,大家带着需求去看实现,会更容易的理解我们做这些设计时背后的考量。 # 为什么要进行调度 先回忆一下第一篇文章提到的一些信息,TiKV 集群是 TiDB 数据库的分布式 KV 存储引擎,数据以 Region 为单位进行复制和管理,每个 Region 会有多个 Replica(副本),这些 Replica 会分布在不同的 TiKV 节点上,其中 Leader 负责读/写,Follower 负责同步 Leader 发来的 raft log。了解了这些信息后,请思考下面这些问题: * 如何保证同一个 Region 的多个 Replica 分布在不同的节点上?更进一...
TiDB 发布于 1年前 阅读 1138 评论 3 点赞 1

Mongodb高可用集群搭建

最近公司项目要求Mongodb集群且高可用,在查询了一系列文章,再结合项目实际情况,所以采用了这一套高可用集群方案
Crazy_Coder 发布于 1年前 阅读 2037 评论 5 点赞 7

实验:MySQL使用JDBC执行批处理性能测试

实验:MySQL使用JDBC执行批处理性能测试
IamOkay 发布于 1年前 阅读 2005 评论 10 点赞 6

记一次mysql性能优化过程

所谓mysql的优化,三分是配置的优化,七分是sql语句的优化,通过一些案例分析,希望给大家在工作中带来一些思路
OSC闲人 发布于 1年前 阅读 6600 评论 57 点赞 36 打赏 3

NoSQL介绍

对nosql出现背景、nosql类型做介绍,并解答nosql相关问题
你我他有个梦 发布于 1年前 阅读 1612 评论 1 点赞 4

Linux服务器安装Oracle服务端总结

通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端。本例中linux服务器系统为CentOS6.5.
梨加橙 发布于 1年前 阅读 3589 评论 27 点赞 4

【技术解密】SequoiaDB复制组选举原理说明

1.SequoiaDB介绍 SequoiaDB是国内一款自主研发的分布式文档型数据库。它与过去开发者所熟悉的关系型数据库不同,它的数据结构是BSON类型,一种与JSON结构非常相近的数据类型。 SequoiaDB与关系型数据库除了在数据类型上有比较明显的差异外,还原生支持分布式存储。用户在搭建一个能够应对海量数据以及包含高并发操作的系统时,不再需要像过去一样,在业务层面做复杂的分表分库工作,直接在定义数据表时,明确告诉数据库此表需要根据哪个字段以及何种规则进行分布式存储,数据分布式存储对于用户来说变得透明。用户可以更加专注以业务逻辑开发,而不是关注如何分表分库。 2.SequoiaDB总体架构介绍   图1:SequoiaDB 总体架构示意图 SequoiaDB整个集群中,主要角色构成是三个,协调节点,编目节点和数据节点。 1.1 协调节点 协调节点(英文称呼为Coord),是SequoiaDB的任务分发节点(一般用户成为Master节点),本身不存储任何数据,主要负责接收应用程序的访问请求。所以一般用户在与SequoiaDB打交道时,访问的都是协调节点,对于其他角色的节点,一般情况下是不建议用户去访问的。 在SequoiaDB老版本中,协调节点在数据库集群中是类似孤岛式部署的。怎么说呢,主要因为...
巨杉数据库 发布于 1年前 阅读 803 点赞 1

redis 主从配置

redis主从复制过程:  当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将 数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将 文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。如果master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave。master同步数据时是非阻塞式的,可以接收用户的读写请求。然而在slave端是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询。 可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化 拥有主从服务器的好处(从服务器是只读的,可以一主多从) 1.    主服务器进行读写时,会转移到从读,减轻服务器压力 2.    热备份 主从都可以设置密码,也可以密码不一致   进入/usr/data/redis/slave 创建 master  slave1  slave2 1.复制redis.conf到3个目录,修改端口 1000,2000,3000 ...
lyg945 发布于 2年前 阅读 5436 评论 20 点赞 12
顶部