MySQL 读写分离

数据库Master主服务器:172.17.0.2

数据库Slave从服务器:172.17.0.3

MySQL-Proxy调度服务器:172.17.0.4

 

#MySQL的安装与配置

...

 

#编译安装lua

MySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的,因此需要安装lua

下载地址:http://www.lua.org/download.html

$ curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz

$ tar zxf lua-5.3.4.tar.gz

$ cd lua-5.3.4

$ make linux test

$ make install

 

#安装配置MySQL-Proxy

下载地址:https://downloads.mysql.com/archives/proxy/

$ tar –zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

$ mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy

 

 

#配置mysql-proxy,创建主配置文件

$ cd /usr/local/mysql-proxy

$ mkdir lua #创建lua脚本存放目录

$ mkdir logs #创建日志目录

$ cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件

$ cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本

 

#修改读写分离配置文件

$ vim rw-splitting.lua

--- config

--

-- connection pool

if not proxy.global.config.rwsplit then

        proxy.global.config.rwsplit = {

                min_idle_connections = 1, //默认超过4个连接数时,才开始读写分离,改为1

                max_idle_connections = 1, //默认为8

 

                is_debug = false

        }

end

#修改完成后,启动mysql-proxy

$ cd /usr/local/mysql-proxy/bin

$ ./mysql-proxy --proxy-read-only-backend-addresses=172.17.0.3:3306 --proxy-backend-addresses=172.17.0.2:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua --log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log --log-level=info &

解释:

proxy-read-only-backend-addresses=172.17.0.3 #指定后端从slave读取数据

proxy-backend-addresses=172.17.0.2 #指定后端主master写入数据

proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua #指定读写分离配置文件位置

admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua #指定管理脚本

log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log #日志位置

log-level=info #定义log日志级别,由高到低分别有(error|warning|info|message|debug)

 

#查看状态

$ lsof -i :4040

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysql-pro 788 root    9u  IPv4  65474      0t0  TCP *:yo-main (LISTEN)

 

#创建用于读写分离的数据库连接用户

登陆主数据库服务器172.17.0.2,通过命令行登录管理MySQL服务器

$ mysql -u root -p

mysql> GRANT ALL ON *.* TO [email protected] IDENTIFIED BY '123456';

mysql> flush privileges;

由于我们配置了主从复制功能,因此从数据库服务器172.17.0.3上已经同步了此操作。

为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能

登陆从数据库服务器172.17.0.3,通过命令行登录管理MySQL服务器

$ mysql -u root -p

关闭Slave同步进程

mysql> stop slave;

 

#连接MySQL-Proxy

#通过navicate连接,截图如下:



 

登录成功后,插入数据,发现数据并没有插入成功,然后分别去主库和从库查看,主库数据新增成功,从库数据没有变化。

#通过命令行

$ mysql -h172.17.0.4 -P4040 -umysqlproxy -p123456

你可能感兴趣的:(mysql)