Mysql实现主从复制,利用Amoeba实现读写分离

1.数据库主从复制:

说明:由于传统的数据库设计在数据备份时,不能满足业务条件,可能会造成数据丢失,为了防止数据丢失采用实时备份.

方式:Mysql主从复制技术

主从复制原理:

 

1.角色划分:

主库Master:主要进行的是数据的"更新操作"

从库Slave: 实时备份主库的更新信息

二进制日志:实时记录主库的更新操作,并且形式二进制码.

中继日志:  保存主库的更新信息

2.调用原理

1.当主库更新数据后,会实时的写入到二进制日志文件中

2.从库的IO线程,实时的监听主库的二进制文件,如果二进制文件发送了改变则启动线程进行读取修改后的内容.

3.通过IO线程将读取的二进制文件写入到中继日志中.

4.Sql线程实时读取中继日志中的消息,进行数据库的"更新操作"


2.数据库主从复制的搭建:

1.克隆linux系统

 



2.linux系统的配置:

 

固定LinuxIP地址:

 

1.配置linux数据库环境

1.编辑脚本环境

能够快速跳转到某一个文件夹


2.跳转文件

.Go

3.创建mysql文件夹


4.解压mysql


5.安装步骤

先安装debugingo-->shared--->client--->server四个

 

 

5.启动服务

service mysqlstart

6.导入jt.sql文件(这个是自己随便编辑的sql文件都行)


7.设置用户名和密码

mysqladmin -uroot password "root"

8.打开3306端口号

iptables -IINPUT -p tcp --dport 3306 -j ACCEPT

Serviceiptables stop   //关闭防火墙

9.开放端口生效

/etc/rc.d/init.d/iptablessave       可以不执行

10.查看当前端口开放情况

/etc/rc.d/init.d/iptablesstatus;

 

3.赋予登录权限

说明:权限赋值的操作必须在mysql环境下运行

语法:

grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码'];

grant all on *.* to 'root'@'%'identified by 'root';

或者指定IP地址

grant all on *.* to'root'@'192.168.1.103' identified by 'root';

4.通过工具远程连接数据库

 

5.开启二进制日志文件

/etc/my.cnf

 

    server-id=1      //唯一标识数据库

    log-bin=mysql-bin   //开启二进制日志文件

   之后保存退出

6.重新启动服务

Servicemysql   stop

servicemysql start

7.查看日志文件

/var/lib/mysql/   下有日志文件

 

8.配置从机

1.将主机master克隆

2.固定从机的IP地址

 

3.修改从机mysql的序列号:

目的:mysql完全的不同

由于Masql是克隆的,/var/lib/mysql/auto.cnf中有UUID对数据库进行标识,所以需要进行修改

 

修改service-id

Service-id=2

4.启动slave数据库

 


5.查询master状态码

 

6.为从节点挂载主机

/*配置注解主机名/端口号/用户名/密码*/

change masterto MASTER_HOST='192.168.247.133',MASTER_PORT=3306,

MASTER_USER='root',MASTER_PASSWORD='root',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=120

/*启动从服务*/

start slave

/*查看状态*/

show slavestatus;

如果出现两个yes则表示加载成功

 

7.如果启动失败

 

需要从新启动mysql,重新挂载.

9.数据库的读写分离

说明:

由于数据库没有优化,会导致主数据库的压力较大.

策略:

如果是读的操作,都访问从数据库.

如果是写的操作.都访问主数据库.

介绍:

概述

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。

Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS原则的思想。

优势

Amoeba主要解决以下问题:

a). 数据切分后复杂数据源整合

b). 提供数据切分规则并降低数据切分规则给数据库带来的影响

c). 降低数据库与客户端连接

d). 读写分离路由

通过Amoeba实现读写分离

安装:

10.需要依赖JDK

根据profile中的路径.解压JDK即可

1.配置JDK

 

2.安装amoeba


3.查看配置文件

 

4.修改dbServer.xml

通过工具连接远程客户机

 

 

 

 需要配置2-3

5.修改amoeba.xml

1.默认端口号8066

 

2.添加数据库密码

 

3.添加读写分离


4.指定栈空间

编辑launcher启动文件 分配内存空间

#配置jdk内存空间

DEFAULT_OPTS="-server-Xms256m -Xmx256m -Xss256k"

 

建议使用第二种

2.修改JVM.properties   适当的调整内存空间,否则将不会生效

JVM_OPTIONS="-server-Xms512m -Xmx1024m -Xss512k -XX:PermSize=16m-XX:MaxPermSize=96m"

5.启动Amoeba

./launcher 执行启动命名

 

6.打开端口8066

iptables -IINPUT -p tcp --dport 8066 -j ACCEPT

/etc/rc.d/init.d/iptablessave    //让端口生效

/etc/rc.d/init.d/iptablesstatus  //查看端口是否打开

7.如果端口占用查看那PID之后kill杀死

 isof -i:8066 

java    4837 root  64u  IPv6  32545     0t0  TCP *:8066 (LISTEN)

Kill -9 4837

8.项目测试:

1.修改项目JDBC连接

2.修改数据

猜你喜欢

转载自blog.csdn.net/wsywb111/article/details/80292165