作者文章归档:zuojie@88.com

Redis哨兵模式


哨兵是一个分布式系统,你可以在一个架构中运行多个哨兵进程,这些进程使用流言协议来接收关于Master主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。

一、哨兵模式概述

1.1、为什么要启动哨兵模式

当我们的主服务器宕机后,要手动的去切换主从模式,这样的人工干预,费事费力,还会造成一段时间我们的服务不能使用。所有我们要使用哨兵模式来解决这一问题。

1.2、什么是哨兵模式

哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个:

监控主机Redis和从机Redis是否运行正常;

主机Redis出现故障后自动将从机转...

Read more

Haproxy


Haproxy概念

Haproxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

Haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。

Haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接。

并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模...

Read more

Redis连环五十二问!


基础

1.说说什么是Redis?

图片

Redis是一种基于键值对(key-value)的NoSQL数据库。

比一般键值对数据库强大的地方,Redis中的value支持string(字符串)、hash(哈希)、 list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、 HyperLogLog、GEO(地理信息定位)等多种数据结构,因此 Redis可以满足很多的应用场景。

而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常出色。

不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会...

Read more

MySQL配置文件优化


#基础配置
datadir=/data/datafile
socket=/var/lib/mysql/mysql.sock
log-error=/data/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character_set_server=utf8
#允许任意IP访问
bind-address = 0.0.0.0
#是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
#symbolic-links=0
#支持大小写
lower_case_table_names=1
#二进制配置
...

Read more

MyCAT2 入门到实战(四)


10. 【掌握】MyCAT2分库分表

10.1 分库分表的原理

一个数据库由很多表构造成,每个表对应不同的业务,垂直切分是指按业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面。

10.1.1 垂直切分

基于表或字段划分,表结构不同。我们有单库的分表,也有多库的分表,如下图所示

img

注意:有紧密关联关系的表应该在一个库里,相互没有关联关系的表可以分到不同的库里面

换句话说:就是我们很多库合在一起组成一个完整的数据库系统(这个不同到集群哦)。

10.1.2 水平切分

基于数据划分,表结构相同,数据不同,也有同库的水平切分和多库的切分。

当我们的客户表数量已...

Read more

MyCAT2 入门到实战(三)


6. 【熟悉】MySQL主从搭建

因为MyCAT只能路由、分发,不能把多个数据库里面的数据进行同步,所以要数据同步必须还要使用MySQL的读写分离,主从复制。

img

6.1 概述主从介绍

MySQL主从又叫Replication、AB复制。简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步。有这样几个关键点:

1)MySQL主从是基于binlog,主上需开启binlog才能进行主从;

2)主从过程大概有3个步骤;

3)主将更改操作记录到binlog里;

4)从将主的binlog事件(SQL语句) 同步本机上并记录在relaylog里;

5)从根据re...

Read more

MyCAT2 入门到实战(二)


4. 【掌握】MyCAT2配置文件介绍

4.1 用户(user)

配置文件位置/usr/local/mycat/conf/users/{用户名}.user.json。这个配置文件主要是用来配置MyCAT的登录用户的,也就是我们连接8066这个端口的用户信息。

{
    "dialect": "mysql",
    "ip": null,
    "password": "123456",
    "transactionType": "proxy"...

Read more

MyCAT读写分离


MyCat读写分离

一、读写分离配置

前面我们已经介绍过了mysql的主从同步和mycat的安装及相关配置文件的介绍,现在我们来配置下具体的读写分离操作。

1.1 创建物理表

我们现在master库中创建一张t_user表,因为主从的关系,slave中也会同步创建该表。

img

1.1 schema.xml配置

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

Read more

MyCat全局主键自增长


面我们介绍了MyCat的分库分表操作,那么同一张表中的数据会被保存在不同的数据库中,那么这就涉及到了主键维护的问题,此时肯定不能使用单个数据库中id自增的方式来处理了,这时我们就可以通过MyCat中提供的几种增长的方式来实现。

全局主键自增

一、本地文件自增方式

首先我们来看下第一种方式,也就是本地文件自增方式

1. 修改分片策略

我们原来配置的分片策略crc32slot是不支持主键自增的,所以我们需要修改为auto-sharding-long

img

2. 修改server.xml文件

server.xml文件中的sequnceHandlerType是用来配置主键生成类型的

sequn...

Read more

MyCAT 2分库分表


分库分表

一、分片规则介绍

rule.xml中定义了各种myCat支持的分片规则。

  1. 取模mod-long
  2. 自然月分片 sharding-by-month
  3. 按日期(天)分片sharding-by-date
  4. 按单月小时拆分sharding-by-hour
  5. 范围约定,提前规划好分片字段某个范围属于哪个分片,auto-sharding-long
  6. 范围求模分片
  7. 取模范围约束sharding-by-pattern
  8. 分片枚举sharding-by-intfile
  9. 固定分片hash算法
  10. 截取数字hash解析sharding-by-stringhash
  11. 一致性hash
  12. 日期范围hash分片rang...

Read more