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的主从关系和mycat中间件 -> 正文阅读

[大数据]mysql优化---如何搭建mysql的主从关系和mycat中间件

1. 如何搭建mysql的主从关系

解决mysql高并发的瓶颈。

1.1 复制概述

复制是指将主数据库的DDL 和 DML 操作通过==二进制日志==传到从库服务器中,然后在从库上对这些==日志重新执行==(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。

1.2 复制原理

MySQL 的主从复制原理如下。

从上层来看,复制分成三步:

  • Master 主库在事务提交时,会把数据变更作为事件Events 记录在二进制日志文件 Binlog 中。

  • 主库推送二进制日志文件 Binlog 中的日志事件到从库的中继日志 Relay Log 。

  • slave重做中继日志中的事件,将改变反映它自己的数据。

1.3 复制优势

MySQL 复制的优点主要包含以下三个方面:

  • 主库出现问题,可以快速切换到从库提供服务。

  • 可以在从库上执行查询操作,从主库中更新,实现读写分离,降低主库的访问压力。

  • 可以在从库中执行备份,以避免备份期间影响主库的服务。

==mysql需要允许远程连接==

1.4 搭建步骤

1.4.1 master

1) 在master 的配置文件(/etc/my.cnf)中,配置如下内容:vi /etc/my.cnf? ---打开文件

#mysql 服务ID,保证整个集群环境中唯一
server-id=1

#mysql binlog 日志的存储路径和文件名
log-bin=/var/lib/mysql/mysqlbin

#错误日志,默认已经开启
#log-err

#mysql的安装目录
#basedir

#mysql的临时目录
#tmpdir

#mysql的数据存放目录
#datadir

#是否只读,1 代表只读, 0 代表读写
read-only=0

#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql

#指定同步的数据库
#binlog-do-db=db01

?2) 执行完毕之后,需要重启Mysql:

systemctl restart mysqld

3) 创建同步数据的账户,并且进行授权操作:

设置远程访问。--- 若已经设置过则可忽略此步

grant replication slave on *.* to 'root'@'192.168.192.131' identified by 'root';	

flush privileges

4) 查看master状态:mysql -uroot -proot进入mysql

show master status;

建议先截图留下,从节点的配置需要使用?

?字段含义:

File : 从哪个日志文件开始推送日志文件 给从节点
Position : 从哪个位置开始推送日志 ?从什么位置开始同步
Binlog_Ignore_DB : 指定不需要同步的数据库

1.4.2 slave---从节点搭建

1) 在 slave 端配置文件中,配置如下内容:

vi /etc/my.cnf ---开启文件

#mysql服务端ID,唯一
server-id=2

#指定binlog日志
log-bin=/var/lib/mysql/mysqlbin

?

2) 执行完毕之后,需要重启Mysql: ?

systemctl restart mysqld

3) 执行如下指令 :

mysql -uroot -proot 进入mysql然后输入以下命令

change master to master_host= '192.168.135.156', master_user='root', master_password='root', master_log_file='mysqlbin.000001', master_log_pos=154;

?指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。

4) 开启同步操作

start slave;

show slave status;
show slave status\G; ?----竖着查看

??如果你的从节点虚拟机是克隆的主节点的,那么你需要修改一些配置,具体操作请参考以下链接

http://t.csdn.cn/kxXwA

配置完停止同步(stop slave)操作并从第三步重新配置

配置成功后可以去主节点创建数据库并添加一些数据,查看从节点是否也自动创建并添加了相同的数据库和数据?

5) 停止同步操作

stop slave;

2.MyCat的安装

1、?将压缩包上传到Linux指定的目录下并且解压

我们这里放在/usr/local 路径下

?版本使用的是1.6.7.4稳定版

解压命令:

tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

?

2、修改配置文件

2.1 主要是修改如下3个配置文件

schema.xml:定义逻辑库,表、分片节点等内容

②rule.xml:定义分片规则

③server.xml:定义用户以及系统相关变量,如端口等

?2.2? 修改schema.xml ?

修改用户信息,与MySQL区分,如下:

配置好的信息,按自己的需要修改相关信息?

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	
<!-- 配置逻辑库 name:表示逻辑库的名称 sqlMaxLimit:sql最大连接数 dataNode:管理的节点名称 -->
	<schema name="testdb" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1" dataNode="dn1">
		
	</schema>
	
	<!-- dataNode:表示自定义数据节点的标签 name:节点名称 dataHost:数据的主机名称 database:表示真实数据库的名称 -->
	<dataNode name="dn1" dataHost="localhost1" database="xxx" />

	
	<!-- 定义真实服务所在的地址 name:表示名称 -->
	<dataHost name="localhost1" maxCon="1000" minCon="0" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<!-- 按照心跳机制来判断真实的数据库是否正常运行 -->
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="192.168.135.156:3306" user="root"
				   password="root">
				   <readHost host="hostS1" url="192.168.135.160:3306" user="root"
				   password="root"></readHost>
		</writeHost>
	</dataHost>
	
</mycat:schema>

这里我配置了一个写主机(192.168.135.156)和一个读主机(192.168.135.160),实现读写分离

这里的testdb是我们mysql中的数据库名称

主要分schema、dataNode、dataHost三个主要配置. ?

?2.3 修改配置文件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 permissions and - limitations 
	under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
	
	<user name="mycat">
		<property name="password">root</property>
		<property name="schemas">testdb</property>
	</user>

</mycat:server>

?其中mycat、user为访问mycat的用户,testdb为mycat虚拟的数据库,供上层应用访问。

3、?验证数据库访问情况

Mycat 作为数据库中间件要和数据库部署在不同机器上,所以要验证远程访问情况。mysql -udhapp -pxxxxxx -h 192.168.56.20 -P 3306mysql -udhapp -pxxxxxx -h 192.168.56.21 -P 3306

#如远程访问报错,请建对应用户

grant all privileges on . to root@'%' identified by '123123'

4、 启动程序

1、 控制台启动 :去 mycat/bin 目录下执行 ./mycat console

2 、后台启动 :去 mycat/bin 目录下 ./mycat start

为了能第一时间看到启动日志,方便定位问题,我们选择1控制台启动。

?出现successfully表示启动成功

5、登录

1、登录后台管理窗口

? 此登录方式用于管理维护 Mycat? mysql -umycat -pxxxxxx -P 8066 -h 192.168.56.20

---?Mycat? mysql -umycat -p密码?-P 8066 -h ip? ? ?--------(默认mycat端口号为8066)

?接下来就可以通过springboot项目来通过mycat访问相关数据库了,在使用idea测试前记得放行8066端口号或关闭防火墙

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:32:58-

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