Centos7 下 mysql 5.7通过 amoeba 读写分离

Centos7 下 MYSQL 读写分离

mysql介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

安装前准备

3台mysql服务器 (本次使用的是3台5.7版本的mysql)

一台 centos 服务器 (用作安装 amoeba)

amoeba安装包 java环境包

实验步骤

关闭防火墙自启动,以及相关功能和增强性安全功能

 systemctl stop firewalld.service
 setenforce 0

时间同步

yum install ntp -y

vim /etc/ntp.conf
在配置文件中添加
server 127.127.100.0    ##本地是时钟源
fudge 127.127.100.0 stratum 8    ##设置时间层级为8

service ntpd start    ##开启服务

/usr/sbin/ntpdate 192.168.100.100   ##进行时间同步

mysql主服务器上配置

vim /etc/my.cnf
在[mysqld] 下添加
server-id=1
log-bin=master-bin      ##主服务器日志文件
log-slave-updates=true      ##从服务器更新二进制日志

service mysqld restart
mysql -u root -p     ##进入mysql数据库
GRANT REPLICATION SLAVE ON *.* TO ‘myslave‘@‘192.168.100.%‘ IDENTIFIED BY ‘123456‘;             ##  给予回应从服务器的权限

FLUSH PRIVILEGES;    ##刷新数据

show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 |      339 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql从服务器配置

vim /etc/my.cnf
在 [mysqld]下添加
server-id=11
relay-log=relay-log-bin      ##从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index     ##定义relay-log的位置和名称

##   第二台从服务器的 serverid不能相同

service mysqld restart   ##重启服务
mysql -u root -p    ##进入mysql数据库

change master to master_host=‘192.168.100.100‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000002‘,master_log_pos=339;     ##配置主服务器

start slave;   ##开启同步

show slave status \G;     ##查看同步状态

验证主从服务器是否开启成功

在主服务器上
create database test;
在从服务器上
show databases;
能看到test 则说明成功

安装amoeba服务 并进行配置

推荐使用java 1.6的环境包
cp jdk-6u14-linux-x64.bin /usr/local/
/usr/local/jdk-6u14-linux-x64.bin
一直往下  接着输入 yes , 再按 enter
稍等一会 配置完成java环境

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

vim /etc/profile
在最后添加
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$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   ##使配置生效

mkdir /usr/local/amoeba   ##创建amoeba服务器位置

tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/     ##解压amoeba

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

/usr/local/amoeba/bin/amoeba
##显示amoeba start|stop说明安装成功

在三台mysql上添加权限开放给amoeba访问
grant all on *.* to [email protected]‘192.168.100.%‘ identified by ‘123.com‘;

回到amoeba服务器
cd /usr/local/amoeba
vim conf/amoeba.xml

---30行--
##用户名
 <property name="user">amoeba</property>
----32行---------
##密码
 <property name="password">123456</property>

---117-去掉注释-
 <property name="defaultPool">master</property>        ##默认池
 <property name="writePool">master</property>       ##写入池
 <property name="readPool">slaves</property>       ##读取池

vi conf/dbServers.xml

--23-- mysql服务器的通用数据库名称--
<property name="schema">mysql</property>
--26-29--去掉注释--
 <property name="user">test</property>

 <property name="password">123.com</property>

-----42-主服务器地址---
<dbServer name="master"  parent="abstractServer">
 <property name="ipAddress">192.168.100.100</property>
--52-从服务器主机名-
<dbServer name="slave1"  parent="abstractServer">
--55-从服务器地址-
 <property name="ipAddress">192.168.100.101</property>

将从服务器的6行复制 并配置 slave2 和其ip地址

-----63-从服务器地址池---
 <dbServer name="slaves" virtual="true">
 <poolConfig
--末尾--
<property name="poolNames">slave1,slave2</property>
 </poolConfig>

/usr/local/amoeba/bin/amoeba start&    ##开启服务
 netstat -anpt | grep java
 看到8066 表示服务开启成功
 看到主从服务器的地址 表示连接数据库成功

测试

在一台已经安装mysql服务器的电脑上

mysql -u amoeba -p123456 -h 192.168.100.100 -P8066
## 通过amoeba 登录

--在主服务器上--
create database zzz;
create table test (id int(10),name varchar(10),address varchar(20));

--在两台从服务器上--
stop slave;     ##关闭同步

--在主服务器上--
use zzz;

insert into test values(‘1‘,‘abc‘,‘this_is_master‘);

--在从服务器1上--
use zzz;

insert into test values(‘2‘,‘abc‘,‘this_is_slave1‘);

--在从服务器2上--
use zzz;

insert into test values(‘3‘,‘abc‘,‘this_is_slave2‘);

------在客户端上测试----第一次会向从服务器1读数据-第二次会各从2读取
select * from test;

一次显示id为2的数据  一次显示id为3的数据

-------------在通过客户端连接数据库后写入的数据只有主会记录,然后同步给从-从服务器不会记录,从而实现了读写分离。----
insert into test values(‘5‘,‘abc‘,‘this_is_client‘);

--在主服务器上可以看到写入的数据--
select * from test;
可以看到id 为 1 和 5的数据

--在从服务器上--
start slave; 开启同步

--在客户端--
select * from test;
一次会显示 id为 1 2 5 的数据
一次会显示 id 为 1 3 5 的数据

至此 mysql的读写分离安装完成

原文地址:http://blog.51cto.com/13625924/2145043

时间: 2025-01-08 18:09:26

Centos7 下 mysql 5.7通过 amoeba 读写分离的相关文章

mysql双击热备+amoeba读写分离

Mysql读写分离是为了提高网站的访问速度,提高数据库的并发负载能力. 但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力, 这样的方案来进行部署与实施的. 注意:先做主从复制,再度读写分离. MySQL主从复制结构是基于mysql bin-log日志基础上,从库通过打开IO进程收到主库的bin-log

Centos7 下mysql大小写敏感问题

在Centos7 下mysql大小写敏感问题,会导致程序运行时找不到对应的表. 解决办法: 第一步:编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_names=1 参数,并设置相应的值 (备注:为0时大小写敏感,为1时大小写不敏感,默认为0). (必须是在[mysqld]节点下添加,否则没有效果) 第二步:重启mysql # service mysqld restart 第三步:查看mysql的参数 # mysql -uroot -p 原文地址:h

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力.这种

高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

点击链接加入群[Dubbo技术交流2群]:https://jq.qq.com/?_wv=1027&k=46DcDFI 一.环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso JDK版本:jdk1.7.0_45 MyCat版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz MyCat节点IP:192.168.1.203      主机名:edu-mycat-01  主机配置:4核CPU.4G内存 MySQL版本:

MySQL/MariaDB基于MMM实现读写分离及高可用

前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的). MMM 优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepal

mysql主从及amoeba读写分离

简介: Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡.读写分离.高可用性等需求. 拓扑图: 搭建mysql的主从复制环境: ip地址为192.168.150.135作为MASTER 修改my.cnf [[email protected] ~]# vim/etc/my.cnf  [mysqld] port            = 3306 bi

Mysql主从+Amoeba读写分离

一.安装环境 centos6.5 192.168.1.100 Amoeba-mysql centos6.5 192.168.1.101 mysql-主 centos6.5 192.168.1.102 mysql-从 二.Mysql 主从配置 在主MySQL192.168.1.101上配置 Vim /usr/local/mysql/etc/my.cnf server-id       = 1                     主库一定要比从库的数字小 binlog-do-db    = ba

Linux—Centos7.4之搭建Mysql数据库主从同步、读写分离

MySQL主从同步与读写分离 目录第一部分 实验环境第二部分 配置主从同步第三部分 配置读写分离第四部分 测试验证 第一部分 实验环境 实验拓扑图: 服务器五台:1)客户端服务器一台:IP地址:192.168.80.10(client)需安装软件:mysql-boost-5.7.20.tar.gz 2)Amoeba调度服务器一台:IP地址:192.168.80.20(amoeba)需安装软件:jdk-8u144-linux-x64.tar.gzamoeba-mysql-3.0.5-RC-dist

CentOS7下mysql安装

CentOS7下安装MySQL --下载mysql http://mirrors.sohu.com/mysql/MySQL-5.6/ http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar 一.准备工作 --下载后文件 MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar --新建文件夹 mkdir /home/www/