开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

使用 Ansible 安装部署 TiDB

作为一个分布式系统,在多个节点分别配置安装服务会相当繁琐。Ansible 是基于 Python 的自动化运维工具,糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能,而且使用简单,仅需在管理工作站上安装 Ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端。选用自动化工具 Ansible 来批量的安装、配置、部署 TiDB 。本文介绍如何通过 Ansible 工具来批量安装,使整个过程简单化。
TiDB 发布于 2周前 阅读 289 评论 1 点赞 1

三篇文章了解 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 发布于 2周前 阅读 924 评论 3 点赞 1

Redis 字符串

Redis 字符串相关应用详解
拿客-三产 发布于 2周前 阅读 407

开源中国杭州源创会报名开始,剖析无人驾驶背后的数据库(PostgreSQL)。

趁着六月美景正好,OSC源创会带着自由、开放、分享的开源精神,也带着满满的干货主题,邀请杭州的各位来约。
源创会

7个原因告诉你为什么要选择ArangoDB数据库?

7个原因:为什么要选择ArangoDB-原生多模型数据库? 合并 多模型数据库能够适用于许多不同的用例。因此它能够最小化后台部件。这样有助于降低总拥有成本,增加灵活性,并整合您的整体技术堆栈需求。 简化性能扩展 应用程序都是一步步逐渐成熟。使用ArangoDB可以使架构中的不同组件便可以进行独立扩展。ArangoDB支持垂直和水平扩展来满足您不断增加的需求。如果您对性能的需求降低,您也可以优化后台系统,这样还可以节省硬件消耗和运营成本。 降低操作复杂度 Polyglot Persistence 的目的是为项目选择最适合的工具。只安装单一模型的数据库软件会让您在运行过程中遇到很多挑战。集成这些解决方案本身就是一项复杂的任务,但是创建一个具有不同数据库之间一致数据的大型内聚系统,并且包含容错机制是无法实现的。在数据方面,Polyglot Persistence 更多的是为某一项工作配置其所需的合理的数据模型。原生多模型数据库支持多种数据(合理的数据与数据模型的配对)并且不含Polyglot Persistence 的复杂性。除此之外,ArangoDB还能够确保ACID事务处理的一致性,以及有效提升您的应用软件的容错率。 强大的数据一致性 如果在您的应用程序内没有更高级别的事务处理功能,那么它就...
GermanWifi 发布于 3周前 阅读 86

数据库中间件MyCAT源码分析:【单库单表】查询

> 原文地址:[http://www.yunai.me/MyCAT/single-db-single-table-select/](http://www.yunai.me/MyCAT/single-db-single-table-select/) > `MyCat-Server` **带注释代码**地址 :[https://github.com/YunaiV/Mycat-Server](https://github.com/YunaiV/Mycat-Server) > **😈本系列每 1-2 周更新一篇,欢迎订阅、关注、收藏 公众号** ![wechat_mp](http://www.yunai.me/images/common/wechat_mp.jpeg) ------- - [1. 概述](#) - [2. 接收请求,解析 SQL](#) - [3. 获得路由结果](#) - [4. 获得 MySQL 连接,执行 SQL](#) - [5. 响应执行 SQL 结果](#) - [6. 其他 :更新 / 删除](#) # 1. 概述 > 内容形态以 顺序图 + 核心代码 为主。 > 如果有地方表述不错误或者不清晰,欢迎留言。 > 对于内容形态,非常纠结,如果有建议,特别特别特别欢迎您提出。 > 微信号:wangwenbin-server。 本文讲解 【单库单表】查询 所涉及到的代码。 😂内容和 [《MyCAT 源码分析 —— 【单库单表】插入》](http://www.yunai.me/Mycat/single-db-single-table-insert/) 超级相似,一方面本身流程基本相同,另外一方面文章结构没拆分好。我们使用 🚀 标记差异的逻辑。 交互如下图: ![单库单...
芋艿V 发布于 3周前 阅读 363

数据库中间件MyCAT源码分析:【单库单表】插入

> 原文地址:[http://www.yunai.me/MyCAT/single-db-single-table-insert/](http://www.yunai.me/MyCAT/single-db-single-table-insert/) > `MyCat-Server` **带注释代码**地址 :[https://github.com/YunaiV/Mycat-Server](https://github.com/YunaiV/Mycat-Server) > **😈本系列每 1-2 周更新一篇,欢迎订阅、关注、收藏 公众号** ![wechat_mp](http://www.yunai.me/images/common/wechat_mp.jpeg) ------- - [1. 概述](#) - [2. 接收请求,解析 SQL](#) - [3. 获得路由结果](#) - [4. 获得 MySQL 连接,执行 SQL](#) - [5. 响应执行 SQL 结果](#) # 1. 概述 > 内容形态以 顺序图 + 核心代码 为主。 > 如果有地方表述不错误或者不清晰,欢迎留言。 > 对于内容形态,非常纠结,如果有建议,特别特别特别欢迎您提出。 > 微信号:wangwenbin-server。 本文讲解 【单库单表】插入 所涉及到的代码。交互如下图: ![单库单表插入简图](http://www.yunai.me/images/MyCAT/2017_05_29/05.png) 整个过程,MyCAT Server 流程如下: 1. 接收 MySQL Client 请求,解析 SQL。 2. 获得路由结果,进行路由。 3. 获得 MySQL 连接,执行 SQL。 4. 响应执行结果,发送结果给 MySQL Client...
芋艿V 发布于 4周前 阅读 270

为什么要选择“多模型”数据库?其灵活性体现在哪里?

ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。基于其本地集成多模型特性,您可以搭建高性能程序,并且这三种数据模型均支持水平扩展。 许多数据库公司自称“多模型”,但是只是基于key/value键/值或者document文档存储graph图数据,与原生多模型数据库存在着重要的区别。以下将对ArangoDB本地集成多模型数据库的具体细节和一系列核心优势进行介绍: 什么是原生多模型数据库? ArangoDB原生多模型数据库,采用了试用于所有数据模型的统一内核和统一数据库查询语言。因此,用户可以在单次查询过程中混合使用多种模型。ArangoDB在执行查询过程时,无需在不同数据模型间相互“切换”,也不需要执行数据传输过程。与“layer-approaches”相比,ArangoDB在速度和性能方面都具有极大优势,因此适用于高性能领域需求。 ArangoDB是如何发挥其多模型数据库功能的? key/value 键/值 每个document文档里均有唯一的键和与其对应的值(键/值对)。如果您在document文件中存储一个值,那么ArangoDB可用作经典的、高度可扩展的键/值对存储,例如用户在电子...
GermanWifi 发布于 4周前 阅读 34

三篇文章了解 TiDB 技术内幕 —— 说计算

[上一篇][1]介绍了 TiDB 如何存储数据,也就是 TiKV 的一些基本概念。本篇将介绍 TiDB 如何利用底层的 KV 存储,将关系模型映射为 Key-Value 模型,以及如何进行 SQL 计算。 ## 关系模型到 Key-Value 模型的映射 在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变为如何在 KV 结构上保存 Table 以及如何在 KV 结构上运行 SQL 语句。 假设我们有这样一个表的定义: ```SQL CREATE TABLE User { ID int, Name varchar(20), Role varchar(20), Age int, PRIMARY KEY (ID), Key idxAge (age) }; ``` SQL 和 KV 结构之间存在巨大的区别,那么如何能够方便高效地进行映射,就成为一个很重要的问题。一个好的映射方案必须有利于对数据操作的需求。那么我们先看一下对数据的操作有哪些需求,分别有哪些特点。 对于一个 Table 来说,需要存储的数据包括三部分: 1. 表的元信息 2. Table 中的 Row 3. 索引数据 表的元信息我们暂时不讨论,会有专门的章节来介绍。 对于 Row,可以选择行存或者列存,这两种各有优缺点。TiDB 面向的首要目标是 OLTP 业务,这类业务需要支持快速地读取、保存、修改、删除一行数据,所以采用行存是比较合适的。 对于 Index,TiDB 不止需要支持...
TiDB 发布于 4周前 阅读 227 评论 3

通过Atlas实现MySQL读写分离

最近公司项目要求MySQL高可用,加上以前公司听过QiHoo360的Atlas,所以就尝试搭建了一个MySQL读写分离,并且高可用的。
Crazy_Coder 发布于 1个月前 阅读 992 评论 3 点赞 1

MongoDB 3.4 副本集 搭建 + 备份恢复(超详细)

# MongoDB 3.4 副本集 搭建 + 备份恢复 mongodb 3.4 数据下载地址:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.4.tgz # 安装准备 (三台机器) ``` 192.168.0.188:27017(primary) 主节点 port=27017 #端口 dbpath= /usr/src/node1/data#数据文件存放目录 logpath= /usr/src/node1/mongodb.log #日志文件存放目录 logappend=true #使用追加的方式写日志 fork=true #以守护程序的方式启用,即在后台运行 maxConns=500 #最大同时连接数 bind_ip=0.0.0.0 #只允许通过本机访问 noauth=true #不启用验证 #auth=true #启用验证 replSet=test # 副本集名称 oplogSize=200 # 200M keyFile = /usr/src/mongodb.key 192.168.0.188:27018(secondary) 从节点 port=27018 #端口 dbpath= /usr/src/node2/data#数据文件存放目录 logpath= /usr/src/node2/mongodb.log #日志文件存放目录 logappend=true #使用追加的方式写日志 fork=true #以守护程序的方式启用,即在后台运行 maxConns=500 #最大同时连接数 bind_ip=0.0.0.0 #只允许通过本机访问 #noauth=true #不启用验证 #auth=true #启用验证 replSet=test # 副本集名称 oplogSize=200 # 200M keyFile = /usr/sr...
FenG_Vnc 发布于 1个月前 阅读 431 评论 1

Mybatis 调用oracle存储过程的方法介绍。

自己通过网上的资料整合跑通的代码,希望能帮助到大家。
小白-白白 发布于 1个月前 阅读 440 评论 2 点赞 1

【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中

【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中
小麦苗 发布于 1个月前 阅读 224

MYSQL坑爹的UPDATE子查询,UPDATE时避免使用子查询

近日写mysql储存过程的时候,有个SQL执行不动: UPDATE t_csi_comment SET is_valid = 0 WHERE comment_id IN ( SELECT comment_id FROM ( SELECT * FROM t_csi_comment WHERE DATE_FORMAT(comment_time, '%Y%m%d') BETWEEN 20170425 AND 20170528 ORDER BY comment_id DESC ) a GROUP BY openid, dlr_code HAVING count(1) > 2 ); 很奇怪,按道理这条SQL的检索量小于10W,应该怎么慢也不会几分钟不动的地步。 单独执行子查询: SELECT comment_id FROM ( SELECT * FROM t_csi_comment WHERE DATE_FORMAT(comment_time, '%Y%m%d') BETWEEN 20170425 AND 20170528 ORDER BY comment_id DESC ) a GROUP BY openid, dlr_code HAVING count(1) > 2; 结果比想象中的快,1秒都不到,EXPLAIN后检索量不到4W行。我就郁闷了。 EXPLANIN第一条update语句: 注意:select_type 里出现了 DEPENDENT SUBQUERY。 这意味着什么?——子查询取决于外面的查询,Mysql 先执行外查询,内查询根据这个查询结果(如执行计划里所述,38196 rows)的每一条记录组成新的查询语句后执行。多重子查询情...
伯洛芒果汁。 发布于 2个月前 阅读 457 评论 2 点赞 1

深度认识 Sharding-JDBC:做最轻量级的数据库中间层

Sharding-JDBC 采用在 JDBC 协议层扩展分库分表,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美地完成最核心的事情。
编辑部的故事 发布于 2个月前 阅读 2946 评论 10 点赞 4

阿里云RDS for MySQL数据库为存储Emoji表情 将编码方式改为utf8mb4

起因 最近在公司的APP项目中出现了,手机移动端输入法输入Emoji表情和火星文等特殊字符时,后台接口存入数据库报错的问题。错误为如下形式 Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1   分析 网上查了一下问题是移动端的emoji表情为四个字节,而MySQL的utf8编码方式的数据为三个字节。将MySQL的utf8编码改为utf8mb4编码方式就可以进行存储了。 这里需要注意MySQL必须是5.5.3以上版本的,我们公司使用的是5.6版本所以没有问题可以改。 其实移动端项目一开始就应该把数据库设置成utf8mb4编码方式的,没必要都开始运营了才改。无奈之前没有移动端开发的经验犯了这种低级错误。 网上很多修改的方法,但是我们的项目使用的是阿里云的RDS数据库,我记录一下变更的过程方便同样情况的朋友解决问题。   过程 以下过程主要参考了阿里云官方帮助文档《RDS MySQL使用utf8mb4字符集存储emoji表情》   1、查看是否支持utf8mb4     在数据库client终端查看数据库是否支持utf8mb4编码方式 SHOW CHAR SET WHERE Charset LIKE "%utf8%";   2、修改参数 在RDS控制台-参数配置功能中修改character_set...
啊哼哼 发布于 2个月前 阅读 166 评论 1

只会增删查改?你还缺个数据库管理工具!

任何web软件和应用程序都需要强大的数据库管理工具,因此开发者选择一款合适的数据库管理工具尤为重要。本文列出了几款好用的数据库管理工具(有些并非开源或免费),以供开发者们参考选择: 1、MySQL管理工具 phpMyAdmin phpMyAdmin是一个非常受欢迎的基于web的MySQL数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等。 2、数据库管理工具 Navicat Lite  Navicat是一套快速、可靠并价格相宜的资料库管理工具,大可使用来简化资料库的管理及降低系统管理成本。它的设计符合资 料库管理员、开发人员及中小企业的需求。 Navicat是以直觉化的使用者图形介面所而建的,让你可以以安全且简单的方式建立、组织、存取并共用资讯。Navicat 支持的数据库包括 MySQL、Oracle、SQLite、PostgreSQL 和 SQL Server 等。 Navicat 提供商业版 Navicat Premium 和 免费的版本 Navicat Lite 。但目前 Navicat 已不再提供 LITE 版本。 缺点: 免费版本已停止更新。 3、数据库管理工具 DBeaver DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼...
编辑部的故事 发布于 2个月前 阅读 5518 评论 38 点赞 7

使用batch-import工具向neo4j中导入海量数据

在开发neo4j的过程中,经常会有同学问如何向neo4j中导入大量的历史数据,而这些数据一般都会存在于关系型数据库中,现在本人就根据自己的导入经历,把导入的过程和一些挖过的坑分享给大家,以便后面的同学少走弯路,废话不多说,直接上干货。 1、batch-import原始项目地址:https://github.com/jexp/batch-import     这个工具是neo4j的作者之一Michael Hunger所编写,是在neo4j自带批量导入工具基础之上做的进一步优化,但是它在导入.gz压缩文件时,会出现关系无法导入的情况,所以如果要使用.gz压缩包进行导入,请使用我修改过的版本:https://github.com/mo9527/batch-import 2、环境准备     jdk:7以上     内存:8G以上,导入数据多的话会非常消耗内存,我自己导入的是将近1.5亿节点,3亿关系,用的是32G内存 3、导入步骤     a)从github上clone下代码,并使用maven进行打包,打完包后的jar文件,与项目本身的依赖jar一起放到lib文件夹下,batch.properties文件和执行导入的脚本放在lib同级目录下,最后的目录结构如下图:          ps:file文件夹是我自己将要导入的csv文件和.gz压缩包。     b)组装csv文件         说起这一步,可能需要你们...
T_SevenS 发布于 2个月前 阅读 383

Oracle用户密码过期和用户被锁解决方法

今天在工作中碰到的问题及解决办法!
祁厅长 发布于 2个月前 阅读 267 评论 1

Mysql5.7忘记root密码及mysql5.7修改root密码的方法

关闭正在运行的 MySQL : 1 [root@www.woai.it ~]# service mysql stop 运行 1 [root@www.woai.it ~]# mysqld_safe --skip-grant-tables & 为了安全可以这样禁止远程连接: 1 [root@www.woai.it ~]# mysqld_safe --skip-grant-tables --skip-networking & 使用mysql连接server: 1 [root@www.woai.it ~]# mysql -p 更改密码: 1 mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost'; *特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了 而是将加密后的用户密码存储于authentication_string字段 1 2 mysql> flush privileges; mysql> quit; 修改完毕。重启 1 [root@localhost ~]# service mysql restart 然后mysql就可以连接了 但此时操作似乎功能不完全,还要alter user… 1 mysql> alter user 'root'@'localhost' identified by '123'; 这样也可以: 1 mysql> set password for 'root'@'localhost'=password('123'); 重点给大家介绍下mysql 5.7 root密码修改 MySQL管理者密码设置或修改: 依据官方说明5.6以后版本,第一次启动时会在root目录下生产一个随机密码,文件名.mysql_...
豆花饭烧土豆 发布于 2个月前 阅读 460 评论 1

oracle 基于数据挖掘的不完全恢复

基于时间点,scn的不完全恢复
wzl_up 发布于 2个月前 阅读 209

开源中国杭州源创会报名开始,剖析无人驾驶背后的数据库(PostgreSQL)。

趁着六月美景正好,OSC源创会带着自由、开放、分享的开源精神,也带着满满的干货主题,邀请杭州的各位来约。
源创会

mysql分区管理 - hash分区

hash分区的目的是将数据按照某列进行hash计算后更加均匀的分散到各个分区,相比,range和list分区来说,hash分区不需要明确指定一个给定的列值或者列值集合 应该在保存在哪个分区,mysql会自动按照hash计算后完成这些工作,我们只需要基于将要进行hash的列值指定一个列或者表达式,以及可选的指定要分区的表总的分区数量。      下面我们举一个例子来说,hash分区如何创建。首先我们创建如下的表格:hash_partition_tbl,并插入几条记录到表中,如下所示:              我们也同时看一下,对应的表空间文件是如何分布的(注意,我们已经设置了innodb_file_per_table=1,即每个表单独一个ibd文件),我们在对应的datadir目录下可以看到:            由于我们是分成4个hash区,因此可以看到四个表空间文件,分别是hash_partition_tab#p#pi.ibd,i=0,1,2,3。      这里的hash分区的确定按照如下规则:      mod(YEAR(‘2012-05-01’),4) = mod (2012,4) = 0, 在分区p0;      mod(YEAR(‘2016-05-01’),4) = mod (2016,4) = 0, 在分区p0;      mod(YEAR(‘2010-05-01’),4) = mod (2010,4) = 2, 在分区p2;      mod(...
Idiot_s_Sky 发布于 3年前 阅读 1812

Oracle 11g RAC启动与关闭记录

Startup 1. Ensure that you are logged in as the root Linux/ UNIX user.         If you are not connected as root OS user, you must switch to the oracle OS user     su - root     2. Start (startup) the Oracle cluster stack   su - root cd $CRS_HOME/bin # ./crsctl start crs              (must be run on each node)     3. Startup (start) all Oracle ASM instances on all nodes. (If you are not using the ASM you must skip this step.)   su - oracle  (you must be logged as oracle)   To shut down an Oracle ASM instance, enter the following command, where node_name is the name of the node where the Oracle ASM instance is running: $ oracle_home/bin/srvctl start asm -n node_name     4. Startup (start) all Oracle RAC instances on all nodes.   To shut down all Oracle RAC instances for a database, enter the following command, where db_name is the name of the database: $ srvctl start database -d db_name   (srvctl  from ORACLE_HOME)     (this command is s...
闫锋 发布于 4年前 阅读 2342

mysql卸载后重装出现1045错误完美解决方法

配置wamp环境时,简单三步完美解决mysql卸载后重装出现1045错误
码上有春天 发布于 3年前 阅读 1833 点赞 1

mysql快速翻倍插入数据

mysql快速翻倍插入数据
鬼方赤命 发布于 2年前 阅读 14

MyBatis-Spring集成的理解

首先我自己简单介绍一下mybatis mybatis是在配置中写SQL,用对象映射 mybatis看做是是数据持久层的框架,它主要是对数据库和对象的关系进行操作 再说下: mybatis和hibernate的最大区别在于,自己写SQL,而hibernate自动映射SQL,mybatis更加灵活,更适用于二次开发,如果要涉及较多的数据库结构的修改的话,hibernate更加有优势些 现在开始集成MyBatis-Spring (1)要使用MyBatis-Spring的模块的,首先要下载mybatis-spring.jar包,导入Mybatis相关的包。并且在Maven中pom.xml加入加入依赖关系 (2)在spring框架的应用上下文配置文件applicationContext.xml中定义SqlSessionFactory和至少一个数据映射类 如下在MyBatis-Spring中,SqlSessionFactorBean 用于创建SqlSessionFactory 这是我的项目配置:  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">                  <property name="dataSource" ref="dataSource"/>         <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>         <!-- mapper和resultmap配置路径 -->         <property name="mapperLocations">      ...
EDIAGD 发布于 4年前 阅读 1149 评论 2

Mariadb galera cluster 安装配置

  MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。 MariaDB Galera Cluster 介绍 MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。 主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 用户可以直接连接集群,使用感受上与MySQL完全一致 优势: 因为是多主,所以不存在Slavelag(延迟) 不存在丢失事务的情况 同时具有读和写的扩展能力 更小的客户端延迟 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的 技术: Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。 Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图:  当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被 write-set 收集起来,并且将w...
litterMo 发布于 11个月前 阅读 126

盲SQL注入

盲SQL(结构化查询语言)注射是一种类型的SQL注入攻击,询问数据库真或假的问题,并确定基于该应用程序的响应的答复。当web应用程序被配置为显示一般错误消息,但并没有缓解是易受SQL注入代码此攻击经常被使用。 当攻击者利用SQL注入,有时Web应用程序从数据库中抱怨SQL查询的语法不正确显示错误消息。盲SQL注入几乎是相同的正常SQL注入,唯一的区别是将数据从数据库中检索的方式。当数据库不输出数据到网页中,攻击者被迫通过询问数据库一系列真或假的问题窃取数据。这使得利用SQL注入漏洞比较困难,但并非不可能。。
紅顏為君笑 发布于 7个月前 阅读 11

MySQL Group Replication(简称MGR)

MySQL 5.7.17版本MySQL Group Replication(简称MGR),MGR准确来说是MySQL官方推出的高可用解决方案,基于原生复制技术,并以插件的方式提供。 ![输入图片说明](https://static.oschina.net/uploads/img/201703/09145415_GJY2.jpg "在这里输入图片标题") ``` MGR的限制 仅支持InnoDB表,并且每张表一定要有一个主键,用于做write set的冲突检测; 必须打开GTID特性,二进制日志格式必须设置为ROW,用于选主与write set COMMIT可能会导致失败,类似于快照事务隔离级别的失败场景 目前一个MGR集群最多支持9个节点 不支持外键于save point特性,无法做全局间的约束检测与部分部分回滚 二进制日志不支持binlog event checksum ```
庆沉 发布于 3个月前 阅读 16

PLSQL Developer连接远程Oracle数据库

PLSQL Developer连接远程Oracle数据库
张欢19933 发布于 1年前 阅读 106 点赞 1

无需安装配置,多操作系统支持数据库及性能测试

iBoxDB 的性能简介及相关连接
iBoxDB 发布于 4年前 阅读 1548 评论 1

OGG ORACLE TO MYSQL配置方法

ORACLE GOLDEN GATE 配置 ORACLE 到 MYSQL 步骤和方法
boydreaming 发布于 1年前 阅读 530 点赞 1

MySQL在Windows Server上安装多个实例的方法

在Windows Server上使用MySQL Installer是不能够安装的。所以是需要一些技巧的。 Step 1:正常安装配置MySQL,默认的服务名为MySQL,假如MySQL安装目录为 D:\Program Files\MySQL_1\MySQL Server 5.5。基本配置如下: [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 #Path to installation directory. All paths are usually resolved relative to this. basedir="D:/Program Files/MySQL_1/MySQL Server 5.5/" #Path to the database root datadir="D:/Program Files/MySQL_1/MySQL Server 5.5/Data/"   Step 2:在控制面板中停掉MySQL服务 Step 3:复制D:\Program Files\MySQL_1 为D:\Program Files\MySQL_2。并把my.ini中的相应配置改为: [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3307 #Path to installation directory. All paths are usually resolved relative to this. basedir="D:/Program Files/MySQL_2/MySQL Server 5.5/" #Path to the database root datadir="D:/Program Files/MySQL_2/MySQL Server 5.5/Data/" Step 4:在cmd窗口中打入 D:\Program Files\MySQL_2\MySQL Server 5.5\bin>mysqld install M...
朽木Sweayer 发布于 4个月前 阅读 342 评论 2 点赞 1

Nodejs:postgresql随机插入十万条数据测试

CPU:cpu family : 6 model : 42 model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz 系统信息:Linux sec 3.5.0-45-generic #68~precise1-Ubuntu SMP Wed Dec 4 16:18:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux node postgresql package:https://github.com/brianc/node-postgres db/index.js部分: var pg = require('pg'); var conString = "postgres://test:test@localhost/pgs"; exports.pg_exec = function(prepared_obj,cb){ pg.connect(conString, function(err, client, done) { if(err) { cb(err,{"rowCount":0}) return; } client.query(prepared_obj, function(err, result) { done(); cb(err,result); }); }); } index.js部分  /** * Created by ty4z2008 on 14-1-19. */ var pg_exec = require("./db").pg_exec; (function(){ console.log('start pg_insert'); var rand_ship = new Array('韵达','EMS','顺丰','圆通','申通','韵达','UPS','中通','平邮'), rand_alp=new Array('A','B','C','D','E','F','G','H','I','J','K','L','M',...
廖君 发布于 3年前 阅读 2127

Oracle数据库定时备份并删除旧文件

Oracle数据库定时备份并删除旧文件
pmos 发布于 1年前 阅读 467 点赞 1

用mycat做读写分离:基于 MySQL主从复制

本文基于MySQL主从复制利用mycat实现读写分离。 mycat在应用当中的作用可以看下图: mycat可以让程序员只需要关心业务代码的编写,而不用担心后端数据库集群的负载均衡,读写分离,分库分表的数据分片逻辑的编写,只要直接连接mycat就可以了。 首先我们准备一台干净的centos机器,安装好jdk 解压mycat的安装包到/user/local/下 设置mycat的环境变量 vi /etc/profile 使配置文件立即生效 source /etc/profile 修改配置文件 先配置server.xml <?xml version="1.0" encoding="UTF-8"?> <!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permi...
张欢19933 发布于 1个月前 阅读 11

mybatis oracle分页sql

主要是 对Oracle 分页的sql
xiaoyang0878 发布于 3年前 阅读 6121

mysql统计每天的订单数 发布量

select from_unixtime(regtime,'%Y%m%d') as days,count(user_id) as count  from bbj_user group by days //格式化的话 select date_format(from_unixtime(regtime),"%Y-%m-%d") as days,count(user_id) as count  from bbj_user group by days from bbj_user group by days 然后查询结果如下 days                count 20141116        24 20141117        3 很简单的就实现了一个统计需求
范思哲思考者 发布于 2年前 阅读 2233

MySQL按照按照某字段截取部分值后GROUP BY

可能用到的场景: 消费表: 有时间字段201611201230是年月日时分,但是统计是可能要按照年或者月来查询,那就可以使用substr来完成 SELECT SUM(a.ss) FROM( SELECT substr(TALLY_TIME,1,4) tt,AMOUNT_PAID ss,FIRST_CLASSIFY_NAME FROM tally) a GROUP BY a.tt 这样就可以截取时间到年.从而算出每一年的统计数据
竹竿先生 发布于 7个月前 阅读 18

PostgreSQL 9.5归档

对WAL日志的归档给管理员提供了一种数据库备份策略,这种备份策略组合了文件系统备份与WAL文件的备份。在恢复时,首先恢复数据文件,然后重放WAL日志到指定的时间点。应用这种备份恢复策略,在开始的时候并不需要一个非常完美的一致性备份。任何备份内部的不一致都会被日志的重放动作修改正确。因此,我们不需要文件系统快照的功能,只需要tar或者类似的归档工具。
人比黄花瘦太多 发布于 4个月前 阅读 81

SQL Server T-SQL高级查询

高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 --select select * from student;   --all 查询所有 select all sex from student;   --distinct 过滤重复 select distinct sex from student;   --count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student;   --top 取前N条记录 select top 3 * from student;   --alias column name 列重命名 select id as 编号, name '名称', sex 性别 from student;   --alias table name 表重命名 select id, name, s.id, s.name from student s;   --column 列运算 select (age + id) col from student; select s.name + '-' + c.name from classes c, student s where s.cid = c.id;   --where 条件 select * from student where id = 2; select * from student where id > 7; select * from student where id < 3; select * from student where id <> 3; select * from student where id >= 3; select * from student where id <= 5; select *...
百世经纶一页书梵天 发布于 3小时前 阅读 3

MySQL 权限管理简单篇

创建用户   CREATE USER 用户名 IDENTIFIED BY 密码 示例:   CREATE USER  kaigexuetang  IDENTIFIED BY ‘kaige123.com’; 删除用户 注意删除用户需要取消权限   DROP USER [] 示例:   DROP USER kaigexuetang; 赋予用户权限   GRANT [功能] ON 库.表 TO 用户 示例:   GRANT SELECT ON kaige.user TO kaigexuetang; 收回权限   REVOKE [功能] ON 库.表 FROM 用户 示例:   REVOKE SELECT ON kaige.user FROM kaigexuetang; 修改用户密码   SET PASSWORD FOR kaigexuetang=PASSWORD('kaige123.com'); 显示所有权限   SHOW GRANTS FOR kaigexuetang;
凯哥学堂 发布于 2天前 阅读 120

Linux下MySQL5.7.18二进制包安装(无默认配置文件my_default.cnf)

最新在学习MySQL,纯新手,对Linux了解的也不多,因为是下载的最新版的MySQL(MySQL5.7.18)二进制包,CentOS7.2下测试安装,方便以后折腾。 大概步骤如下,安装删除反复折腾了几遍,按照以下步骤,应该没啥问题了。 也没有想象中的复杂,大部分步骤都是参考网上的,照做就是了,出错的话,多尝试,多查资料。   操作系统版本     创建mysql组和用户       下载最新版的MySQL 5.7.18二进制包,上传至服务器的usr/local目录下   解压MySQL二进制包   如下是解压之后的,并且重命名文件夹之后的文件信息   更改所属的组和用户   解压之后的MySQL文件包含的内容   查看support-files文件夹的内容,发现并没有my_default.cnf默认的配置文件,如果没有默认的配置文件,需要手动创建一个my_default.cnf配置文件   从网上找了一个配置文件,如下,上传到supp-files文件夹中,当然这个配置文件可以根据需要自行修改,   20170505补充:这一步应该不对,如果没有默认配置文件,似乎也能正常启动。后面再琢磨琢磨。 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html # *** DO NOT...
今天来找bug 发布于 3周前 阅读 176

ORA-01653 无法在表空间扩展的解决办法

    ORA-01653 无法在表空间扩展的解决办法,可通过增加表空间大小或给表空间增加数据文件,一个数据库对应一个表空间,一个表空间可拥有多个数据文件。     查询Oracle的表空间使用情况     一、查询表空间使用情况 ----查询表空间使用情况--- SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使用比", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 4 DESC;     二...
HarleyZhuge 发布于 3天前 阅读 27

开源中国杭州源创会报名开始,剖析无人驾驶背后的数据库(PostgreSQL)。

趁着六月美景正好,OSC源创会带着自由、开放、分享的开源精神,也带着满满的干货主题,邀请杭州的各位来约。
源创会

准确记录记录插入数据库的时间

timestamp的值在显示时会随系统当前时区修改
阿信sxq 发布于 3天前 阅读 27

mysql 5.7 配置多实例 — 独立配置文件方式

各实例使用独立配置文件
big_cat 发布于 3个月前 阅读 230 点赞 1

一句话记录--ORA-28001: the password has expired

### ORA-28001: the password has expired 项目测试库连接的时候突然提示了后台错误:``` ORA-28001: the password has expired ```。查询了下数据库相关信息,版本为 Oracle 11g,该异常为数据库的安全机制限制,此处异常是提示用户密码过期,需要及时更新。 于是使用 DBA 用户登录数据库,查看系统连接用户使用的配置文件信息,执行语句: ``` SELECT profile FROM dba_users WHERE username = 'XXX'; ``` 数据库返回结果为 DEFAULT,代表我们数据库使用的配置文件为默认配置。 查看该配置下的密码有效期设置,执行语句: ``` SELECT limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME' ``` 数据库返回结果为 180,代表我们数据库中用户默认的密码有效期为 180 天,如果超过该时限就会提示异常。此时,需要修改用户状态来处理该用户异常,执行语句: ``` ALTER USER XXX IDENTIFIED BY XXX; ``` 执行成功后,该用户即可恢复正常登录。 注:如果感觉有密码限制时间比较麻烦,且数据库无需相关安全限制的话,可以取消该设定,执行语句: ``` ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; ``` 执行成功后即可,再...
前世疯狂 发布于 4天前 阅读 21 点赞 1

Mybatis时间类自动转换为时间戳的问题

类型被自动强转的问题-mybatis
邵左 发布于 2个月前 阅读 96

Redis 字符串

Redis 字符串相关应用详解
拿客-三产 发布于 2周前 阅读 407

三篇文章了解 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 发布于 2周前 阅读 924 评论 3 点赞 1

深度认识 Sharding-JDBC:做最轻量级的数据库中间层

Sharding-JDBC 采用在 JDBC 协议层扩展分库分表,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美地完成最核心的事情。
编辑部的故事 发布于 2个月前 阅读 2946 评论 10 点赞 4

Mongodb高可用集群搭建

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

Mysql ODBC驱动安装出现。error 1918……不能加载安装或转换器库……

1、打开odbc驱动下载地址下载驱动安装文件。 下载页面。选择win32版本 https://dev.mysql.com/downloads/connector/odbc/ msi安装包下载地址: https://dev.mysql.com/get/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.8-win32.msi 2、安装过程出现。     错误1918……不能加载安装或转换器库……。 因为mysql odbc是通过vs编译的。所以需要安装微软可再发行组件包。 官方解释:If you get the following error message during the installation, it means you do not have the required Microsoft Visual C++ 2013 Redistributable Package installed. See the discussion here for details. Install the package before you clickRetry and continue. 3、安装Microsoft Visual C++ 2013 可再发行组件包 (x86)。 下载地址:http://www.paopaoche.net/soft/53501.html 4、安装vcredist_x86.exe后。再次安装mysql odbc驱动即可。    本次安装环境: windows xp mysql odbc 5.3  ...
m_lm 发布于 2周前 阅读 38

Centos6.5下tar包编译安装并配置mysql-5.7.17

1、由于在线安装受制于网络环境,所以选择tar包编译安装。       首先去mysql镜像站下载mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 2、上传到centos 3、检查你所用的Linux下有没有安装过mysql,没有卸载干净 rpm -qa|grep -i mysql 如果存在,则需要先卸载掉,不然会出现覆盖错误。 yum remove mysql mysql-server mysql-libs mysql-server; find / -name mysql 将找到的相关东西delete掉; rpm -qa|grep mysql(查询出来的东东yum remove掉) 4、创建mysql的用户组/用户, data目录及其用户目录 userdel mysql # 删除用户 groupdel mysql # 删除用户组名 mkdir /usr/local/mysql # mysql的默认安装路径,建议不要更换,如果更换后续需要更新配置 mkdir /usr/local/mysql/data # 在mysql文件夹下创建文件夹data groupadd mysql # 创建一个名为mysql的用户组 useradd -g mysql -d /usr/local/mysql mysql # 在用户组下创建用户 5、解压缩并转移 # ta...
Leons 发布于 2个月前 阅读 201

使用batch-import工具向neo4j中导入海量数据

在开发neo4j的过程中,经常会有同学问如何向neo4j中导入大量的历史数据,而这些数据一般都会存在于关系型数据库中,现在本人就根据自己的导入经历,把导入的过程和一些挖过的坑分享给大家,以便后面的同学少走弯路,废话不多说,直接上干货。 1、batch-import原始项目地址:https://github.com/jexp/batch-import     这个工具是neo4j的作者之一Michael Hunger所编写,是在neo4j自带批量导入工具基础之上做的进一步优化,但是它在导入.gz压缩文件时,会出现关系无法导入的情况,所以如果要使用.gz压缩包进行导入,请使用我修改过的版本:https://github.com/mo9527/batch-import 2、环境准备     jdk:7以上     内存:8G以上,导入数据多的话会非常消耗内存,我自己导入的是将近1.5亿节点,3亿关系,用的是32G内存 3、导入步骤     a)从github上clone下代码,并使用maven进行打包,打完包后的jar文件,与项目本身的依赖jar一起放到lib文件夹下,batch.properties文件和执行导入的脚本放在lib同级目录下,最后的目录结构如下图:          ps:file文件夹是我自己将要导入的csv文件和.gz压缩包。     b)组装csv文件         说起这一步,可能需要你们...
T_SevenS 发布于 2个月前 阅读 383

SQL 解决从分组数据中总是挑选第一条数据的问题

【问题】 在数据库的查询中,记录被分为多个组,每个组中仍然有多条符合条件的记录,而仅需每组中的第一条记录组成新的临时数据表和其他查询结合使用,原来的语句是: select mid,addr,ts,sum(house) from a group by mid,addr order by mid desc mid是唯一标识客户的id,addr是客户住宅所在城市可能存在多个,house是该城市客户拥有的住宅数,计算时需要将同客户不同城市的记录合并计算,将house字段累加,并输出mid对应的客户最新购置的房产的地址,其中ts是他购买房产最新的时间,最终得到客户的总住宅总数。 【解决】 WITH summary AS ( SELECT h.mid h.addr, ROW_NUMBER() OVER(PARTITION BY h.addr ORDER BY h.ts DESC) AS rk FROM houses h) SELECT summary.mid, summary.addr, sum(house) FROM summary, houses WHERE summary.rk = 1 and houses.mid=summary.mid 上面的语句会按照a表中的house进行分组,然后按照ts进行排序,每个分组内的记录都会有一个属于自己的分组内的rank,最后再通过s.rk = 1选出符合条件的第一条记录,最后与原来的表格匹配出新表并输出结果 【知识点】 partition ...
吃一堑消化不良 发布于 4天前 阅读 10

JAVA中使用代码创建多数据源,并实现动态切换(一)

案例基于Spring+mybatis。 设计的目的:解决不确定(个数和种类)数据源的切换问题
十月阳光 发布于 3个月前 阅读 333

PostgreSQL_upsert功能(insert_on_conflict_do)的用法

标签 PostgreSQL , upsert , insert on conflict do 背景 PostgreSQL 9.5 引入了一项新功能,UPSERT(insert on conflict do),当插入遇到约束错误时,直接返回,或者改为执行UPDATE。 语法如下 Command: INSERT Description: create new rows in a table Syntax: [ WITH [ RECURSIVE ] with_query [, ...] ] INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query } [ ON CONFLICT [ conflict_target ] conflict_action ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ] where conflict_target can be one of: ( { index_column_name | ( index_expression ) } [ COLLATE collation ] [ opclass ] [, ...] ) [ WHERE index_predicate ] ON CONSTRAINT constraint_name and conflict_action is one of: DO NOTHING DO UPDATE SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) | ...
_夜枫 发布于 2个月前 阅读 22

使用 Ansible 安装部署 TiDB

作为一个分布式系统,在多个节点分别配置安装服务会相当繁琐。Ansible 是基于 Python 的自动化运维工具,糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能,而且使用简单,仅需在管理工作站上安装 Ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端。选用自动化工具 Ansible 来批量的安装、配置、部署 TiDB 。本文介绍如何通过 Ansible 工具来批量安装,使整个过程简单化。
TiDB 发布于 2周前 阅读 289 评论 1 点赞 1

spring集成 HikariCP(号称最快的数据库连接池)

1 在pom文件加入maven依赖 <dependency>             <groupId>com.zaxxer</groupId>             <artifactId>HikariCP</artifactId>             <version>2.6.1</version>             <scope>compile</scope> </dependency> 2 spring-datasource.xml <bean id="masterDataSource" class="com.zaxxer.hikari.HikariDataSource"         destroy-method="close">         <property name="driverClassName" value="${jdbc.driverClassName}" />         <property name="jdbcUrl" value="${jdbc.url}" />         <property name="username" value="${jdbc.username}" />         <property name="password" value="${jdbc.password}" />         <!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->           <property name="connectionTimeout" value="${hikari.connectionTimeout}" />           <!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->           <property name=...
大海201506 发布于 2个月前 阅读 86

ElasticSearch5.x实践_day01_04_ElasticSearch增删改查

ElasticSearch基本增删改查操作
正在长大的毛毛虫 发布于 3周前 阅读 15

十分钟成为 Contributor 系列 | 为 TiDB 重构 built-in 函数

为了加速表达式计算速度,最近我们对表达式的计算框架进行了重构,这篇教程为大&...
TiDB 发布于 58分钟前 阅读 2

SQL Server T-SQL高级查询

高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 --select select * from student;   --all 查询所有 select all sex from student;   --distinct 过滤重复 select distinct sex from student;   --count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student;   --top 取前N条记录 select top 3 * from student;   --alias column name 列重命名 select id as 编号, name '名称', sex 性别 from student;   --alias table name 表重命名 select id, name, s.id, s.name from student s;   --column 列运算 select (age + id) col from student; select s.name + '-' + c.name from classes c, student s where s.cid = c.id;   --where 条件 select * from student where id = 2; select * from student where id > 7; select * from student where id < 3; select * from student where id <> 3; select * from student where id >= 3; select * from student where id <= 5; select *...
百世经纶一页书梵天 发布于 3小时前 阅读 3

mysql处理海量数据时的一些优化查询速度方法

mysql处理海量数据时的一些优化查询速度方法
百世经纶一页书梵天 发布于 4小时前 阅读 2

常驻内存的PHP程序mysql报错 mysql has gone away

## 常驻内存的PHP程序mysql报错 mysql has gone away ## 原因 在cli环境下,PHP程序需要长时间运行,客户端与MySQL服务器之间的TCP连接是不稳定的。 不稳定的原因有以下可能: MySQL-Server会在一定时间内自动切断连接 PHP程序遇到空闲期时长时间没有MySQL查询,MySQL-Server也会切断连接回收资源 其他情况,在MySQL服务器中执行kill process杀掉某个连接,MySQL服务器重启 网络抖动 这时PHP程序中的MySQL连接就失效了。如果仍然执行mysql_query,就会报一个“MySQL server has gone away”的错误。程序处理不到就直接遇到致命错误并退出了。所以PHP程序中需要断线重连。 ## 解决方案 ### mysql_ping 有很多人提出了mysql_ping的方案,每次mysql_query进行连接检测或者定时连接检测。这个方案不是最好的。原因是: mysql_ping需要主动侦测连接,带来了额外的消耗 定时执行mysql_ping不能解决问题,如刚刚执行过mysql_ping检测之后,连接就关闭了; ### 捕获错误码,进行断线重连 它的原理是:mysql_query执行后检测返回值 如果mysql_query返回失败,检测错误码发现为2006/2013(这2个错误表示连接失败),再执行一次mysql_connect 执行mysql_connect后,重新执行mysql_query...
花花世界欢乐多 发布于 15小时前 阅读 4

索引

铁律一:天下没有免费的午餐,使用索引是需要付出代价的。   索引的优点有目共睹,但是,却很少有人关心过采用索引所需要付出的成本。若数据库管理员能够对索引所需要付出的代价有一个充分的认识,也就不会那么随意到处建立索引了。   仔细数数,其实建立索引的代价还是蛮大的。如创建索引和维护索引都需要花费时间与精力。特别是在数据库设计的时候,数据库管理员为表中的哪些字段需要建立索引,要调研、要协调。如当建有索引的表中的纪录又增加、删除、修改操作时,数据库要对索引进行重新调整。虽然这个工作数据库自动会完成,但是,需要消耗服务器的资源。当表中的数据越多,这个消耗的资源也就越多。如索引是数据库中实际存在的对象,所以,每个索引都会占用一定的物理空间。若索引多了,不但会占用大量的物理空间,而且,也会影响到整个数据库的运行性能。   可见,数据库管理员若要采用索引来提高系统的性能,自身仍然需要付出不少的代价。数据库管理员现在要考虑的就是如何在这两个之间取得一个均衡。或者说,找到一个回报与投入的临界点。   铁律二:对于查询中很少涉及的列或者重复值比较多的列,不要建立索引。   在查询的时候,如果我们不按某个字段去查询...
yizhichao 发布于 15小时前 阅读 3

怎么跳出MySQL的10个大坑

MySQL · 性能优化· Group Commit优化 背景 关于Group Commit网上的资料其实已经足够多了,我这里只简单的介绍一下。 众所周知,在MySQL5.6之前的版本,由于引入了Binlog/InnoDB的XA,Binlog的写入和InnoDB commit完全串行化执行,大概的执行序列如下: InnoDB prepare (持有prepare_commit_mutex); write/sync Binlog; InnoDB commit (写入COMMIT标记后释放prepare_commit_mutex)。 当sync_binlog=1时,很明显上述的第二步会成为瓶颈,而且还是持有全局大锁,这也是为什么性能会急剧下降。 很快Mariadb就提出了一个Binlog Group Commit方案,即在准备写入Binlog时,维持一个队列,最早进入队列的是leader,后来的是follower,leader为搜集到的队列中的线程依次写Binlog文件, 并commit事务。Percona 的Group Commit实现也是Port自Mariadb。不过仍在使用Percona Server5.5的朋友需要注意,该Group Commit实现可能破坏掉Semisync的行为,感兴趣的点击  bug#1254571 Oracle MySQL 在5.6版本开始也支持Binlog Group Commit,使用了和Mariadb类似的思路,但将Group Commit的过程拆分成了三个阶段:flush stage 将各个线程的binlog从cache写到文件中; sync stage 对bin...
心梦无双 发布于 18小时前 阅读 8

MySQL & MariaDB性能优化

MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务,本文描述淘宝数据库团队针对MySQL数据库Metadata Lock子系统的优化,hash_scan 算法的实现解析的性能优化,TokuDB·版本优化,以及MariaDB·的性能优化。本文来自淘宝团队内部经验分享。 MySQL· 5.7优化·Metadata Lock子系统的优化 背景 引入MDL锁的目的,最初是为了解决著名的bug#989,在MySQL 5.1及之前的版本,事务执行过程中并不维护涉及到的所有表的Metatdata 锁,极易出现复制中断,例如如下执行序列: Session 1: BEGIN; Session 1: INSERT INTO t1 VALUES (1); Session 2: Drop table t1; ——–SQL写入BINLOG Session 1: COMMIT; —–事务写入BINLOG 在备库重放 binlog时,会先执行DROP TABLE,再INSERT数据,从而导致复制中断。 在MySQL 5.5版本里,引入了MDL, 在事务过程中涉及到的所有表的MDL锁,直到事务结束才释放。这意味着上述序列的DROP TABLE 操作将被Session 1阻塞住直到其提交。 不过用过5.5的人都知道,MDL实在是个让人讨厌的东西,相信不少人肯定遇到过在使用mysqldump做逻辑备份时,由于需要执行FLUSH TABLES WITH READ ...
心梦无双 发布于 18小时前 阅读 2

docker实现mysql主从复制

docker实现mysql主从复制
666B 发布于 18小时前 阅读 14

Mysql 索引

N条数据如果不建立索引,平均查找N/2 次, 如果建立索引,可降低到 log2(N) 次,或1次 索引提高了查询速度,降低了增删改的速度 换服务器导入大量数据,先去掉索引,导入数据,然后统一加索引
明月知心 发布于 19小时前 阅读 8

Mysql 数据库备份与恢复

增量备份:如每天备份一次 整体备份:全部备份 Mysql 自带备份工具:mysqldump 工具路径:mysql-bin-mysqldump.exe mysqldump备份命令: 进入cmd,输入 mysqldump -u用户名 -p[密码] 数据库名 表1 表2 表3 > 路径\备份文件名 C:\Users\Lee>mysqldump -u root -p123456 mytest g > d:\g.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. # 显示密码备份 C:\Users\Lee>mysqldump -u root -p mytest g > d:\g.sql Enter password: ****** # 隐藏密码备份 注意:在cmd下备份,而不是进到mysql 里面备份,注意前面的C:\Users\Lee> 其他备份 在cmd 下 导出数据库里的所有表:mysqldump -u用户名 -p密码 数据库名 > 保存路径 导出数据库中指定的表:mysqldump -u用户名 -p密码 数据库名 表1 表2 ... > 保存路径 导出多个数据库:mysqldump -u用户名 -p密码 -B 数据库1 数据库2 ....> 保存路径 导出所有库:mysqldump -u用户名 -p密码 -A > 保存路径 数据库恢复 1、mysql 中 : a、库级别备份恢复:source 备份数据库路径; b、表级别备份恢复:     use  数据库名     source 备份数据库路径; 注意:在windows 下路径用 '/',...
明月知心 发布于 20小时前 阅读 5

截取字符串的函数substr

  Oracle中的截取字符串函数。   语法如下:oracle由入门到精通实战视频教程   substr( string, start_position, [ length ] )   参数分析:   string   字符串值   start_position   截取字符串的初始位置, Number型,start_position为负数时,表示从字符串右边数起。   length   截取位数,Number型   其中,length为可选,如果length为空(即不填)则返回start_position后面的所有字符。   意思就是:Oracle 11g数据库DBA入门与进阶视频教程   从start_position开始,取出length个字符并返回取出的字符串。   具体参考示例。   示例:   SELECT substr('This is a test', 6, 2) FROM dual 返回 'is'   substr('SyranMo have a dream', -8, 2)
课课家IT 发布于 20小时前 阅读 3

udev SCSI for asm in rhel 6

oracle rac安装过程需要将磁盘映射成asm可用磁盘 在配置规则之前需要做准备,具体准备参考我的经验:在virtualbox上创建共享磁盘 方法/步骤 创建SCSI设备唯一标识id 节点1: [root@node1 dev]# /sbin/scsi_id -g -u -d /dev/sdb 1ATA_VBOX_HARDDISK_VBb308a556-694c939a [root@node1 dev]# /sbin/scsi_id -g -u -d /dev/sdc 1ATA_VBOX_HARDDISK_VB17f6ff97-917d7a64 [root@node1 dev]# /sbin/scsi_id -g -u -d /dev/sdd 1ATA_VBOX_HARDDISK_VB0d8f4d2a-d9c1fde0 节点2: [root@node2 dev]# /sbin/scsi_id -g -u -d /dev/sdb 1ATA_VBOX_HARDDISK_VBb308a556-694c939a [root@node2 dev]# /sbin/scsi_id -g -u -d /dev/sdc 1ATA_VBOX_HARDDISK_VB0d8f4d2a-d9c1fde0 [root@node2 dev]# /sbin/scsi_id -g -u -d /dev/sdd 1ATA_VBOX_HARDDISK_VB17f6ff97-917d7a64 在这里可以看到磁盘的物理标识是唯一的   redhat 5* 采用: [root@node1 dev]# /sbin/scsi_id -g -u -s /block/sdb 1ATA_VBOX_HARDDISK_VBb308a556-694c939a [root@node1 dev]# /sbin/scsi_id -g -u -s /block/sdc 1ATA_VBOX_HARDDISK_VB17f6ff97-917d7a64 [root@node1 dev]# /sbin/scsi_id -g -u -s /block/sdd...
首席心理咨询师 发布于 20小时前 阅读 2

在virtualbox上创建共享磁盘

在安装virtualbox上安装oracle rac时候需要创建共享磁盘作为数据存储 方法/步骤 创建3块固定大小硬盘   磁盘大小设置最好不一样,这样容易区分 crs---->1.57G fdisk ----->1.5G data1 ---->15G   选择节点1虚拟机,进入其设置界面 设置硬盘可共享 管理--->虚拟介质管理--->选择对应硬盘,点击修改: 将以上三块硬盘设置成可共享 将共享磁盘加入到节点2虚拟机中 选择节点2虚拟机,进入其设置界面,将之前设置的共享磁盘勾选进来 确定该对应关系   根据硬盘大小,确定硬盘作用 node1                                    node2 /dev/sdb  --->crs                     /dev/sdb /dev/sdc  --->fdisk                   /dev/sdd /dev/sdd ---->data                   /dev/sdc 为共享磁盘设置一个主分区   只需要在节点1执行设置分区即可: [root@node1 ~]# cd /dev [root@node1 dev]# ls sd* sda  sda1  sda2  sda3  sda4  sda5  sdb  sdc  sdd [root@node1 dev]# fdisk sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS diskla...
首席心理咨询师 发布于 20小时前 阅读 1

Mysql 事物语法

开启事物 语法一:start transaction; 执行事物对应的sql: xxxxx 事物提交: commit; 回滚事务 回滚事务:rollback; 回滚到保存点:rollback to savepoint 保存点名; 注意:当1个事物 commit 或 rollback 事物就结束了 一些语句会造成事物隐式的提交 如:再次 start transaction ALTER FUNCTION, ALTER PROCEDURE, ALTER TABLE, BEGIN, CREATE DATABASE, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, DROP DATABASE, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, RENAME TABLE, SET AUTOCOMMIT=1, START TRANSACTION, TRUNCATE TABLE, UNLOCK TABLES 使用事物: 1、建表时选择合适的数据库引擎 (innodb 默认) 2、开始事物 start transaction 3、编写事物sql 语句 4、提交或回滚数据...
明月知心 发布于 22小时前 阅读 5

Mysql 存储引擎和事物基础概念

Myisam:批量插入速度快,不支持外键,不支持事物,锁表 Innodb:批量插入相对较慢,支持外键,支持事物,锁行 全文索引:mysql 5.5 版本以上都支持 注:MySQL的默认存储引擎为InnoDB,可以修改[<MySQL_HOME>/my.ini]文件default-storage-engine选项进行配置。 create table account( id int, name varchar(10), money int )engine=innodb charset=utf8; Mysql事物: 指一组操作,要么都成功执行,要么都不执行----> 原子性 (不可分割) 如:ATM转账,a账户往b账户转钱,只有a 账户钱减少,b账户钱才增加 在所有操作都完成之前,其他的会话不能被看到----> 隔离性(中间过程不可见) 事物发生前,数据总额依然匹配 --->一致性 事物产生的影响不能够撤销 ---> 持久性 如果事物发生错误,也不撤销,只能新增“补偿性事物”  
明月知心 发布于 22小时前 阅读 3

oracle rac 11g on rhel 6:[5]dbca建库

安装完oracle软件之后,最后创建oracle数据库 方法/步骤 1 [oracle@node1 ~]$ dbca 选择oracle real application cluster database 2 选择 crete a database  选择 custom database  自定义创建数据库 数据库名称填写test,点击select all 去掉configure enterprise manager,如果需要不用去除 sys/system用户密码设置相同 [grid@node1 ~]$ id oracle uid=1200(oracle) gid=1000(oinstall) groups=1000(oinstall),1100(dba) [grid@node1 ~]$ su - Password: [root@node1 ~]# usermod -a -G asmdba oracle [root@node1 ~]# id oracle uid=1200(oracle) gid=1000(oinstall) groups=1000(oinstall),1100(dba),1302(asmdba) 两个节点都要 点击cancel,重新dbca 去掉 special fast recovery area,如果需要这一功能,可以不用去除 将复选框都去掉 选择 ZHS16GBK-GBK 16 - bit simplified chinese 字符集 开始安装数据库 安装完成之后,检查是否安装成功...
首席心理咨询师 发布于 23小时前 阅读 2

oracle rac 11g on rhel 6:[4]安oracle软件

安装完集群软件和创建完数据存储datadg之后需要安装oracle软件 方法/步骤 [oracle@node1 database]$ ./runInstaller 去掉复选框 选择 skip sofrware updates 选择 install database software only 其他默认,验证互信的时候去掉第一个复选框 默认 选择 企业版 选择之前创建oracle软件安装目录 选择 oinstall 忽略不重要的 缺失rpm包和核心参数 执行脚本 [root@node1 app]# /u01/app/11.2.0.4/oracle/root.sh Performing root user operation for Oracle 11g   The following environment variables are set as:     ORACLE_OWNER= oracle     ORACLE_HOME=  /u01/app/11.2.0.4/oracle   Enter the full pathname of the local bin directory: [/usr/local/bin]: The contents of "dbhome" have not changed. No need to overwrite. The contents of "oraenv" have not changed. No need to overwrite. The contents of "coraenv" have not changed. No need to overwrite.   Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root script. Now produ...
首席心理咨询师 发布于 23小时前 阅读 1

oracle rac 11g on rhel 6:[3]创建datadg

之前安装的griddg是存储集群信息,还需要创建datadg存储数据文件 方法/步骤 [grid@node1 ~]$ asmca 点击 create  创建datadg 创建之后查看所有dg 命令查看dg [grid@node1 ~]$ echo $ORACLE_SID +ASM1 [grid@node1 ~]$ asmcmd ASMCMD> ls DATADG/ GRIDDG/ ASMCMD> 查看集群信息: 同样发现 griddg和datadg都处于online状态 步骤阅读
首席心理咨询师 发布于 23小时前 阅读 1

oracle rac 11g on rhel 6:[2]集群软件安装

[grid@node1 grid]$ ./runInstaller 方法/步骤 1 勾选 skip software updater 2 勾选 install and configure oracle grid infrastructure for a cluster 3 默认 4 去掉复选框,scan name填写/etc/hosts中scan ip 的别名,其他不动 互信配置重新启动之后需要重设 [grid@node1 ~]$ ssh node1priv date The authenticity of host 'node1priv (192.168.110.120)' can't be established. RSA key fingerprint is 6e:23:30:62:ff:92:b0:af:aa:0f:18:34:d3:ca:fa:ce. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'node1priv,192.168.110.120' (RSA) to the list of known hosts. Tue Oct 21 07:05:35 CST 2014 [grid@node1 ~]$ ssh node2priv date The authenticity of host 'node2priv (192.168.110.121)' can't be established. RSA key fingerprint is 6e:23:30:62:ff:92:b0:af:aa:0f:18:34:d3:ca:fa:ce. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'node2priv,192.168.110.121' (RSA) to the list of known hosts. Tue Oct 21 07:05:46 CST 2014 [grid@node1 ~]$ ssh node1priv da...
首席心理咨询师 发布于 23小时前 阅读 1

oracle rac 11g on rhel 6:[1]准备

oracle database  11g release 2(11.2.0.4) on rhel 6.4 using virtualbox之前的准备 虚拟机设置方面要求:   1:安装集群软件和Oracle软件目录大小最小15G   2:swap设置最小4G 方法/步骤 1 主机名设置 1:修改主机名,设置当前生效 : hostname 主机名 2:修改主机名,设置永久生效:编辑/etc/sysconfig/network文件,将HOSTNAME设置成想要修改的主机名   先做设置当前生效,再设置永久生效,这样可以避免重启主机,建议还是重启。 这里节点1的主机名设置成node1 2 设置ip并编辑/etc/hosts文件   1:详细设置参考我的百度经验:怎样设置虚拟机virtualbox 网关和linux ip 2:编辑/etc/hosts文件 如果没有配置DNS,一定要编辑hosts文件 [root@node1 ~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6   192.168.56.120 node1 192.168.56.122 node1vip 192.168.110.120 node1priv   192.168.56.121 node2 192.168.56.123 node2vip 192.168.110.121 node2priv   192.168.56.124 scanip 注意: 这里节点1的网卡1 (eth0...
首席心理咨询师 发布于 23小时前 阅读 1

三篇文章了解 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 发布于 2周前 阅读 924 评论 3 点赞 1

Mongodb高可用集群搭建

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

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

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

记一次mysql性能优化过程

所谓mysql的优化,三分是配置的优化,七分是sql语句的优化,通过一些案例分析,希望给大家在工作中带来一些思路
成熟的毛毛虫 发布于 4个月前 阅读 5998 评论 57 点赞 36 打赏 3

NoSQL介绍

对nosql出现背景、nosql类型做介绍,并解答nosql相关问题
lzhaoqiang 发布于 4个月前 阅读 1491 评论 1 点赞 4

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

通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端。本例中linux服务器系统为CentOS6.5.
黎嘉诚 发布于 5个月前 阅读 3252 评论 27 点赞 3

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

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

Redis基数统计——HyperLogLog小内存大用处

摘自本人 http://irfen.me/redis-hyperloglog-intro/ 我们一直都知道,redis几大常用数据结构,字符串、散列、列表、集合、有序集合。其实后来Redis做了很多补充,其中之一就是HyperLogLog,另外的还有GEO(地理位置),是3.2版本加的。 这里我们就来简单介绍下HyperLogLog结构。 先说用处:这个结构可以非常省内存的去统计各种计数,比如注册ip数、每日访问IP数、页面实时UV(PV肯定字符串就搞定了)、在线用户数等。 这里看到所有的用处都是xxx数,所以这个数据结构的特点就是,可以比较准确的估算出你要统计的数量,但是却无法知道统计的详细内容。比如统计每日访问IP数,可以获取当时访问过的IP总数量,但是没法知道这些IP都是什么。 有得必有失,当然你要统计上面提到的那些内容,可以用集合来处理,这样可以知道数量,也能获得所有的详细列表。但是一个大型的网站,每天IP比如有100万个呢,我们粗算一个IP消耗15字节,那么100万个IP就是15M,如果1千万,就是150M。 再来看看我们的HyperLogLog,在Redis中每个键占用的内容都是12K,理论存储近似接近2^64个值,不管存储的内容是什么。12K,知道这个数据结构的作用了吧。这也是为什么他不能知道里面的详细内容了。这是...
赵伊凡 发布于 8个月前 阅读 2085 评论 1 点赞 3

PingCAP唐刘:基于Raft构建分布式系统TiKV

2016年9月10日,第52期【OSC源创会】在珠海圆满落幕,350余名OSCer齐聚报业大厦,聆听了一场诚意满满的技术分享盛会。本期源创会由5位讲师分别针对5个不同的主题进行分享,为给未能到现场以及参与活动后仍意犹未尽的OSCer更好的了解和学习,开源中国将每位讲师的演讲内容进行了整理,并将逐一发布。干货多多,不容错过! PingCAP 是国内的一家完全走开源路线的 startup,专注于构建下一代分布式数据库及生态系统,代表作品 TiDB。本期源创会,来自 PingCAP 的首席架构师唐刘,对分布式一致性算法 Raft,以及他们是如何使用 Raft 进行分布式系统 TiKV 的开发进行了介绍与分享。 嘉宾介绍: 唐刘,PingCAP 首席架构师,现致力于下一代分布式数据库 TiDB、分布式存储 TiKV 的开发。开源爱好者,Go、Rust 等语言爱好者和实践者。 分享亮点: 1、 Raft 算法将 Server 划分为3种角色,Leader、Follower 和 Follower,每个 Term 至多存在1个 Leader,每个 Server 本地维护 currentTerm。 2、TiKV 和 TiDB可以看作对应着 Google Spanner 和 F1,用 Open Source 方式重建。 3、TiDB 是使用 Go 编写的,TiKV 是用 Rust 编写的,TiDB 在 TiKV 上层。 4、 TiKV 基于 Raft ,每一个 ...
王练 发布于 9个月前 阅读 1290 评论 2 点赞 1

MySQL应用优化

本文从MySQL语句优化、引擎选择、数据库设计三个方面介绍如何进行MySQL应用优化
lonelydawn 发布于 1年前 阅读 4034 评论 20 点赞 6

用Haproxy来做PostgreSQL的负载均衡

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,可以用来做web或者数据库的负载均衡,在一定范围内读写能力与添加的服务器数量成正比。haproxy用来做mysql负载均衡的文章很多,这里简单介绍下配合postgresql的使用。 一、环境 Centos 6.7 PostgreSQL 9.5.2 Haproxy 1.6 虚机服务列表 haproxy ip 192.168.226.148 (pg agent) datanode1 ip 192.168.226.133 (pg server) datanode2 ip 192.168.226.143 (pg server) 二、软件安装 #yum install gcc gcc-c++ make #groupadd haproxy #useradd haproxy –g haproxy -s /sbin/nologin #wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.4.tar.gz #cd haproxy-1.6.4 #make TARGET=linux2628 PREFIX=/usr/local/haproxy #make install PREFIX=/usr/local/haproxy #mkdir -p /etc/haproxy/ #cp examples/haproxy.init /etc/init.d/haproxy #chmod +x /etc/init.d/haproxy #ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/ 三、软件配置 1.主要配置文件haproxy.cfg [root@localhost ~]# vi /etc/haproxy/haproxy.cfg global log 127.0.0.1 local0 info maxconn 4096 user haproxy group haproxy dae...
kenyon_君羊 发布于 1年前 阅读 4887 评论 25 点赞 10

Couchbase 中的分布式储存

Couchbase 是一个具有高性能、可扩展性和可 用性强的数据库引擎。它可以让开发人员通过 NoSQL 的键值存储(二进制或者JSON)或者使用 N1QL 的形式对数据进行操作(N1QL 是非常类似于 SQL 的一种语法操作 JSON 数据的方式)。以现在整体架构来看,Couchbase 是往分布式数据库的方向发展下去。
极光推送 发布于 1年前 阅读 1754 评论 2 点赞 8

postgresql利用pg_upgrade大版本升级(8.4到9.5)

本文利用pg_upgrade实现将8.4.18版本升级到9.5.0版本,8.4.18版本为RedHat系统自带pg数据库版本。
Splace 发布于 1年前 阅读 2389 评论 8 点赞 8

SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用

SQLite是一个开源的嵌入式关系数据库,其小巧简洁快速的特性十分易于应用于移动应用数据管理中。
珲少 发布于 1年前 阅读 5904 评论 6 点赞 8

利用pgpool实现PostgreSQL的高可用

这里利用pgpool-ii实现PG的高可用。
PGSmith 发布于 1年前 阅读 3848 评论 8 点赞 12

MySQL 分区表

今天统计数据的时候发现一张表使用了表分区,借此机会记录一下。 ### 1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。 ### 2. 表分区与分表的区别 分表:指的是通过一定规则,将一张表分解成多张不同的表。比如将用户订单记录根据时间成多个表。 分表与分区的区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 ### 3. 表分区有什么好处? 1)分区表的数据可以分布在不同的物理设备上,从而高效地利用多个硬件设备。 2)和单个磁盘或者文件系统相比,可以存储更多数据 3)优化查询。在where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以在多个分区上并行处理,最后汇总结果。 4)分区表更容易维护。例如:想批量删除大量数据可以清除整个分区。 5)可以使用分区表来避免某些特殊的瓶颈,例如InnoDB的单个索引的互斥访问,ext3问价你系统的inode锁竞争等。 ### 4. 分区表的限制因素 1)一个表最多只能有1024个分区 2) MySQL5.1中,分区表达式必须是整数,或者返回整数的表达式。在M...
一条大河波浪宽 发布于 2年前 阅读 12523 评论 19 点赞 29

利用系统缓存提高PostgreSQL操作效率

近期,试用pgfincore,对此做一个实验记录。pgfincore是将数据库对象提前加载到OS cache中,加快操作效率。当有一顶的物理更改时,pgfincore也会将其加载到缓存中。主要是提高查询效率的,当有频繁的缓存交换时,有可能会被挤出缓存。
PGSmith 发布于 2年前 阅读 3806 点赞 7

Oracle迁移PostgreSQL经验总结(SQL部分,未完待续)

Oracle迁移PostgreSQL数据库经验总结(SQL部分,未完待续),本文只包括了我工作中接触到或者用到的技术点,其实两个数据库设计上的差异是很大的,但是Oracle数据库有的功能,PostgreSQL大体上也都能实现
李玉珏 发布于 2年前 阅读 5946 评论 14 点赞 18

Postgres-X2部署步骤

利用pgxc_ctl部署Postgres-X2步骤。
PGSmith 发布于 2年前 阅读 2773 评论 4 点赞 5
顶部