使用amoeba实现mysql_使用Amoeba实现MySQL的主从读写分离的例子

时间:2020-11-21  来源:mysql教程  阅读:
主从同步架构的优点 读取工作交给了从服务器,降低了主服务器的压力 在从服务器进行备份,避免备份期间影响主服务器服务 当主服务器出现问题时,可以切换到从服务器。 Amoeba介绍  代码如下 Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能。本次主要用到的就是Amoeba for Mysql这个软件。  Amoeba for Mysql主从分离模式 MySQL的主从同步配置 实验环境 服务器类型:虚拟机 系统: CentOS release 6.8 (Final) MySQL: 5.1.73 主数据库: 172.16.2.239 从数据库: 172.16.2.230 配置主库
    本次操作使用yum服务进行安装,输入yum -y install mysql(注:-y 表示安装过程自动选择’y’) service mysql start 启动MySQL服务 在root账户下使用 mysqladmin -u root password ‘newpassword为mysql的root账户设置密码(注:首次登录root账号没有密码,直接回车进入,但没有设置密码无法进行很多操作) mysql -u root -p 输入密码后登录 grant replication salve on *. * to ‘root’@’172.16.2.230’ identified by ‘123456’ (添加从库到本机同步的远程账号下,root是账号,ip为从库地址,123456为登录密码) select user, host,password from mysql.user查看是否创建成功并查看有无账号密码为空的账户,并删除(注:这步不是必须,空账户的存在会影响登录,这是在遇到问题之前先进行排除) vim /etc/my.cnf 
    my.cnf内容
    (server-id 不能与其它节点重复,replicate_ignore_db设置了不进行同步的databases) 退出MySQL,service mysqld restart重启后登录,查看server_id 以及 File+position信息并记录 
    master status
配置从库
    在172.16.2.230上开始配置从库,安装过程参照主库(这里笔者使用的是默认数据库作为主从,所以直接用yum安装从库,如果主库有改动需要保持一致则使用dump备份并在从库节点上恢复的方式配置) vim /etc/my.cnf 编辑配置文件 
    从库配置 
    (注:这里的server-id一定不能与主库相同) service mysqld restart重启数据库 mysql -u root -p -h 172.16.2.239验证连接主库(此处的root为在主库中授权过的账号) 退出远程连接,换为本地root账号登录,SHOW VARIABLES LIKE ‘server_id’查看ID号确认是否和主库重复 slave stop;关闭同步服务 change master to master_host=’172.16.2.239’, master_user=’root’, master_password=’123456’, master_log_file=’master_bin.000019’, master_log_pos=106;(注:此处的master_user为授权的账号,log_file和pos为之前主库上查看的记录,见上面第8步。如果在主库中在未同步的情况下使用过flush privileges命令刷新过数据库的话,log_file会自动+1) slave star**t 打开同步,**show slave status查看状态 
    同步状态
    这里主要注意的是Slave_IO_Running 和 shlave_SQL_Running是否为Yes,如果为NO,注意检查配置 检查完状态后可以在主库中的test库中建立一张表,写入完成后便能再从库中查看,同步完成
安装配置 Amoeba 1.配置JAVA环境 此处需要下载JDK,笔者图方便直接从yum上进行下载安装,yum -y install java-1.6.0-openjdk 这里使用的是1.6的版本。也可以直接使用wget 到Oracle上进行下载,只不过需要解压建立连接等操作。 
vim /etv/profile 进行java环境变量的配置,注意下载方式不同,路径也不同 
环境变量
完成后执行source profile ,使用java -verison查看 
2. 安装Amoeba
wget https://sourceforge.net/projects/amoeba/files/Amoeba_for_mysql/2.2.x/amoeba-mysql-binary-2.2.0.tar.gz/download

mkdir /usr/local/amoeba-2.2.0
tar xvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba-2.2.0
3.配置Amoeba vim /usr/local/amoeba-2.2.0/conf/dbServers.xml 
这里写图片描述 port = 3306指的是主从数据库的端口号 schema = test指的是amoeba代理数据库的名称 user = root 以及 password 是amoeba登录主从服务器的账号密码,因此要注意这里的账户必须有访问两个数据库的权限才行 这里写图片描述 这里的localhost指的是主库的代号,底下的ipAddress为主库地址 slave指的是从库的代号,底下的ipAddress为从库地址 轮询的主和从的读设置权重设置成1:3,这样就可以很好的解决主从不压力均衡的问题 vim /usr/local/amoeba-2.2.0/conf/amoeba.xml 
这里写图片描述 这里的8066端口为amoeba代理所监听的端口 user 和 password 是用来登录amoeba代理所使用的账号信息 这里写图片描述 LRUMapSize定义了Amoeba缓存的SQL语句解析条数 defaultPool配置了默认的节点,一些除了SELELCT/UPDATE/INSERT/DELETEDE的语句都会在上面执行 writePool配置了写库,通常就是主库 readPool配置了读库,可以为一个也可以是数据库池 这样Amoeba的配置就完成了(注:关于配置文件的参数意义在amoeba文档中有完整的解释) 接下来进行环境变量的配置,vim /etc/profile.d/amoeba.sh
export AMOEBA_HOME=/usr/local/amoeba-2.2.0/
export PATH=$AMOEBA_HOME/bin/:$PATH
4.启动Amoeba 执行amoeba start 
The stack size specified is too small, Specify at least 160k 
Could not create the Java virtual machine. 
如果报以上错误,需编辑二进制脚本,因为JAVA启动对xss参数最小值有限制 
vim /usr/local/amoeba-2.2.0/bin/amoeba 
DEFAULT_OPTS=”-server -Xms256m -Xmx256m -Xss128k” 
修改为如下 
DEFAULT_OPTS=”-server -Xms256m -Xmx256m -Xss256k” 
(注:如果启动失败要主要看有无 Amoeba Monitor Server shutdown completed!,如果没有请执行一遍amoeba stop) 5.连接amoeba 正常启动后连接amoeba数据库,mysql -u root -p -h 172.16.2.231 -P8066 这里写图片描述 这就是正常启动后的提示信息,如果提示错误的话可能性很多,但大多数是网络(防火墙没关,主从数据库未启动等)、权限(主从数据库未提供amoeba账号权限等)以及配置的问题,多多阅读错误提示和日志能让你更快的定位到错误 这里写图片描述 6.测试 测试的方法有很多种这里就不举例了,主要的思想是: 
- 在amoeba上创建表,测试操作是否同步主从; 
- 将从库的同步关闭slave stop,在amoeba上进行写操作看是否只有主库写入;在主从上分别插入一条数据,并在amoba上执行读操作看显示的数据等。

使用amoeba实现mysql_使用Amoeba实现MySQL的主从读写分离的例子

http://m.bbyears.com/shujuku/111813.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新