surroundings:
Mysql-proxy:192.168.109.102
Master-109.100 192.168.109.100
Slave-109.101:192.168.109.101
Experimental topology map
[root@Mysql-proxy ~]# wget http://mirrors.163.com/mysql/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz
[root@Mysql-proxy ~]# tar xvf mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz
[root@Mysql-proxy ~]# echo "export PATH=/usr/local/mysql-proxy/bin:$PATH" > /etc/profile.d/mysql-proxy.sh
[root@Mysql-proxy~]# source /etc/profile
[root@Mysql-proxy~]# mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.109.100:3306" --proxy-read-only-backend-addresses="192.168.109.101:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"
Detailed parameters:
Mysql- # Proxy-related arguments detailed as follows: --help- All # get all help information --proxy-address = Host: Port # proxy service listening address and port, default 4040 --admin-address = Host: listen address and port # port management module, the default is 4041 --proxy-backend-addresses = Host: port: mysql server address and port of the back-end;
--proxy-the Read-only-backend-addresses = Host: port # Read-only back-end mysql server address and port; --proxy-lua-scripts = file_name: # mysql completed proxy functionality Lua script;: in daemon mode is activated mysql - Proxy; -keepalive # in MySQL - try to restart when the proxy crashes;
--log-File = /var/log/mysql-proxy.log # log file name; --log-Level = Level # log level --log-Use - syslog # records syslog log --plugins = plugin # mysql-proxy in the boot loader plug- --user = user_name # mysql_proxy running process user --defaults-file = / path / to / conf_file_name: the default configuration file path used, its configuration sections using [mysql- Proxy] identity; --proxy-Skip-Profiling: disable Profile;
--pid-file = / path / to / pid_file_name: process file name;
# View mysql-proxy start port / log
【Master-109.100】
After the # mysql-proxy end start to be complete, we landed Matser main library licensed to operate all of the main library mysql-proxy node allows the agent node;
#grant all on *.* to "mysql-proxy"@"192.168.1091.102" identified by "123456";
#flush privileges;
授权完毕之后,通过mysql-proxy代理端(192.168.109.1021)模拟向主库192.168.109.100插入数据
[root@Mysql-proxy ~]# mysql -h 192.168.109.102 -u mysql-proxy -p123456 -P4040 -e "create database Testdb charset=utf8;"
[root@Mysql-proxy ~]# mysql -h 192.168.109.102 -u mysql-proxy -p123456 -P4040 -e "create table Testdb.t1(id int(10) auto_increment primary key,name varchar(40),age varchar(40));"
随后我们通过登陆4041管理端口查看mysql-proxy所代理的主从读写分离状态,很明显,写库状态已经激活(UP状态)
[root@Mysql-proxy ~]# mysql -h 192.168.109.102 -uadmin -padmin -P4041 -e "select * from backends;"
随后通过4041查询数据,因为主从关系,通过mysql-proxy端写入的数据默认也会同步到从库(192.168.109.101);
#为了更好的验证,我们通过mysql-proxy代理端读取数据是走的slave从库:只需要在从库192.168.109.101单独插入一下表数据
(因为在从库插入的数据不会同步到主库中,这样便于区分,随后我们在proxy端执行select查询语句的时候,就可以很明显的区分查的主库还是从库了)
[root@Mysql-proxy ~]# mysql -h 192.168.109.102 -umysql-proxy -p123456 -P4040 -e "select * from Testdb.t1;"
[root@Mysql-proxy ~]# mysql -h 192.168.109.102 -uadmin -padmin -P4041 -e "select * from backends;"
END!