10592字,475行,当上项目经理才知道

name varchar(50) not null, 
sex varchar(1), 
primary key (id) 

)engine=innodb default charset=utf8;

insert into user(id,name,sex) values(null,‘Tom’,‘1’);
insert into user(id,name,sex) values(null,‘Trigger’,‘0’);
insert into user(id,name,sex) values(null,‘Dawn’,‘1’);


2. 在从库中查询数据,进行验证 :

在从库中,可以查看到刚才创建的数据库:
![](https://upload-images.jianshu.io/upload_images/25222111-e23f462aa04fd6a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

在该数据库中,查询user表中的数据:
![](https://upload-images.jianshu.io/upload_images/25222111-ae75dec30168a741.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# 三、MyCat一主一从读写分离
## 1.读写分离原理
![](https://upload-images.jianshu.io/upload_images/25222111-75a2c27d4b1d708f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。

通过MyCat即可轻易实现上述功能,不仅可以支持MySQL,也可以支持`Oracle`和`SQL Server`。

MyCat控制后台数据库的**读写分离**和**负载均衡** 由 **schema.xml文件datahost标签** 的**balance属性**控制。

## 2.读写分离配置
配置如下:

1. 检查MySQL的主从复制是否运行正常 .
2. 修改MyCat 的`conf/schema.xml` 配置如下:

```java
<?xml version="1.0"?> 
<!DOCTYPE mycat:schema SYSTEM "schema.dtd"> 
<mycat:schema xmlns:mycat="http://io.mycat/"> 
	<schema name="ITCAST" checkSQLschema="true" sqlMaxLimit="100"> 
		<table name="user" dataNode="dn1" primaryKey="id"/> 
	</schema> 
	
	<dataNode name="dn1" dataHost="localhost1" database="db01" /> 
	
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> 
		<heartbeat>select user()</heartbeat> 
		<writeHost host="hostM1" url="192.168.192.157:3306" user="root" password="itcast"> 
			<readHost host="hostS1" url="192.168.192.158:3306" user="root" password="itcast" /> 
		</writeHost> 
	</dataHost> 
</mycat:schema>
  1. 修改conf/server.xml
<user name="root" defaultAccount="true"> 
	<property name="password">123456</property> 
	<property name="schemas">ITCAST</property> 
</user> 

<user name="test"> 
	<property name="password">123456</property>
	<property name="schemas">ITCAST</property> 
</user> 

<user name="user"> 
	<property name="password">123456</property> 
	<property name="schemas">ITCAST</property> 
	<property name="readOnly">true</property> 
</user>
  1. 配置完毕之后, 重启MyCat服务;

属性含义说明:

checkSQLschema 
	当该值设置为true, 如果我们执行语句"select * from test01.user ;" 语句时, MyCat则会 把schema字符去掉 , 
	可以避免后端数据库执行时报错 ; 

balance 
	负载均衡类型, 目前取值有4: 
	
	balance="0" : 不开启读写分离机制 , 所有读操作都发送到当前可用的writeHost上. 
	
	balance="1" : 全部的readHost 与 stand by writeHost (备用的writeHost) 都参与 select 语句的负载均衡,
	简而言之,就是采用双主双从模式(M1 --> S1 , M2 --> S2, 正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。); 
	
	balance="2" : 所有的读写操作都随机在writeHost , readHost上分发 
	
	balance="3" : 所有的读请求随机分发到writeHost对应的readHost上执行, writeHost不负担 读压力 ;balance=3 只在MyCat1.4 之后生效 .

3.验证读写分离

修改balance的值, 查询MyCat中的逻辑表中的数据变化;

四、MySQL双主双从搭建

1.架构

一个主机 Master1 用于处理所有写请求,它的从机 Slave1 和另一台主机 Master2 还有它的从机 Slave2 负责所有读请求。当 Master1 主机宕机后,Master2 主机负责写请求,Master1Master2 互为备机。架构图如下:

2.双主双从配置

准备的机器如下:

  1. 双主机配置

Master1配置:

#主服务器唯一ID 
server-id=1 

#启用二进制日志 
log-bin=mysql-bin 

# 设置不要复制的数据库(可设置多个) 
# binlog-ignore-db=mysql 
# binlog-ignore-db=information_schema 

#设置需要复制的数据库 
binlog-do-db=db02 
binlog-do-db=db03 
binlog-do-db=db04 

#设置logbin格式 
binlog_format=STATEMENT 

# 在作为从数据库的时候,有写入操作也要更新二进制日志文件 
log-slave-updates

Master2配置:

#主服务器唯一ID 
server-id=3 

#启用二进制日志 
log-bin=mysql-bin 

# 设置不要复制的数据库(可设置多个) 
#binlog-ignore-db=mysql 
#binlog-ignore-db=information_schema 

#设置需要复制的数据库 
binlog-do-db=db02 
binlog-do-db=db03
binlog-do-db=db04 

#设置logbin格式 
binlog_format=STATEMENT 

# 在作为从数据库的时候,有写入操作也要更新二进制日志文件 
log-slave-updates
  1. 双从机配置

Slave1配置:

#从服务器唯一ID 
server-id=2 

#启用中继日志 
relay-log=mysql-relay

Salve2配置:

#从服务器唯一ID 
server-id=4 

#启用中继日志 
relay-log=mysql-relay
  1. 双主机、双从机重启 mysql 服务
  2. 主机从机都关闭防火墙
  3. 在两台主机上建立帐户并授权 slave
#在主机MySQL里执行授权命令 
GRANT REPLICATION SLAVE ON *.* TO 'itcast'@'%' IDENTIFIED BY 'itcast'; 

flush privileges;

查询Master1的状态 :

查询Master2的状态 :

  1. 在从机上配置需要复制的主机

Slave1 复制 Master1Slave2 复制 Master2

slave1 指令:

CHANGE MASTER TO MASTER_HOST='192.168.192.157', 
MASTER_USER='itcast', 
MASTER_PASSWORD='itcast', 
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=409;

slave2 指令:

CHANGE MASTER TO MASTER_HOST='192.168.192.159', 
MASTER_USER='itcast', 
MASTER_PASSWORD='itcast', 
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=409;
  1. 启动两台从服务器复制功能 , 查看主从复制的运行状态
start slave; 

show slave status\G;

  1. 两个主机互相复制

Master2 复制 Master1Master1 复制 Master2

Master1 执行指令:

CHANGE MASTER TO MASTER_HOST='192.168.192.159', 
MASTER_USER='itcast', 
MASTER_PASSWORD='itcast', 
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=409;

Master2 执行指令:

CHANGE MASTER TO MASTER_HOST='192.168.192.157', 
MASTER_USER='itcast', 
MASTER_PASSWORD='itcast', 
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=409;
  1. 启动两台主服务器复制功能 , 查看主从复制的运行状态
start slave; 

show slave status\G;

  1. 验证
create database db03; 


use db03; 

create table user( 
	id int(11) not null auto_increment, 
	name varchar(50) not null, 
	sex varchar(1), 
	primary key (id) 
)engine=innodb default charset=utf8; 

insert into user(id,name,sex) values(null,'Tom','1'); 
insert into user(id,name,sex) values(null,'Trigger','0'); 
insert into user(id,name,sex) values(null,'Dawn','1'); 

insert into user(id,name,sex) values(null,'Jack Ma','1'); 
insert into user(id,name,sex) values(null,'Coco','0'); 
insert into user(id,name,sex) values(null,'Jerry','1');

在Master1上创建数据库:

在Master1上创建表 :

  1. 停止从服务复制功能

最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以关注+点赞,点击这里免费获取

程序员代码面试指南 IT名企算法与数据结构题目最优解

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

image.png

《TCP-IP协议组(第4版)》

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

image.png

Java开发手册(嵩山版)

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

image.png

MySQL 8从入门到精通

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

image.png

Spring5高级编程(第5版)

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

image.png

JAVA核心知识点+1000道 互联网Java工程师面试题

image.png

image.png

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

t)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

[外链图片转存中…(img-a17jrgvP-1628405014419)]

JAVA核心知识点+1000道 互联网Java工程师面试题

[外链图片转存中…(img-L6JgvEnR-1628405014420)]

[外链图片转存中…(img-7VYN4ZNm-1628405014421)]

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值