用OneProxy部署MySQL数据库的读写分离
2016-01-02 12:26
741 查看
实验系统:CentOS 6.6_x86_64
实验前提:防火墙和selinux都关闭
实验说明:本实验共有4台主机,IP分配如拓扑
实验软件:mariadb-10.0.20 oneproxy-rhel5-linux64-v5.6-ga
相关如见下载地址:
百度网盘下载: http://pan.baidu.com/s/1qW20zMG
------------------------------------------分割线------------------------------------------
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /2015年资料/8月/6日/用OneProxy部署MySQL数据库的读写分离/
下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割线------------------------------------------
实验拓扑:
注意:本实验是之前MySQL-Proxy实验的拓展,因此大部分环境及设定是相同的,其中一、二步这里不再重复,具体请参考:利用MySQL-Proxy进行MySQL数据库的读写分离 http://www.linuxidc.com/Linux/2015-08/121109.htm
一、准备工作
二、配置主从复制
三、安装oneproxy
1.此实验中19.79为onproxy服务器,所以软件安装在此主机上:
tar xf oneproxy-rhel5-linux64-v5.6-ga.tar.gz -C /usr/local/
cd /usr/local/oneproxy
vim demo.sh
---------------------------------------------------------------->
#/bin/bash
#
export ONEPROXY_HOME=/usr/local/oneproxy
# valgrind --leak-check=full --show-reachable=yes \
${ONEPROXY_HOME}/oneproxy --keepalive \ //自动检查和重起OneProxy服务
--proxy-address=192.168.19.79:3306 \ //Proxy Server第一个监听地址
--admin-address=192.168.19.79:4041 \ //管理端口地址
--proxy-master-addresses=192.168.19.66:3306@server1 \ //Master节点地址(可写入节点),其中@后面是“Server Group”的名字,如果不指定,则默认为“default”
--proxy-slave-addresses=192.168.19.74:3306@server1 \ //Slave节点地址(可读取节点)
--proxy-slave-addresses=192.168.19.76:3306@server1 \
--proxy-user-list=test/14B1772BA9874974E6ECEA0745EE774930E2EFA3 \ //Proxy用户列表(用户名/口令),进行完第2步之后回来配置
--proxy-part-tables=${ONEPROXY_HOME}/part.txt \
--proxy-found-rows \
--event-threads=4 \ //OneProxy的工作线程数
--proxy-group-policy=server1:2 \ //定义MySQL集群的路由访问策略,这里配置的是从Slave读取,如果Slave端不可用,则从Master端读取
--proxy-group-security=server1:0 \ //定义MySQL集群的安全访问策略
--proxy-memory-db=root/@::test \
--proxy-memory-engine \
--proxy-sql-autosave=${ONEPROXY_HOME}/sql_firewall.sql \
--log-file=${ONEPROXY_HOME}/oneproxy.log \
--pid-file=${ONEPROXY_HOME}/oneproxy.pid
2.查看密码字符并配置:
chmod +x demo.sh
./demo.sh
mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041 //进入管理接口
-------------------------------------------------------------------->
passwd 'RedHat'; //查看密码字符,并写入demo.sh中
+--------+------------------------------------------+
| TEXT | PASSWORD |
+--------+------------------------------------------+
| redhat | 14B1772BA9874974E6ECEA0745EE774930E2EFA3 |
+--------+------------------------------------------+
3.在master上创建测试用户:
/usr/local/mysql/bin/mysql
----------------------------------------------->
GRANT ALL ON *.* TO 'test'@'192.168.19.%' IDENTIFIED BY 'redhat'; //这里要和demo.sh中的Proxy用户列表信息保持一致
FLUSH PRIVILEGES;
4.回到oneproxy服务器启动进程:
killall -9 oneproxy //先清理掉之前的进程
./demo.sh
tail -f oneproxy.log //查看日志
mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041
----------------------------------------------------------------->
LIST BACKEND;
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
| INDX | ADDRESS | TYPE | STATUS | MARKUP | REQUESTS | DEGREE | GROUP | IS_M | IS_S | MFile | MOffset | DFile | DOffset | RFile | ROffset | IO | SQL | Seconds |
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
| 1 | 127.0.0.1:3306 | RW/Master | UP | 0 | 0 | 0 | | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 192.168.19.66:3306 | RW/Master | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 3 | 192.168.19.74:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 4 | 192.168.19.76:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
5.分别在三台mariadb服务器上抓包:
master:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.66 and tcp dst port 3306
slave1:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.74 and tcp dst port 3306
slave2:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.76 and tcp dst port 3306
6.在oneproxy上进行数据库创建及读取:
mysql -utest -predhat -h192.168.19.79 //连接到oneproxy
数据库命令这里不再写出,大家可以从图片可以看出,所有写操作都在master上进行,读操作被负载均衡至slave上。
至此,实验成功,谢谢!
实验前提:防火墙和selinux都关闭
实验说明:本实验共有4台主机,IP分配如拓扑
实验软件:mariadb-10.0.20 oneproxy-rhel5-linux64-v5.6-ga
相关如见下载地址:
百度网盘下载: http://pan.baidu.com/s/1qW20zMG
------------------------------------------分割线------------------------------------------
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /2015年资料/8月/6日/用OneProxy部署MySQL数据库的读写分离/
下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割线------------------------------------------
实验拓扑:
注意:本实验是之前MySQL-Proxy实验的拓展,因此大部分环境及设定是相同的,其中一、二步这里不再重复,具体请参考:利用MySQL-Proxy进行MySQL数据库的读写分离 http://www.linuxidc.com/Linux/2015-08/121109.htm
一、准备工作
二、配置主从复制
三、安装oneproxy
1.此实验中19.79为onproxy服务器,所以软件安装在此主机上:
tar xf oneproxy-rhel5-linux64-v5.6-ga.tar.gz -C /usr/local/
cd /usr/local/oneproxy
vim demo.sh
---------------------------------------------------------------->
#/bin/bash
#
export ONEPROXY_HOME=/usr/local/oneproxy
# valgrind --leak-check=full --show-reachable=yes \
${ONEPROXY_HOME}/oneproxy --keepalive \ //自动检查和重起OneProxy服务
--proxy-address=192.168.19.79:3306 \ //Proxy Server第一个监听地址
--admin-address=192.168.19.79:4041 \ //管理端口地址
--proxy-master-addresses=192.168.19.66:3306@server1 \ //Master节点地址(可写入节点),其中@后面是“Server Group”的名字,如果不指定,则默认为“default”
--proxy-slave-addresses=192.168.19.74:3306@server1 \ //Slave节点地址(可读取节点)
--proxy-slave-addresses=192.168.19.76:3306@server1 \
--proxy-user-list=test/14B1772BA9874974E6ECEA0745EE774930E2EFA3 \ //Proxy用户列表(用户名/口令),进行完第2步之后回来配置
--proxy-part-tables=${ONEPROXY_HOME}/part.txt \
--proxy-found-rows \
--event-threads=4 \ //OneProxy的工作线程数
--proxy-group-policy=server1:2 \ //定义MySQL集群的路由访问策略,这里配置的是从Slave读取,如果Slave端不可用,则从Master端读取
--proxy-group-security=server1:0 \ //定义MySQL集群的安全访问策略
--proxy-memory-db=root/@::test \
--proxy-memory-engine \
--proxy-sql-autosave=${ONEPROXY_HOME}/sql_firewall.sql \
--log-file=${ONEPROXY_HOME}/oneproxy.log \
--pid-file=${ONEPROXY_HOME}/oneproxy.pid
2.查看密码字符并配置:
chmod +x demo.sh
./demo.sh
mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041 //进入管理接口
-------------------------------------------------------------------->
passwd 'RedHat'; //查看密码字符,并写入demo.sh中
+--------+------------------------------------------+
| TEXT | PASSWORD |
+--------+------------------------------------------+
| redhat | 14B1772BA9874974E6ECEA0745EE774930E2EFA3 |
+--------+------------------------------------------+
3.在master上创建测试用户:
/usr/local/mysql/bin/mysql
----------------------------------------------->
GRANT ALL ON *.* TO 'test'@'192.168.19.%' IDENTIFIED BY 'redhat'; //这里要和demo.sh中的Proxy用户列表信息保持一致
FLUSH PRIVILEGES;
4.回到oneproxy服务器启动进程:
killall -9 oneproxy //先清理掉之前的进程
./demo.sh
tail -f oneproxy.log //查看日志
mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041
----------------------------------------------------------------->
LIST BACKEND;
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
| INDX | ADDRESS | TYPE | STATUS | MARKUP | REQUESTS | DEGREE | GROUP | IS_M | IS_S | MFile | MOffset | DFile | DOffset | RFile | ROffset | IO | SQL | Seconds |
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
| 1 | 127.0.0.1:3306 | RW/Master | UP | 0 | 0 | 0 | | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 192.168.19.66:3306 | RW/Master | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 3 | 192.168.19.74:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 4 | 192.168.19.76:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
5.分别在三台mariadb服务器上抓包:
master:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.66 and tcp dst port 3306
slave1:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.74 and tcp dst port 3306
slave2:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.76 and tcp dst port 3306
6.在oneproxy上进行数据库创建及读取:
mysql -utest -predhat -h192.168.19.79 //连接到oneproxy
数据库命令这里不再写出,大家可以从图片可以看出,所有写操作都在master上进行,读操作被负载均衡至slave上。
至此,实验成功,谢谢!
相关文章推荐
- mysql 简单练习
- MySQL Fabric实验(三)HA与Sharding
- Ubuntu 14.04 安装 64位的 MySQL 5.7.9
- 阿里云服务器Ubuntu安装mysql
- MySQL安装报2503错误
- 多种方法修改Mysql root密码
- navicat for mysql 10.1.7注册码
- 在mysql中创建索引,提升获取数据库数据效率
- MYSQL 内部 一个故事@MySQL DBA
- mysql主从复制详解
- mysql触发器
- mysql游标
- Mysql笔记——DQL
- Mysql笔记——DCL
- Mysql笔记——DML
- Mysql笔记——DDL
- Mysql笔记——触发器简单实例
- mysql技能点
- MySQL的存储引擎造成的事务无法回滚
- C#连接MySQL数据库