IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql读写分离 -> 正文阅读

[大数据]mysql读写分离

在数据库集群架构中,主数据库负责处理事务性查询(写入操作),而从数据库只负责处理select查询(读操作),这样可以提高数据库整体读写性能。主数据库另外一个功能就是负责将数据变更同步到从数据库中。

读写分离的作用

1)分摊服务器压力,提高机器的系统处理效率。

2)当写入操作不变时,就可以大大分摊读取操作的压力,提高系统性能。另外,当读取操作的压力被分摊后,又间接提高了写入的性能。因此,数据库整体读写性能提高了。

3)增加冗余,提高服务可用性。当一台数据库服务器宕机后,可以调整另外一台从数据库以最快速度恢复服务。

准备工作

第一步,需要3台以上装有CentOS7.7版本以上的64位系统的服务器。

第二步,在两台服务器即公网IP分别为x.x.x.x和y.y.y.y的服务器上配置相同的环境。都进行源码安装mysql-5.6.40

Mysql数据库主从复制

第一步,主从复制的基本原理。

mysql复制过程分成三步:

1)master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件(binary log events)。

2)slave将master的binary log events拷贝到它的中继日志(relay log)。

3)slave重做中继日志中的事件,将改变应用到自己的数据库中。

第二步,主从复制的基本原则。

1)每个slave只有一个master;

2)每个slave只能有一个唯一的服务器ID;

3)每个master可以有多个slave。

第三步,配置。

主从服务器上安装的mysql,版本要求一致且后台以服务运行。

主从服务器上安装的mysql都配置在[mysqld]结点下,都是小写。

第四步,主服务器修改my.cnf配置文件。

在my.cnf文件中添加下面的代码:

#主服务器唯一Id[必填]

server-id=1

#启用二进制日志[必填]

log-bin=/data/mysql/data/mysqlbin

#主机,读写都可以

read-only=0

#设置不要复制的数据库[可选]

#binlog-ignore-db=mysql

#设置需要复制的数据库[可选](输数据库名字)

binlog-do-db=test

第五步,从服务器修改my.cnf配置文件。

在my.cnf文件中添加下面的代码:

#从服务器唯一Id

server-id=2

#启用二进制日志

log-bin=/data/mysql/data/mysqlbin

#只读,对拥有super权限的账号是不生效的

read_only = 1

第六步,配置完,主从服务器都重启mysql服务。

命令:service mysql restart

第七步,建立账户并授权。

1)在主机上建立账户并授权slave。

命令:mysql -uroot -p123456

# 创建用户

mysql > CREATE USER root@'%' IDENTIFIED BY '123456';

# 授权slave

mysql > GRANT REPLICATION SLAVE ON *.* TO root@'x1.x1.x1.x1' IDENTIFIED BY '123456';

# 更新权限

mysql > flush privileges;

# 查询master的状态

mysql > show master status;

2服务器上配置需要复制的主服务器。

命令:mysql -uroot -p123456

mysql > CHANGE MASTER TO MASTER_HOST = 'x.x.x.x',

MASTER_PORT = 3306,

MASTER_USER = 'root',

MASTER_PASSWORD = '123456',

MASTER_LOG_FILE = 'mysqlbin.000001',

MASTER_LOG_POS = 120;

# 启动从服务器复制功能

mysql > start slave;

mysql > show slave status\G;

若结果显示“Slave_IO_Running: Yes?Slave_SQL_Running: Yes”,则说明主从配置成功。

Mycat数据库中间件

1)Mycat是一个开源的数据库系统,但是并没有存储引擎。

2)Mycat是数据库中间件,就是介于客户端和服务器之间,进行数据处理与交互的中间服务。接到客户端的请求,通过判断后,转发到后端数据库。

3)Mycat在使用之前,需要先安装JAVA运行环境(JRE),由于Mycat中使用了JDK7中的一些特性,所以要求必须在JDK7以上的版本上运行。

部署mycat

第一步,下载server-jre-8u202-linux-x64。

到地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html下载server-jre-8u202-linux-x64的tar.gz压缩包。然后使用WinSCP将server-jre-8u202-linux-x64压缩包上传到/usr/local/src文件夹中。也可以使用wget命令下载。

命令:cd /usr/local/src

wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz

第二步,解压server-jre-8u202-linux-x64。

命令:cd /usr/local/src

tar -zxvf server-jre-8u202-linux-x64.tar.gz -C /usr/local/

第三步,配置jre环境变量,打开/etc/profile文件,在文件底部另起一行,加上下面四行代码:

export JAVA_HOME=/usr/local/jdk1.8.0_202

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

第四步,测试server-jre是否配置成功。

#刷新profile文件

source /etc/profile

#查看jdk版本

java -version

如果成功显示server-jre的版本,则说明server-jre配置成功。

第五步,下载Mycat-server-1.6.5

到地址:Index of /1.6.5/下载Mycat-server-1.6.5的tar.gz压缩包。然后使用WinSCP将Mycat-server-1.6.5压缩包上传到/usr/local/src文件夹中。也可以使用wget命令下载。

命令:cd /usr/local/src

wget http://dl.mycat.org.cn/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

第六步,解压Mycat-server-1.6.5

命令:cd /usr/local/src

tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/

第七步,配置mycat。

Mycat-server-1.6.5中有两个配置文件,分别为:/usr/local/mycat/conf/server.xml #定义用户以及系统相关变量,如端口等。

/usr/local/mycat/conf/schema.xml #定义逻辑库,表、分片节点等。

1)配置server.xml。

在/usr/local/mycat/conf/server.xml中,对下列代码进行配置:

<user name="root" defaultAccount="true">

<property name="password">123456</property>

<property name="schemas">TESTDB</property>

<!-- 表级 DML 权限设置 -->

<!--

<privileges check="false">

<schema name="TESTDB" dml="0110" >

<table name="tb01" dml="0000"></table>

<table name="tb02" dml="1111"></table>

</schema>

</privileges>

?-->

</user>

2)配置schema.xml。

在/usr/local/mycat/conf/schema.xml中写入下面的代码:

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">

</schema>

<dataNode name="dn1" dataHost="localhost1" database="mysql" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" ?slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="mysql-master" url="x.x.x.x:3306" user="root" password="123456">

<readHost host="mysql-slave" url="y.y.y.y:3306" user="root" password="123456" />

</writeHost>

</dataHost>

</mycat:schema>

第八步,在真实的master数据库上给用户授权。

命令:mysql -uroot -p123456

mysql> grant all on testdb.* to root@'%' identified by '123456';

mysql> flush privileges;

第九步,在mycat的服务器上测试mycat用户登录。

# 安装mysql客户端

命令:yum install -y mysql

# 登录mysql-master

命令:mysql -uroot -p123456 -hx.x.x.x

第十步,调整JVM。

在/usr/local/mycat/conf/wrapper.conf文件后面“wrapper.ping.timeout=120”上面添加下面的代码:

wrapper.startup.timeout=300 //超时时间300秒

第十一步,启动Mycat。

命令:/usr/local/mycat/bin/mycat start

#?查看mycat是否启动

命令:jps

netstat -lntp | grep java

若服务没有启动,则把/usr/local/mycat/conf/wrapper.conf中的“wrapper.java.additional.3=-XX:MaxPermSize=64M”注释掉,因为该代码限制了大小导致服务无法启动。

第十二步,测试mycat。

# 将master当做mycat的客户端

命令:mysql -uroot -hz.z.z.z -p123456?-P 8066

mysql> show tables;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:48:45  更:2022-10-08 20:50:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/1 9:55:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码