目前Mysql 自己本事做不到完全的HA,不过可以利用keepalived做读HA。
atlas 是奇虎360 改造后的MySQL Proxy,支持Mysql 读写分离功能。
1, 下载安装Altas(mysql proxy)
wget https://s3.amazonaws.com/github-cloud/releases/9273884/5b567b50-f8fa-11e2-8273-f9d05a6054fa.deb?response-content-disposition=attachment%3B%20filename%3DAtlas-1.0.3-x86_64.deb&AWSAccessKeyId=AKIAISTNZFOVBIJMK3TQ&Expires=1378883777&Signature=jH8JYodbNhaFC8eVLMLJ3RmoWnI%3D
2. dpkg -i Atlas-1.0.3-x86_64.deb
3. aptitude install keepalived (安装keepalived)
4. 安装Mysql master与Slave (slave readonly)
5. 配置mysql-proxy
root@ubuntu64:/usr/local/mysql-proxy/conf# vim myproxy.cnf
[mysql-proxy]
plugins = admin, proxy
admin-username =myproxyadmin
admin-password =myproxypwd
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
proxy-backend-addresses = 192.168.40.246:3306
proxy-read-only-backend-addresses = 192.168.40.155:3306@2
daemon = true
keepalive = true
event-threads = 4
log-level = message
log-path = /usr/local/mysql-proxy/log
instance = myproxy
proxy-address = 0.0.0.0:1234
admin-address = 0.0.0.0:2345
min-idle-connections = 2
6.启动mysql-proxy
bin/mysql-proxyd myproxy start
bin/mysql-proxyd myproxy stop
bin/mysql-proxyd myproxy restart
7.查看状态
bin/mysql-proxyd myproxy status
8.连接Mysql-proxy
mysql -h192.168.20.186 -umyproxyadmin -pmyproxypwd usermanager -P1234 -e 'select count(*) from a';
1> 读写分离
当 -e 中没有开启事务,只是select,那么将会自动被分配到slave中,
当 -e 中没有开启事务,但有insert,update,delete 操作,那么将会自动被分配到master中,
当 -e 中开启了事务,不管是select ,还是Insert,update,delete,都会被分配到master。
2>连接为长连接
atlas 是奇虎360 改造后的MySQL Proxy,支持Mysql 读写分离功能。
1, 下载安装Altas(mysql proxy)
wget https://s3.amazonaws.com/github-cloud/releases/9273884/5b567b50-f8fa-11e2-8273-f9d05a6054fa.deb?response-content-disposition=attachment%3B%20filename%3DAtlas-1.0.3-x86_64.deb&AWSAccessKeyId=AKIAISTNZFOVBIJMK3TQ&Expires=1378883777&Signature=jH8JYodbNhaFC8eVLMLJ3RmoWnI%3D
2. dpkg -i Atlas-1.0.3-x86_64.deb
3. aptitude install keepalived (安装keepalived)
4. 安装Mysql master与Slave (slave readonly)
5. 配置mysql-proxy
root@ubuntu64:/usr/local/mysql-proxy/conf# vim myproxy.cnf
[mysql-proxy]
plugins = admin, proxy
admin-username =myproxyadmin
admin-password =myproxypwd
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
proxy-backend-addresses = 192.168.40.246:3306
proxy-read-only-backend-addresses = 192.168.40.155:3306@2
daemon = true
keepalive = true
event-threads = 4
log-level = message
log-path = /usr/local/mysql-proxy/log
instance = myproxy
proxy-address = 0.0.0.0:1234
admin-address = 0.0.0.0:2345
min-idle-connections = 2
6.启动mysql-proxy
bin/mysql-proxyd myproxy start
bin/mysql-proxyd myproxy stop
bin/mysql-proxyd myproxy restart
7.查看状态
bin/mysql-proxyd myproxy status
8.连接Mysql-proxy
mysql -h192.168.20.186 -umyproxyadmin -pmyproxypwd usermanager -P1234 -e 'select count(*) from a';
1> 读写分离
当 -e 中没有开启事务,只是select,那么将会自动被分配到slave中,
当 -e 中没有开启事务,但有insert,update,delete 操作,那么将会自动被分配到master中,
当 -e 中开启了事务,不管是select ,还是Insert,update,delete,都会被分配到master。
2>连接为长连接