百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

「学员笔记」LINUX随堂笔记(十四):MySQL主从及读写分离

bigegpt 2024-08-18 13:59 4 浏览

第15章 MySQL主从及读写分离

一. 简介

MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,有主从复制完成了,才能完成读写分离。只读写分离就是只在主服务器上写,只在从服务器上读,是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。

二. mysql主从复制

2.1实验拓扑图

2.2主服务器配置

1.安装mysql

2.编辑配置文件vim /etc/my.cnf

server-id = 1

log-bin=master-bin

#log-slave-updates=true

1.1 数据库创建密码 登陆

#mysqladmin –u root password 123456

#mysql –u root –p

1.2 数据库添加允许从slave 登陆

mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'

192.168.1.%' IDENTIFIED BY '123456';

mysql> FLUSH PRIVILEGES;

mysql> show master status; //查看端口和密码

# service mysqld restart

2.3从服务器

2.1 安装mysql

2.2 编辑配置文件 vim /etc/my.cnf

# vim /etc/my.cnf

server-id = 2

上面出现的2行注释掉

#relay-log=relay-log-bin

#relay-log-index=slave-relay-bin.index

# service mysqld restart

2.3 数据库给root用户添加密码

#mysqladmin –u root password 123456

#mysql –u root –p

2.4 添加主服务器的信息

mysql>change master to

master_host='192.168.1.5',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1341; //文件和端口需要自己查看

mysql> start slave;

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

三. mysql读写分离

3.1在代理服务器Amoeba上安装Java环境

/路径/

需要软件包:jdk-6u14-linux-x64.bin

# chmod +x /usr/local/jdk-6u14-linux-x64.bin

# cd /usr/local/

# ./jdk-6u14-linux-x64.bin

# mv jdk1.6.0_14/ /usr/local/jdk1.6

# vim /etc/profile //配置环境变量

export JAVA_HOME=/usr/local/jdk1.6

export CLASSPATH=$CLASSPATH:$JAVA_HOME/bin:$JAVA_HOME/jre/lib

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

export AMOEBA_HOME=/usr/local/amoeba/

export PATH=$PATH:$AMOEBA_HOME/bin

# source /etc/profile

# java -version //查看jave版本 1.6.0

3.2安装并配置Amoeba软件

# mkdir /usr/local/amoeba

# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

# chmod -R 755 /usr/local/amoeba/ //给执行权限

# /usr/local/amoeba/bin/amoeba start

# /usr/local/amoeba/bin/amoeba start

log4j:WARN log4j config load completed from file:/usr/local/amoeba/conf/log4j.xml

2017-03-17 16:43:58,943 INFO context.MysqlRuntimeContext - Amoeba for Mysql current versoin=5.1.45-mysql-amoeba-proxy-2.2.0

log4j:WARN ip access config load completed from file:/usr/local/amoeba/conf/access_list.conf

2017-03-17 16:43:59,643 INFO net.ServerableConnectionManager - Amoeba for Mysql listening on /192.168.1.1:3306.

2017-03-17 16:43:59,681 INFO net.ServerableConnectionManager - Amoeba Monitor Server listening on /127.0.0.1:32475.

3.3配置文件 am账户 mysql账户

1.配置am账户文件

vim /usl/local/amoeba/bin/amoeba.xml

<property name="port">3306</property> //最好修改端口为3306,默认端口

<property name="authenticator">

<property name="user">root</property> //登陆代理数据库的用户名

<property name="password">123456</property> //登陆代理数据库的密码

<property name="LRUMapSize">1500</property>

<property name="defaultPool">master</property> //默认服务器名称

<property name="writePool">master</property> //读的服务器名称

<property name="readPool">slave</property> //写权限的的服务器名称

<property name="needParse">true</property>

2.配置mysql账户文件

vim /usl/local/amoeba/bin/dbServers.xml

<property name="port">3306</property> //默认登陆端口

<property name="user">test</property> //登陆数据库的用户名

<property name="password">123456</property> //登陆数据库的密码

<property name="ipAddress">192.168.1.5</property> //master 服务器的ip

<property**name="ipAddress">192.168.1.132</property> //slave服务器的ip

<property name="poolNames">slave</property> //服务器名称写入地址池中

3.4客户机测试

1.在每个SQL上开发全新的Amoeba访问

mysql> grant all on *.* to ’test’@'192.168.1.%' identified by '123.com';

2. 192.168.1.111客户机

登陆测试

# mysql -u test -p 123456 -h 192.168.1.1 -P 3306

123456

enter ok

3.在主服务器Master上创建表

mysql> use db_test;

mysql> create table zang (id int(10),name varchar(10),address varchar(20));

4.在从服务器停止 slave

mysql> stop slave;

5.在主服务创建数据

mysql> insert into zang values('1','zhang','this_is_master');

6.从服务器创建数据

mysql> use db_test;

mysql> insert into zang values('2','zhang','this_is_slave1');

7.在Client查询

mysql> use db_test;

mysql> select * from zang;

mysql> insert into zang values('3','zhang','this_is_amoeba')

「学员笔记」LINUX随堂笔记(十三)Keepalive+lvs主从dr负载均衡

「学员笔记」LINUX随堂笔记(十二)Keepalive+lvs主从dr负载均衡

「学员笔记」LINUX随堂笔记(十一):LVS负载均衡群集

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...