1.  基本环境

4台内网虚拟机的操作系统都是ubuntu-14.04.4 64位

IP为:192.168.169.11、192.168.169.12、192.168.169.13、192.168.169.14

MySQL 4台2读2写,2写互为主从,2组1读1写为主从备份,Amoeaba安装在任一机器上,物理分离更好

2. 安装mysql

#apt-get update

#apt-get install mysql-server (root/admin)

== 已开机自启动

#mysql -V

#mysql -u root -p

#mysql -h 192.168.169.11 -u root -p #远程登录

mysql> show databases;

mysql> show global variables like 'port'; 查看端口号

mysql> show processlist;

== 设置允许远程登录,共2步

== 第一步:

#vim /etc/mysql/my.cnf

== 注释掉下面这行

#bind-address = 127.0.0.1

== 第二步:

mysql> use mysql

mysql> select host,user,password from user;

mysql> update user set host='%' where user='root' and host='localhost';

mysql> flush privileges;

mysql> exit

3. MySQL 主从同步

== 主 192.168.169.11 & 192.168.169.12 (2写)

mysql> grant REPLICATION SLAVE ON *.* TO 'repl'@'192.168.169.%' IDENTIFIED BY 'admin';

== [mysqld]下面增加下面几行代码

#vim /etc/mysql/my.cnf

server-id = 11

log_bin = /var/log/mysql/master-bin

log_bin_index = master-bin.index

log_slave_updates = 1 //很重要,从前一台机器上同步过来的数据才能同步到下一台机器,当有2台写数据库时,需此设置

relay_log = /var/log/mysql/slave-relay-bin.index  //relay_log其实是从的一端设置,因为11/12互为主从,所以也要设置

relay_log_index = slave-relay-bin.index

general_log = 1

general_log_file = /var/log/mysql/mysql.log   //打开普通log,这样负载均衡设置完后,可以看到插入查询发生在具体哪个MySQL上

#reboot

==reboot后,自动开启master

mysql> show master status;

== 同步时,暂时锁住表,解锁

mysql> flush tables with read lock;

mysql> unlock tables;

== 从 192.168.169.13 & 192.168.169.14 (2读)

== [mysqld]下面增加下面几行代码

#vim /etc/mysql/my.cnf

server-id = 13

relay_log = /var/log/mysql/slave-relay-bin.index

relay_log_index = slave-relay-bin.index

general_log = 1

general_log_file = /var/log/mysql/mysql.log

#reboot

== reboot后,自动开启slave

mysql> change master to

master_host='192.168.169.11',      //11、12互为主从,11、13主从,12、14主从,从的一端都要配一下

master_port=3306,

master_user='repl',

master_password='admin',

master_log_file='master-bin.000003', //show master status; 的File值

master_log_pos=0; //show master status; 的Position值

== 启动Slave同步进程

mysql> start slave;

mysql> stop slave;

mysql> show slave status\G

== 若无法连接master

mysql> reset slave;

mysql> change master to ...... //上面的change命令再执行一遍

//检查下吧,插入一条记录到11,看看12/13/14有同步么?  11->12, 11->13, 11>12->14,插入一条到12,也应该一样

4. 安装Amoeba

== 所有mysql都新增用户

mysql> grant all ON *.* TO 'amoeba'@'192.168.169.%' IDENTIFIED BY 'admin';

#tar -zxvf amoeba-mysql-binary-2.2.0.tar.gz –C /usr/local/servers/amoeba-mysql-binary-2.2.0

#vim ./conf/dbServers.xml

<dbServer name="abstractServer" abstractive="true">

<factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">

<property name="manager">${defaultManager}</property>

<property name="sendBufferSize">64</property>

<property name="receiveBufferSize">128</property>

<property name="port">3306</property>

<property name="schema">ssh</property>

<property name="user">amoeba</property>

<property name="password">admin</property>

</factoryConfig>

<poolConfig ...>

</dbServer>

<dbServer name="master1" parent="abstractServer">

<factoryConfig>

<property name="ipAddress">192.168.169.11</property>

</factoryConfig>

</dbServer>

<dbServer name="master2" parent="abstractServer">

<factoryConfig>

<property name="ipAddress">192.168.169.12</property>

</factoryConfig>

</dbServer>

<dbServer name="slave1" parent="abstractServer">

<factoryConfig>

<property name="ipAddress">192.168.169.13</property>

</factoryConfig>

</dbServer>

<dbServer name="slave2" parent="abstractServer">

<factoryConfig>

<property name="ipAddress">192.168.169.14</property>

</factoryConfig>

</dbServer>

<dbServer name="masters" virtual="true">

<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->

<property name="loadbalance">1</property>

<property name="poolNames">master1,master2</property>   //设成这样master1,master1,master2,表示2:1

</poolConfig>

</dbServer>

<dbServer name="slaves" virtual="true">

<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->

<property name="loadbalance">1</property>

<property name="poolNames">slave1,slave2</property>

</poolConfig>

</dbServer>

#vim ./conf/amoeba.xml

<property name="authenticator">

<bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">

<property name="user">amoeba_user</property>

<property name="password">admin</property>

<property name="filter">

<bean class="com.meidusa.amoeba.server.IPAccessController"></bean>

</property>

</bean>

</property>

<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">

<property name="ruleLoader">

<bean class="com.meidusa.amoeba.route.TableRuleFileLoader">

<property name="ruleFile">${amoeba.home}/conf/rule.xml</property>

</bean>

</property>

<property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property>

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

<property name="defaultPool">masters</property>

<property name="writePool">masters</property>

<property name="readPool">slaves</property>

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

</queryRouter>

#/usr/local/servers/amoeba-mysql-binary-2.2.0/bin/amoeba start &

#mysql -u amoeba_user -p -h 192.168.169.14 -P8066

== 启动报错下列错误的话,修改amoeba & amoeba.bat

The stack size specified is too small, Specify at least 228k

Error: Could not create the Java Virtual Machine.

#vim amoeba

#vim amoeba.bat

DEFAULT_OPTS="-server -Xms1024m -Xmx1024m -Xss256k"

5. 应用程序

Java应用程序只要连 jdbc:mysql://192.168.169.14:8066/ssh?useUnicode=true&amp;characterEncoding=utf-8

备注:存在Amoeba单点,需要进一步热备Amoeba,完善方案

其实最简单的方法是Amoeba可以配2个,应用程序端弄2个数据源

MySQL + Amoeba 负载均衡、主从备份方案的更多相关文章

  1. keepalived和lvs实现mysql读负载均衡

    keepalived+lvs实现对mysql读负载均衡 环境:redhat 6.5 real server: 172.25.254.189 172.25.254.224 lvs: 172.25.254 ...

  2. nginx 实现mysql的负载均衡【转】

    默认Nginx只支持http的反向代理,要想nginx支持tcp的反向代理,还需要在编译时增加tcp代理模块支持,即nginx_tcp_proxy_module 下面操作步骤只让nginx支持tcp_ ...

  3. mysql数据库负载均衡高可用之主从、主主备份,实时同步

    一:MySQL Replication 什么是MySQL Replication Replication可以实现将数据从一台数据库服务器(master)复制到一或多台数据库服务器(slave) 默认情 ...

  4. keepalived容灾方案,实现nginx负载均衡主从架构(1)

    一:环境准备:4台nginx服务器,两台用yum安装,两台使用源码安装 第一步:使用yum安装nginx服务器,在浏览器输入ip,可以显示以下内容,这步比较简单,安装好修改/usr/share/ngi ...

  5. SQL Server 负载均衡集群方案之Moebius

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...

  6. Keepalived+Nginx提供前端负载均衡+主从双机热备+自动切换

    原文链接:http://unun.in/linux/156.html 方案: 采用两台Nginx服务器作为前端,提供静态web内容,分发web请求,一主一从,Keepalived实现状态监测,保证 N ...

  7. 变形虫mysql的负载均衡 读写分离

    变形虫概述 图片来自   http://docs.hexnova.com/amoeba/amoeba-products.html  文档上说也可以做mongdb的分布式. 应用: 具有负载均衡.高可用 ...

  8. MySQL Route负载均衡与读写分离Docker环境使用

    Docker环境描述 主机名 部署服务 备注 MySQL Route MySQL Route 部署在宿主机上的MySQL Route服务 MySQL Master1 MySQL 5.7.16 Dock ...

  9. 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离

    技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...

随机推荐

  1. python mysql创建表

    表设计 表:student 字段名 类型 是否为空 主键 描述 StdID int 否 是 学生ID StdName varchar(100) 否 学生姓名 Gender enum('M','F') ...

  2. Python的Web编程[1] -> Web服务器[0] -> Web 服务器与 CGI / WSGI

    Web服务器 / Web Server 对于Web来说,需要建立一个Web服务器,必须建立一个基本的服务器和一个处理程序, 基本服务器的主要作用是,在客户端和服务器端完成必要的HTTP交互, 处理程序 ...

  3. Xamarin XAML语言教程基本页面ContentPage占用面积

    Xamarin XAML语言教程基本页面ContentPage占用面积 基本页面和基本视图都是在开发应用程序时最为常用的.本章将讲解有关基本页面ContentPag.基本视图ContentView.控 ...

  4. bzoj 5163: 第k大斜率

    5163: 第k大斜率 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 15  Solved: 4[Submit][Status][Discuss] D ...

  5. Maven创建多模块项目(包括依赖版本号的统一更新)

    0.多项目工程的文件夹及依赖关系 bus-core-api为公共项目,app-web-ui依赖bus-core-api,app-desktop-ui依赖bus-core-api 1.创建一个父Mave ...

  6. Flex this

    为了便于对比和叙述,我们先上一段最简单的js+html代码:<input type="button" value="test" id="htmB ...

  7. sqlserver 出现sql被锁时,查看加锁和被锁的sql

    原文:sqlserver 出现sql被锁时,查看加锁和被锁的sql DECLARE @spid INT DECLARE @blk INT DECLARE @count INT DECLARE @ind ...

  8. 任务驱动,学习.NET开发系列第2篇------单词统计

    一 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分人学习软件开发技术是通过看书,看视频,听老师上课的方式.这些方式有一个共同点即按知识点进行讲解.比如拿c#编程为例,首先是讲解大量的基础概念 ...

  9. tiny4412 串口驱动分析二 --- printk的实现

    作者:彭东林 邮箱:pengdonglin137@163.com 开发板:tiny4412ADK+S700 4GB Flash 主机:Wind7 64位 虚拟机:Vmware+Ubuntu12_04 ...

  10. 墨卡托投影、高斯-克吕格投影、UTM投影及我国分带方法

    转自原文 墨卡托投影.高斯-克吕格投影.UTM投影及我国分带方法 一.墨卡托投影.高斯-克吕格投影.UTM投影 1. 墨卡托(Mercator)投影 墨卡托(Mercator)投影,是一种" ...