mysql模拟十万级数据读写_4.5万字手把手教你实现MySQL TB级数据存储!!

写在前面

业界对系统的高可用有着基本的要求,简单的说,这些要求可以总结为如下所示。系统架构中不存在单点问题。

可以最大限度的保障服务的可用性。

一般情况下系统的高可用可以用几个9来评估。所谓的几个9就是系统可以保证对外提供的服务的时间达到总时间的百分比。例如如果需要达到99.99的高可用,则系统全年发生故障的总时间不能超过52分钟。

系统高可用架构

我们既然需要实现系统的高可用架构,那么,我们到底需要搭建一个什么样的系统架构呢?我们可以将需要搭建的系统架构简化成下图所示。

97ceb286777f104ac8a592a962b7438d.png

服务器规划

由于我电脑资源有限,我这里在4台服务器上搭建高可用环境,大家可以按照本文将环境扩展到更多的服务器,搭建步骤都是一样的。主机名IP地址安装的服务binghe151192.168.175.151Mycat、Zookeeper、MySQL、HAProxy、Keepalived、Xinetd

binghe152192.168.175.152Zookeeper、MySQL

binghe153192.168.175.153Zookeeper、MySQL

binghe154192.168.175.154Mycat、MySQL、HAProxy、Keepalived、Xinetd

binghe155192.168.175.155MySQL

注意:HAProxy和Keepalived最好和Mycat部署在同一台服务器上。

安装MySQL

安装JDK

由于Mycat和Zookeeper的运行需要JDK环境的支持,所有我们需要在每台服务器上安装JDK环境。

这里,我以在binghe151服务器上安装JDK为例,其他服务器的安装方式与在binghe151服务器上的安装方式相同。安装步骤如下所示。

注:我下载的JDK安装包版本为:jdk-8u212-linux-x64.tar.gz,如果JDK版本已更新,大家下载对应的版本即可。

(2)将下载的jdk-8u212-linux-x64.tar.gz安装包上传到binghe151服务器的/usr/local/src目录下。

(3)解压jdk-8u212-linux-x64.tar.gz文件,如下所示。tar -zxvf jdk-8u212-linux-x64.tar.gz

(4)将解压的jdk1.8.0_212目录移动到binghe151服务器下的/usr/local目录下,如下所示。mv jdk1.8.0_212/ /usr/local/src/

(5)配置JDK系统环境变量,如下所示。vim /etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_212

CLASS_PATH=.:$JAVA_HOME/lib

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASS_PATH PATH

使系统环境变量生效,如下所示。source /etc/profile

(6)查看JDK版本,如下所示。[root@binghe151 ~]# java -version

java version "1.8.0_212"

Java(TM) SE Runtime Environment (build 1.8.0_212-b10)

Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

结果显示,正确输出了JDK的版本信息,说明JDK安装成功。

安装Mycat

下载Mycat 1.6.7.4 Release版本,解压到服务器的/usr/local/mycat目录下,并配置Mycat的系统环境变量,随后,配置Mycat的配置文件,Mycat的最终结果配置如下所示。schema.xml<?xml version="1.0"?>

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

select user()

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

select user()

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

select user()

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

select user()

server.xml<?xml version="1.0" encoding="UTF-8"?>

1

druidparser

3307

3308

0

0.0.0.0

utf8mb4

2048

2

2

1800000

300

0

0

1

1000

104857600

io.mycat.server.interceptor.impl.StatisticsSqlInterceptor

UPDATE,DELETE,INSERT

/tmp/sql.txt

true

true

1

cTwf23RrpBCEmalp/nx0BAKenNhvNs2NSr9nYiMzHADeEDEfwVWlI6hBDccJjNBJqJxnunHFp5ae63PPnMfGYA==

shop

rule.xml<?xml version="1.0" encoding="UTF-8"?>

customer_id

mod-long

4

sequence_db_conf.properties#sequence stored in datanode

GLOBAL=mycat

ORDER_MASTER=mycat

ORDER_DETAIL=mycat

关于Mycat的配置,仅供大家参考,大家不一定非要按照我这里配置,根据自身业务需要配置即可。本文的重点是实现Mycat的高可用环境搭建。

在MySQL中创建Mycat连接MySQL的账户,如下所示。CREATE USER 'mycat'@'192.168.175.%' IDENTIFIED BY 'mycat';

ALTER USER 'mycat'@'192.168.175.%' IDENTIFIED WITH mysql_native_password BY 'mycat';

GRANT SELECT, INSERT, UPDATE, DELETE,EXECUTE ON *.* TO 'mycat'@'192.168.175.%';

FLUSH PRIVILEGES;

安装Zookeeper集群

安装配置完JDK后,就需要搭建Zookeeper集群了,根据对服务器的规划,现将Zookeeper集群搭建在“binghe151”、“binghe152”、“binghe153”三台服务器上。

1.下载Zookeeper

到Apache官网去下载Zookeeper的安装包,Zookeeper的安装包下载地址为:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/。具体如下图所示。

c97e28e2fb530ee517d8e7130fd0a754.png

也可以在binghe151服务器上执行如下命令直接下载zookeeper-3.5.5。wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz

执行上述命令就可以直接把apache-zookeeper-3.5.5-bin.tar.gz安装包下载到binghe151服务器上。

2.安装并配置Zookeeper

注意:(1)、(2)、(3)步都是在binghe152服务器上执行的。

(1)解压Zookeeper安装包

在binghe151服务器上执行如下命令,将Zookeeper解压到“/usr/local/”目录下,并将Zookeeper目录修改为zookeeper-3.5.5。tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz

mv apache-zookeeper-3.5.5-bin zookeeper-3.5.5

(2)配置Zookeeper系统环境变量

同样,需要在/etc/profile文件中配置Zookeeper系统环境变量,如下:ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5

PATH=$ZOOKEEPER_HOME/bin:$PATH

export ZOOKEEPER_HOME PATH

结合之前配置的JDK系统环境变量,/etc/profile,总体配置如下:MYSQL_HOME=/usr/local/mysql

JAVA_HOME=/usr/local/jdk1.8.0_212

MYCAT_HOME=/usr/local/mycat

ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5

MPC_HOME=/usr/local/mpc-1.1.0

GMP_HOME=/usr/local/gmp-6.1.2

MPFR_HOME=/usr/local/mpfr-4.0.2

CLASS_PATH=.:$JAVA_HOME/lib

LD_LIBRARY_PATH=$MPC_LIB_HOME/lib:$GMP_HOME/lib:$MPFR_HOME/lib:$LD_LIBRARY_PATH

PATH=$MYSQL_HOME/bin:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$MYCAT_HOME/bin:$PATH

export JAVA_HOME ZOOKEEPER_HOME MYCAT_HOME CLASS_PATH MYSQL_HOME MPC_LIB_HOME GMP_HOME MPFR_HOME LD_LIBRARY_PATH PATH

(3)配置Zookeeper

首先,需要将$ZOOKEEPER_HOME/conf($ZOOKEEPER_HOME为Zookeeper的安装目录)目录下的zoo_sample.cfg文件修改为zoo.cfg文件。具体命令如下:cd /usr/local/zookeeper-3.5.5/conf/

mv zoo_sample.cfg zoo.cfg

接下来修改zoo.cfg文件,修改后的具体内容如下:tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper-3.5.5/data

dataLogDir=/usr/local/zookeeper-3.5.5/dataLog

clientPort=2181

server.1=binghe151:2888:3888

server.2=binghe152:2888:3888

server.3=binghe153:2888:3888

在Zookeeper的安装目录下创建data和dataLog两个文件夹。mkdir -p /usr/local/zookeeper-3.5.5/data

mkdir -p /usr/local/zookeeper-3.5.5/dataLog

切换到新建的data目录下,创建myid文件,具体内容为数字1,如下所示:cd /usr/local/zookeeper-3.5.5/data

vim myid

将数字1写入到文件myid。

3.将Zookeeper和系统环境变量文件复制到其他服务器

注意:(1)、(2)步是在binghe151服务器上执行的。

(1)复制Zookeeper到其他服务器

根据对服务器的规划,现将Zookeeper复制到binghe152和binghe53服务器,具体执行操作如下所示:scp -r /usr/local/zookeeper-3.5.5/ binghe152:/usr/local/

scp -r /usr/local/zookeeper-3.5.5/ binghe153:/usr/local/

(2)复制系统环境变量文件到其他服务器

根据对服务器的规划,现将系统环境变量文件/etc/profile复制到binghe152、binghe153服务器,具体执行操作如下所示:scp /etc/profile binghe152:/etc/

scp /etc/profile binghe153:/etc/

上述操作可能会要求输入密码,根据提示输入密码即可。

4.修改其他服务器上的myid文件

修改binghe152服务器上Zookeeper的myid文件内容为数字2,同时修改binghe153服务器上Zookeeper的myid文件内容为数字3。具体如下:

在binghe152服务器上执行如下操作:echo "2" > /usr/local/zookeeper-3.5.5/data/myid

cat /usr/local/zookeeper-3.5.5/data/myid

2

在binghe153服务器上执行如下操作:echo "3" > /usr/local/zookeeper-3.5.5/data/myid

cat /usr/local/zookeeper-3.5.5/data/myid

3

5.使环境变量生效

分别在binghe151、binghe152、binghe153上执行如下操作,使系统环境变量生效。source /etc/profile

6.启动Zookeeper集群

分别在binghe151、binghe152、binghe153上执行如下操作,启动Zookeeper集群。zkServer.sh start

7.查看Zookeeper集群的启动状态binghe151服务器[root@binghe151 ~]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost.

Mode: followerbinghe152服务器[root@binghe152 local]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost.

Mode: leaderbinghe153服务器[root@binghe153 ~]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost.

Mode: follower

可以看到,binghe151和binghe153服务器上的Zookeeper角色为follower,binghe152服务器上的Zookeeper角色为leader。

初始化Mycat配置到Zookeeper集群

注意:初始化Zookeeper中的数据,是在binghe151服务器上进行的,原因是之前我们已经在binghe151服务器上安装了Mycat。

1.查看初始化脚本

在Mycat安装目录下的bin目录中提供了一个init_zk_data.sh脚本文件,如下所示。[root@binghe151 ~]# ll /usr/local/mycat/bin/

total 384

-rwxr-xr-x 1 root root 3658 Feb 26 17:10 dataMigrate.sh

-rwxr-xr-x 1 root root 1272 Feb 26 17:10 init_zk_data.sh

-rwxr-xr-x 1 root root 15701 Feb 28 20:51 mycat

-rwxr-xr-x 1 root root 2986 Feb 26 17:10 rehash.sh

-rwxr-xr-x 1 root root 2526 Feb 26 17:10 startup_nowrap.sh

-rwxr-xr-x 1 root root 140198 Feb 28 20:51 wrapper-linux-ppc-64

-rwxr-xr-x 1 root root 99401 Feb 28 20:51 wrapper-linux-x86-32

-rwxr-xr-x 1 root root 111027 Feb 28 20:51 wrapper-lin

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值