day09_读写分离_Atlas小记

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'mysql';

FLUSH PRIVILEGES;


主从库上全做
--------------------------------------------------------------------




yum install -y gcc*



rpm -ivh Atlas-2.2.1.el5.x86_64.rpm   【rpm包直接安装】

rpm -ql Atlas 【查看安装路径】

grep -v '^#' /usr/local/mysql-proxy/conf/test.cnf  |grep -v '^$'  > /usr/local/mysql-proxy/conf/lipengfei  【过滤垃圾提示符】

mv test.cnf test.cnf.old

cat /usr/local/mysql-proxy/conf/lipengfei > /usr/local/mysql-proxy/conf/test.cnf 

rm -rf /usr/local/mysql-proxy/conf/lipengfei



/usr/local/mysql-proxy/bin/encrypt mysql           【mysql是我的密码,把密码加密】
TWbz0dlu35U=


vi /usr/local/mysql-proxy/conf/test.cnf

[mysql-proxy]
plugins = admin,proxy
admin-username=admin
admin-password=admin
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
proxy-backend-addresses = 192.168.8.100:3306
proxy-read-only-backend-addresses = 192.168.8.101:3306,192.168.8.102:3306
pwds = root:TWbz0dlu35U=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
instance = test
proxy-address = 0.0.0.0:1234
admin-address = 0.0.0.0:5678
charset = utf8







查看监听端口
netstat -tanlp | grep mysql


开启 

/usr/local/mysql-proxy/bin/mysql-proxyd test start
/usr/local/mysql-proxy/bin/mysql-proxyd test stop


登录管理

mysql -h 192.168.8.103 -P 5678 -u admin -padmin
正常通过代理操作

mysql -h 192.168.8.103 -P 1234 -u root -pmysql

SHOW VARIABLES LIKE 'server_id';



mysql> select * from help;
+-------------------+---------------------------------------+
| command                  | description                                               |
+-------------------+---------------------------------------+
| SELECT * FROM help         | shows this help                                         |
| SELECT * FROM backends     | lists the backends and their state                      |
| SET OFFLINE $backend_id   | offline backend server, $backend_id is backend_ndx's id  |
| SET ONLINE $backend_id     | online backend server, ...                              |
| ADD MASTER $backend        | example: "add master 127.0.0.1:3306", ...               |
| ADD SLAVE $backend         | example: "add slave 127.0.0.1:3306", ...                |
| REMOVE BACKEND $backend_id | example: "remove backend 1", ...                        |
| ADD CLIENT $client         | example: "add client 192.168.1.2", ...                  |
| REMOVE CLIENT $client      | example: "remove client 192.168.1.2", ...               |
| SAVE CONFIG                | save the backends to config file                        |
+-------------------+---------------------------------------+
10 rows in set (0.00 sec)
mysql> select * from backends;
+-------------+-------------------+-------+------+
| backend_ndx       |           address        | state    |  type   |
+-------------+-------------------+-------+------+
|           1      | 192.168.0.42:3306         | down     | rw      |
|           2      | 192.168.0.44:3306         | down     | ro      |
|           3      | 192.168.0.43:3306         | down     | ro      |
+-------------+-------------------+-------+------+
3 rows in set (0.00 sec)









5678端口:是Atlas的管理接口,此接口提供了查看mysql状态,设置上线、下线后端mysql服务器
访问方法使用mysql命令

mysql -h 10.142.132.50 -P2345 -u admin -p'admin'

这里的用户名密码是上面配置文件中的admin-username = admin、admin-password = admin
下面是管理接口的使用帮助

SELECT * FROM help;  # 查看帮助信息
SELECT * FROM backends; # 查看后端主机状态
SET OFFLINE $backend_id  # 下线一台主机,$backend_id == SELECT * FROM backends;查出来的ID
SET ONLINE $backend_id   # 上线一台主机
ADD MASTER $backend      # 添加一台master节点,如: ADD MASTER 10.57.1.131;
ADD SLAVE $backend       # 添加一台slave节点,如 : ADD SLAVE 10.57.1.132;
REMOVE BACKEND $backend_id # 删除一个节点,







自动读写分离挺好,但有时候我写完马上就想读,万一主从同步延迟怎么办?
A: SQL语句前增加 /*master*/ 就可以将读请求强制发往主库




---------------------------------------------------------------------

将atlas设置成服务,并实现开机自动启动

# 说明:作者仅在CentOS7.0上进行了测试,而且没有进行可靠性和稳定性的测试!
cp /tmp/atlas /etc/rc.d/init.d/atlas
chmod +x /etc/rc.d/init.d/atlas
chkconfig --add atlas
chkconfig atlas on



#!/bin/sh
#description: atlas autorun
#your instance name
instance_name=test
case "$1" in 
"start")
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name start
;; 
"stop") 
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name stop
;; 
"restart") 
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name restart
;; 
"status") 
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name status
;; 
*) 
echo "Usage: service atlas start/stop/restart/status "                              
;; 
esac
使用命令如下:
service atlas start
service atlas stop
service atlas status
service atlas restart  

----------------------------------------------------




监控atlas脚本

cat /usr/local/mysql-proxy/bin/monitor_atlas.sh

#!/bin/bash
if  [ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0" ];then
/usr/local/mysql-proxy/bin/mysql-proxyd test start
sleep 5
if [ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0"  ];then
killall -9 keepalived
service network restart
fi
fi





chmod +x /usr/local/mysql-proxy/bin/monitor_atlas.sh




------------------------配置文件说明------------------------
[mysql-proxy]
#管理接口的用户名,根据自己需要定义
admin-username = admin
#管理接口的密码
admin-password = password
#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-backend-addresses = 10.57.1.131:3306
#Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔
proxy-read-only-backend-addresses = 10.57.1.132:3306@1
#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名和加密密码!
pwds = root:YQsbJY4G4oc=,test:YQsbJY4G4oc=
# 需要注意的是,这两个用户要在MySQL-Master上创建并开放对应的访问权限,这里的用户是需要对外开放使用的用户
#设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true
daemon = true
#设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true
keepalive = true
#工作线程数,对Atlas的性能有很大影响,可根据情况适当设置
event-threads = 8
#日志级别,分为message、warning、critical、error、debug五个级别
log-level = message
#日志存放的路径
log-path = /usr/local/mysql-proxy/log
#SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF
#sql-log = OFF
#实例名称,用于同一台机器上多个Atlas实例间的区分
#instance = test
#Atlas监听的工作接口IP和端口
proxy-address = 0.0.0.0:3306
#Atlas监听的管理接口IP和端口
admin-address = 0.0.0.0:2345
#连接池的最小空闲连接数,可根据业务请求量大小适当调大或调小
min-idle-connections = 128
#分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项
#tables = person.mt.id.3
#默认字符集,设置该项后客户端不再需要执行SET NAMES语句
charset = utf8
#允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接
client-ips = 127.0.0.1, 10.0.0
#Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置,否则可以不设置
#lvs-ips = 192.168.1.1
# End


来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/xiaoxiao5ya/p/a867d29ca1b1f03a6b93b6a4022bfa8e.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Free Code Camp现在有本地组

by freeCodeCamp通过freeCodeCamp Free Code Camp现在有本地组 (Free Code Camp now has Local Groups) Our open source community was born online. And our campers are adept at using the internet to communicate. Most of this communication is just short text messa…

二十四点游戏python_[求助]关于二十四点游戏python

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼24点纸牌游戏的开发24点是一种老少咸宜的游戏,它的具体玩法如下:给玩家4张牌,每张牌的面值在1~13之间,允许其中有数值相同的牌。采用加、减、乘、除四则运算,允…

python-3.6.2安装

1、下载python-3.6.2-amd64.exe安装包 官网下载地址:https://www.python.org/ 2、Python安装,双击傻瓜式安装(用英文路径,不要有空格), 特别要注意勾上Add Python 3.6 to PATH(勾选后&#xff0…

Siege压力工具

Siege官方:http://www.joedog.org/ Siege下载:http://www.joedog.org/pub/siege/siege-latest.tar.gz Siege解压并安装:# tar -zxvf siege-latest.tar.gz # cd siege-latest/ #./configure #make #make installSiege使用:# siege -h 查看相关…

递归javascript_JavaScript中的递归

递归javascriptby Kevin Ennis凯文恩尼斯(Kevin Ennis) JavaScript中的递归 (Recursion in JavaScript) I’m just gonna get this out of the way right up front, because people get really angry otherwise:我只是直接解决这个问题,因为否则人们会非常生气&…

python google drive api_Python管理Google Drive文件

背景Google Drive给我们提供了很多管理和共享文件的简便方法,而且还是免费的(当然免费账户有一定存储限制)。但是,对于某些edu用户,Google Drive存储不仅是免费的,而且是无配额限制的。您是否想知道如何从数据科学的角度充分利用这…

Struts2学习---基本配置,action,动态方法调用,action接收参数

首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts2513 然后解压将里面的app文件夹下的示例war文件解压,将里面的…

实现对数组找最大最小数

实现对数组找最大最小数 在用js的过程中我们往往会需要找到一个数组里最大或最小的数, 但是我们不能直接用Math.max(Arr)或Math.min(Arr),因为max()里面不能填数组,只能填连续的数。 那我们该怎么办呢? 一定…

开源免费 低代码平台开源_行动透明:免费代码营现已开源

开源免费 低代码平台开源by freeCodeCamp通过freeCodeCamp 行动透明:免费代码营现已开源 (Transparency in Action: Free Code Camp is Now Open Source) We’re thrilled to announce that Free Code Camp is now fully open-source. Now you can fork our code b…

vc mysql init 崩溃_故障分析 | 崩溃恢复巨慢原因分析

作者:xuty本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。一、现象有个 MySQL 5.7 开发库异常挂掉后,奔溃恢复一直处于如下位置,且持续了 2 小时左右才起来…

surfaceview结束后怎么处理_污泥压滤机处理后的污泥怎么处置

在污泥处理处置中,污泥压滤机处理污泥只是对污泥进行脱水,并没有实现污泥资源化处置。再进行污泥“减量化、无害化、资源化”处理时,许多企业用污泥压滤机对污泥脱水处理后就不知道怎么继续处置了,从而使污泥饼无处可去&#xff0…

js数组详解

1,什么是数组数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组…

[转载]linux内存映射mmap原理分析

转自:http://blog.csdn.net/yusiguyuan/article/details/23388771 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空…

判断一个指针有没有free_Free Code Camp的每个人现在都有一个档案袋

判断一个指针有没有freeby freeCodeCamp通过freeCodeCamp Free Code Camp的每个人现在都有一个档案袋 (Everyone at Free Code Camp now has a Portfolio) Note: we originally published this on our now-defunct blog in January of 2015.注意:我们最初是在2015年…

冒泡、快速排序小结

1.冒泡排序 (1) 比较领近的两个数 (2) 如果左边的比右边的数字大,则交换位置 (3) 向右移动一位,继续比较相邻的两个数 排序示例: 一轮排序结束后,最大值的位置已经移动最右端,再次如此循环,最终经过n-1次则…

python中until函数_等待应用程序窗口:python中的pywinauto.timings.WaitUntilPasses

我试图在pywinauto中使用waituntilpasses来给应用程序时间打开一个新窗口.我已使用SWAPY识别窗口详细信息.为了进行测试,我手动打开了子窗口,因此WaitUntilPasses应该立即看到该窗口,但是没有看到.语法显示为OK,因为我可以找到并打印find_windows的输出,如下所示:xx…

synchronized 异常_由浅入深,Java 并发编程中的 Synchronized

synchronized 作用synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用:确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,保证共享变量的修改能够及时可见,获得…

mysql正则通配符全解_mysql正则表达式与通配符

扩展正则表达式的一些字符是: “.”匹配任何单个的字符。 一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9…

dos常用文件操作命令

1、DIR 含义: 显示指定目录下的文件和子目录列表 类型: 内部命令 格式: DIR[drive:][path][filename][/p][/w][/A[[:]attributes]][/O[[:]sortorder]][/S][/B][/L] 举例: DIR DIR D:\px2 DIR D:\px2\*.txt DIR /A:D /O:D 2、COPY…

使您的Java代码闻起来很新鲜

by Marco Massenzio由Marco Massenzio 使您的Java代码闻起来很新鲜 (Make your Java code smell nice and fresh) A few years ago I joined a startup working on a cloud enterprise service that was originally built by an offshore team.几年前,我加入了一家…