mysql慢sql增加读写分离_MySQL主从同步+读写分离

MySQL主从同步+读写分离

实验拓扑:

三台mysql数据库:

192.168.80.101 主服务器 mysql

192.168.80.102 从1服务器 mysql

192.168.80.103 从2服务器 mysql

192.168.80.104 调度器Amoeba服务器 jdk、amoeba

192.168.80.105 mysql客户端 mysql

第一部分:三台mysql服务器主从同步

一、mysql主服务器配置:192.168.80.101

1、安装配置NTP时间服务器:

yum install -y ntp //建立时间同步环境,在主节点上搭建时间同步服务器

vi /etc/ntp.conf

restrict 192.168.80.0 mask 255.255.255.0 nomodify notrap //去掉#,并修改其网段

server 127.127.1.0 //以下两行新加

fudge 127.127.1.0 stratum 8 //设置时间服务器的层级为8级,顶级是0

:x

service ntpd restart //重启ntp服务器

service firewalld stop

setenforce 0 //关闭防火墙和安全SELinux

2、源码编译安装MYSQL:

省略

https://blog.51cto.com/13572519/2116742

3、配置master主服务器的MYSQL:

vi /etc/my.cnf //在 [mysqld]下面配置

server_id = 11 //修改

log_bin=master_bin //开启二进制日志

log_slave_updates=true //在mysqld区域修改添加这三行,server_id主从都不一致,允许从服务器来主服务器更新数据库

:x

service mysqld restart

mysql -u root -p //登录数据库

GRANT REPLICATION SLAVE ON . TO 'myslave'@'192.168.80.%' IDENTIFIED BY '123456'; //为所有从服务器在80.0网段到主服务器读取二进制日志的权限

FLUSH PRIVILEGES; //刷新权限

show master status; //查看当前库的状态,要记下 Position 列的值

d0645894cfa721908b994a21eb9ba8cf.png

二、mysql从服务器配置:192.168.80.102和192.168.80.103

service firewalld stop

setenforce 0

1、安装配置NTP时间服务器:

yum install -y ntpdate

ntpdate 192.168.80.101 //手动与主服务器时间节点进行同步(我的操作此步,mysqld不能重启)

echo '/30 * /usr/sbin/ntpdate 192.168.80.101' >> /var/spool/cron/root //写计划任务,每隔三十分钟,自动同步时间

crontab -l //查看计划任务

e97f199caa4ab51900c3f7316c890364.png

2、源码编译安装MYSQL:

省略

https://blog.51cto.com/13572519/2116742

3、配置两台master从服务器的MYSQL:

vi /etc/my.cnf //[mysqld]下面

server_id = 22 // 各服务器之间的server_id的值不能相同从2设置33

relay_log=relay-log-bin

relay_log_index=slave-relay-bin.index

:x

service mysqld restart

mysql -u root -p //登录数据库

--注意master_logpos=的值会变化,要在主上使用show master status;查看一下,注意 -和

change master to master_host='192.168.80.101',master_user='myslave',master_password='123456',master_log_file='master_bin.000002',master_log_pos=154;

start slave;

show slave status \G //以下两个选项需要是Yes才正确

ce03ae575ac2dd2080ebce25a4d95b56.png

**二、验证MYSQL主从同步:

在主服务器上新建库并在从服务器上验证是否同步

mysql -u root -p

create database master;

show databases; //主服务器创建好数据库,在从服务器上查看,从服务器上也会时时同步*b30d3f4c9568b104f46aaa2dd1a5eab5.png

efa2a999895239114fa85765b8cc26cc.png

d6b69498c8b159cd22d4235612f2714a.png主从同步实验成功!!!

第二部分:配置mysql服务器读写分离

一、在Amoeba服务器上配置:192.168.80.104**

service firewalld stop

setenforce 0

1、安装配置NTP时间服务器:

yum install -y ntpdate

ntpdate 192.168.80.101

echo '/30 * /usr/sbin/ntpdate 192.168.80.181' >> /var/spool/cron/root

crontab -l

2、安装JDK:

Amoeba(变形虫)是基于JDK开发的,所以安装之前要先安装JDK

使用WinSCP将JDK和Amoeba安装包传到服务器上

d8cf0bfdf90d589c66aefbc1c0520506.png

2e655012fe7ea676c7b9be228be59434.png

tar xf jdk-8u144-linux-x64.tar.gz -C /opt

cp -rv /opt/jdk1.8.0_144/ /usr/local/java

vi /etc/profile //末尾新增

export JAVA_HOME=/usr/local/java

export JRE_HOME=/usr/local/java/jre

export PATH=$PATH:/usr/local/java/bin

export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib

:x

source /etc/profile //立即生效

yum install -y unzip

unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/

mv /usr/local/amoeba-mysql-3.0.5-RC/ /usr/local/amoeba

chmod -R 755 /usr/local/amoeba/

vi /usr/local/amoeba/jvm.properties

32行: JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss196k -XX:PermSize=16m -XX:MaxPermSize=96m"

JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k" //增加此行

:x

4、制作amoeba管理脚本

vi /etc/init.d/amoeba

#!/bin/bash

#chkconfig: 35 62 62

#

export JAVA_HOME=/usr/local/java

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

NAME=Amoeba

AMOEBA_BIN=/usr/local/amoeba/bin/launcher

SHUTDOWN_BIN=/usr/local/amoeba/bin/shutdown

PIDFILE=/usr/local/amoeba/Amoeba-MySQL.pid

SCRIPTNAME=/etc/init.d/amoeba

case "$1" in

start)

echo -n "Starting $NAME... "

$AMOEBA_BIN

echo " done"

;;

stop)

echo -n "Stoping $NAME... "

$SHUTDOWN_BIN

echo " done"

;;

restart)

$SHUTDOWN_BIN

sleep 1

$AMOEBA_BIN

;;

*)

echo "Usage: $SCRIPTNAME {start|stop|restart}"

exit 1

;;

esac

chmod +x /etc/init.d/amoeba

chkconfig --add amoeba

service amoeba start

ctrl+z // amoeba启动比较慢,放到后台暂停运行

bg //后台继续运行此进程

netstat -anpt | grep 8066 //默认监听在8066端口

4cd60c6812b5ce3dca6fbd5ea9b8f0f9.png

二、配置读写分离

1、主服务器创建test数据库

mysql -u root -p

create database test;

show databases;

74c7a3c59bf87d7d23d40b1b33577b0c.png

2、在三台mysql数据库中为amoeba授权

GRANT ALL ON . TO test@'192.168.80.%' IDENTIFIED BY '123';

FLUSH PRIVILEGES;

3、在调度服务器Amoeba上配置配置文件

vi /usr/local/amoeba/conf/amoeba.xml

---28行-----设置客户端连接amoeba服务器时使用的用户名和密码----

amoeba

123456 //以上配置用于客户端连接用户名密码

---83-88行--去掉注释-同时把默认的server1改成master,把默认的servers改成 slaves

master

master

slaves

vi /usr/local/amoeba/conf/dbServers.xml

---26-28行--------

test

123

主服务器配置:

43

46 192.168.80.101

从服务器1配置:

--53-从服务器地址-

192.168.80.102

从服务器2配置:

//复制slave1相关代码,设置从2服务器

192.168.80.103/property>

//以下两行修改

--末尾--

slave1,slave2

-------------------------------------------------------------注意--------------------------------------------------------------------------------

test //数据库中要有此处定义的数据库,否则客户端连接后会报如下错误:

ERROR 1044 (42000): Could not create a validated object, cause: ValidateObject failed

service amoeba restart

ctrl+z //停止并放到后台

bg //重启

netstat -anpt | grep java

0a944e25b260018d123957af27c3c6e2.png

第三部分:测试验证

一、测试客户端:192.168.80.105

service firewalld stop

setenforce 0

1、 源码编译安装Mysql:

省略

https://blog.51cto.com/13572519/2116742

2、 测试读写分离:

mysql -u amoeba -p123456 -h 192.168.80.104 -P8066 //amoeba地址

show databases;

c31d2f5bf748413dccee718efddee491.png

//在MASTER上新建的数据库或者里面的表,两台从服务器会同步--通过amoeba操作的

use test;

create table liu (id int(10),name varchar(10),address varchar(20));

show tables; //三台数据库服务器上查看会是相同结果

c5d993855c17aeb3391af760ee0cc87a.png

aaaf80b88ae881de5d96a7e23235c94a.png

b59e2be503533edc82c7db452282ca3f.png

在两台从上停止从服务后:

stop slave;

测试一:在主服务器上插入的内容不会同步-通过amoeba操作的

在客户端上操作:

insert into liu values('1','hahahha','this_is_master');

在主服务器上查看:

use test;

select * from liu;

927e615c8c88633ac2e1bf49157238b8.png

**结论:客户端写数据写到主服务器上

测试二:在从服务器1上新建内容*use test;

insert into liu values('2','liu','this_is_slave1');

----从服务器2上新建内容----

use test;

insert into liu values('3','liu','this_is_slave2');

------在客户端amoeba上测试----第一次会向从服务器1读数据-第二次会向从2读取

select from liu;

a7e0897f1b9be36f96b0025fb11b46e2.png

轮流读取从1从2上的内容

结论:客户端读取数据在从服务器读取,主服务器写的1数据读取不到

测试三:通过客户端连接数据库后写入的数据只有主会记录,然后同步给从-从服务器不会记录,从而实现了读写分离。

客户端写入:

insert into liu values('4','liu','write_test');

在客户端amoeba上看不到新插入的数据--因为同步没有开启-----只有主服务器上可以看到数据。

select from liu; //客户端查看,没有4记录

f1a0534e44069202c98b41140b2dbe69.png

select from liu; //主服务器查看,有4记录

54fe5aa65723dba377b211f38e02c67d.png

在客户端开启同步后,主服务器上数据会同步到各从服务器中,但是从服务器上自己增加的数据不会同步,只在从服务器本地保存

start slave;

select from liu; //两台从服务器上操作

e27659ae59ae8bf68ef3e28030533a69.png

891caeecb73b32ace16bf9305fe48a35.png

select from liu; //在客户端查看会看到主上同步过来的数据,以及自己本地增加的数据,但是看不到其它从上自己增加的数据

74577417cd6f63eb61f54ff7cf8bcad2.png

**结论:

1、主从同步

2、关闭主从同步的话,客户端写的数据写在主服务器上面,在从服务器上轮流读取。

3、从服务器只可以读取本地数据,以及同步的主上面的数据。

实验成功!!!

**

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Google公布OpenFermion:量子计算机的开源软件包

来源:转载自公众号「雷克世界」微信号:ROBO_AI 作者:Ryan Babbush、Jarrod McClean 编译:嗯~阿童木呀、多啦A亮 概要:OpenFermion是一个用于模拟电子(费米子)相互作用系统的库,它能够…

java 类集合_java集合类详解

一、集合类与数组的区别1.集合的长度可变,数组的长度固定;2.集合用来存放对象引用,数组用来存放基本类型的数据;二、集合类的关系1.Collection接口存储一组不唯一、无序的对象。2.List接口存储一组不唯一、有序(插入顺序)的对象。…

英特尔宣布推出“Nervana”神经网络处理器

原作者:Ryan Whitwam 译者:彭婷 概要:Nervana NNP就是基于这种计算设计的。这也是所谓的专用集成电路(ASIC),所以它无法应用于一般的计算任务。 科幻小说家和现代科技大型公司一致认为AI可以开辟出一条康庄…

java爬取button_学习使用Java的webmagic框架爬取网页内容

(一)使用前的配置:2,(1)添加依赖:us.codecraftwebmagic-core0.7.3us.codecraftwebmagic-extension0.7.3us.codecraftwebmagic-selenium0.7.3(2)从GitHub官网下载webmagic的压缩包(https://codeload.github.com/code4craft/webmagic/zip/maste…

异构智能吴韧:物联网是“伪命题”?智联网才是未来

概要:“咨询机构预测,在未来人工智能的市场上12%的比例的资金将用在人工智能芯片上。”吴韧表示,异构智能瞄准的就是人工智能本地芯片市场。 Novumind异构智能(以下简称异构智能)在火热的人工智能新闻里出现的次数屈指…

java栈编程题_Java实现栈和队列面试题

面试的时候,栈和队列经常会成对出现来考察。本文包含栈和队列的如下考试内容:(1)栈的创建(2)队列的创建(3)两个栈实现一个队列(4)两个队列实现一个栈(5)设计含最小函数min()的栈,要求min、push、pop、的时间复杂度都是O(1)(6)判断栈的push和p…

联合国《2017年信息经济报告》

来源:联合国 概要:数字经济已经深入到了人们生活的衣食住行等所有方面,其发展速度和方式超出人们的想象。数字经济将把人类带往何方?这还是一个难解的谜题。 数字经济已经深入到了人们生活的衣食住行等所有方面,其发展…

Amazon、Google、 Microsoft和IBM如何将人工智能作为一项服务出售

译者:李凌 概要:Alphabet、Amazon和Microsoft这几家公司都发现,在产品中植入人工智能后能让产品变得更加优秀,他们可以将这种做法转变成一项服务,然后作为一种基于蓬勃发展的云计算业务的增值服务出售给企业客户。 云计…

CB Insights发布2017全球AI企业100强,出门问问、碳云智能入选

来源:亿欧 概要:在美国加州圣芭芭拉举办的创新峰会(TheInnovation Summit)上,CB Insight的CEO Anand Sanwal揭晓了全球2017 AI100名单,评选出全球最有创新实力的100家AI公司,国内公司出门问问、…

Java树形转扁平_js把树形数据转成扁平数据

我就直接上代码了都是实际项目里面用到的1.假设这个json就已经是树型结构数据了(如果不知道怎么实现树型结构数据请看我另一篇博客)var compressedArrafcommon.treeDataToCompressed(json);/*******************************JS封装好的方法***********************************…

定位AI交互技术服务商,声智科技完成近亿元A轮融资,将拓展安防、汽车等新场景

来源:36Kr 摘要:“语音交互是人工智能相关技术的重要应用场景,而语音交互的核心和关键突破点在于远场。而国内真正有实力做好远场技术的团队是非常稀少的。” 定位人工智能交互技术服务商的声智科技(SoundAI)&#xff…

德国电信:5G有重复3G命运的风险!

来源:5G 摘要:德国电信:5G有重复3G命运的风险! 行业深度观察

DARPA发布产业振兴计划,继承摩尔智慧

来源: 传感器与物联网 摘要:高登摩尔(Gordon Moore)赖以成名的摩尔定律(Moores law)几十年来一直引导着产业的发展,也为DARPA日前发布的“电子产业振兴计划”(ERI)计划附加条例提供许多想法。 根据美国国防部先进研究计划署(DARPA)微系统技术…

图解全球无人驾驶产业链:这些公司在主宰人类出行的未来

来源:战略前沿技术、华尔街见闻 摘要:与通常的报告不同,Comet Labs图表集合了整个产业链。 无人驾驶技术可以算是如今硅谷创投中最火的名词。作为人工智能的终极场景,无人驾驶技术已经成为了许多创业公司和投资者参与AI的机会。 …

2017全球最具影响力机器人公司TOP排行榜

来源: Future智能 摘要:全球最有影响力的 50 家机器人行业上市公司和非上市公司名单。 近日,美国《机器人商业评论》公布了它们的第六个年度「RBR50 名单」,即 2017 年《机器人商业评论》认为最值得关注、全球最有影响力的 50 家机…

AI公共政策成全球热点,美国ITI发布《人工智能政策原则》|AI观察

来源:腾讯研究院 概要:AI研究开发和行业应用的热度仍在持续,在此背景下,AI公共政策成为了全球公私部门关注的热点。 一、AI公共政策成AI领域全球热点 AI研究开发和行业应用的热度仍在持续,在此背景下,AI公共…

Java做抽卡_游戏王:无限抽卡怎么做?拥有这一套组合你就能抽完整个卡组!...

各位游戏王的小伙伴们大家好,今天咱要讲解的事情是如何将自己的牌组全部抽完,当然这和游戏王一代的剧情(法老王对战马利克)可不是一样的,不是让对方抽到没有卡抽后直接输局,而是通过自己的套路组合抽到自己想要的卡片并一举拿下胜…

什么是数据科学?数据科学的基本内容

来源:36大数据 概要:现代社会的各行各业都充满了数据,这些数据的类型多种多样,不仅包括传统的结构化数据,也包括网页、文本、图像、视频、语音等非结构化数据。 什么是数据科学?它和已有的信息科学、统计学…

Java实现熵值法计算_熵值法确定权重的步骤及适用范围

日常工作中经常需要确定各个指标的权重,利用熵值法确定权重属于客观赋权法,从数据出发,避免过强的主观性,但是也同时带来了一些问题。在某个论坛的帖子中,作者提出了这样的一个问题:“熵值法用于确定权重是…

终于,Geoffrey Hinton那篇备受关注的Capsule论文公开了

来源:机器之心 概要:9 月份,Axios 的一篇报道指出,Geoffrey Hinton 呼吁研究者们对反向传播保持怀疑态度,并准备在深度学习之上重构人工智能的理论体系。 9 月份,Axios 的一篇报道指出,Geoffrey…