加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

安装mysql-proxy实现mysql读写分离

发布时间:2022-03-02 20:45:25 所属栏目:MySql教程 来源:互联网
导读:安装mysql-proxy实现mysql读写分离: 一. 环境描述 操作系统版本:centos 7.2 主服务器:192.168.0.72 node2 从服务器:192.168.0.73 node3 调度服务器MySQL-Proxy:192.168.0.71 node1 二. 配置mysql主从 2.1 安装mysql node2和node3都需安装 [lirou@node
       安装mysql-proxy实现mysql读写分离:

一. 环境描述
    操作系统版本:centos 7.2
 
    主服务器:192.168.0.72  node2
 
    从服务器:192.168.0.73  node3
 
     调度服务器MySQL-Proxy:192.168.0.71   node1
 安装mysql-proxy实现mysql读写分离
二. 配置mysql主从
2.1 安装mysql
node2和node3都需安装
 
[lirou@node2 ~]$ sudo yum -y install mariadb-server
 
2.2 修改配置文件
master配置文件:
 
skip_name_resolve
 
innodb_file_per_table
 
server_id = 1
 
log_bin = /var/lib/mysql/bin_log
 
slave 配置文件:
 
skip_name_resolve
 
innodb_file_per_table
 
server_id = 2
 
log_bin = /var/lib/mysql/bin_log
 
read_only
 
注意:master服务器一定要开启二进制日志,因为主从复制依赖与master。而且主从服务器的server_id一定要不同。
 
2.3 启动服务
node2和node3都要启动服务
 
[lirou@node3 ~]$ sudo systemctl start mariadb
 
2.4 配置主从服务器
Master服务器上
 
分配slave主机访问master的权限账号:
 
[lirou@node2 ~]$ mysql -uroot
 
MariaDB [(none)]> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON  *.* TO 'repl_user'@'192.168.0.%' IDENTIFIED BY 'repl_pass';
 
查看master上二进制日志位置
 
MariaDB [(none)]> show master status ;
 
+---------------+----------+--------------+------------------+
 
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 
+---------------+----------+--------------+------------------+
 
| binlog.000001 |      425 |              |                  |
 
+---------------+----------+--------------+------------------+
 
slave服务器上
 
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.72', MASTER_USER='repl_user', MASTER_PASSWORD='repl_pass', MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=425;
 
mysql> slave start;    # 开启从同步
 
mysql> show slave status G;  #查看同步是否成功
 
安装mysql-proxy实现mysql读写分离安装mysql-proxy实现mysql读写分离
 
三. 配置mysql-proxy
3.1 下载安装包
~]# wget wget https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
 
~]# sudo  tar xf https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local
 
~]# mv /usr/local/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
 
3.2 配置mysql-proxy
创建lua脚本目录
 
~]# cd /usr/local/mysql-proxy
 
mysql-proxy]# mkdir lua
 
创建日志目录
 
Mysql-proxy]# mdkir logs
 
拷贝读写分离配置文件和管理脚本到lua脚本目录
 
mysql-proxy]# cp share/doc/mysql-proxy/rw-splitting.lua  ./lua
 
Mysql-proxy]# cp share/doc/mysqp-proxy/admin-sql.lua  ./lua
 
创建配置文件
 
~]# vim /etc/mysql-proxy.conf
 
[mysql-proxy]
 
user = root  运行代理的用户
 
admin-username = mysql_proxy_user  # mysql-proxy连接后端mysql服务器的用户
 
admin-password = mysql_proxy_pass  # mysql-proxy连接后端mysql服务器的密码
 
proxy-address = 192.168.0.71:3307    # mysql-proxy监听的IP和端口,端口默认4040
 
proxy-read-only-backend-addresses = 192.168.0.73  #只读服务
 
proxy-backend-addresses = 192.168.0.72           # 读写服务器
 
proxy-lua-script = /usr/local/mysql-proxy/lua/rw-splitting.lua  # 指明读写分离配置文件
 
admin-lus-script = /usr/local/mysql-proxy/lua/admin-sql.lua   # 管理脚本路径
 
log-file = /usr/local/mysql-proxy/logs/mysql-proxy.log     # 日志文件路径
 
log-level = debug   #日志记录等级
 
daemon = true     # 程序是否在后端启动
 
keepalive = true    # mysql-proxy崩溃后,尝试重启
 
修改读写配置文件
 
vim /usr/local/mysql-proxy/lua/rw-splitting.lua
 
if not proxy.global.config.rwsplit then
 
 proxy.global.config.rwsplit = {
 
  min_idle_connections = 1,  #默认超过4个连接数时,才开始读写分离,改为1
 
  max_idle_connections = 1,  #默认8,改为1
 
  is_debug = false
 
 }
 
启动mysql-proxy
 
~]# /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
 
在mysql上创建mysql-proxy连接的用户
 
mysql> GRANT ALL ON *.* TO 'mysql_proxy_user'@'192.168.0.%' IDENTIFIED BY 'mysql_proxy_pass';
 
四. 测试读写分离
测试写
 
mysql -umysql_proxy_user -pmysql_proxy_pass -h292.168.0.71 --port=3307
 
mysql> create databases master;
 
mysql> create table test (id int);
 
mysql> insert into master.test value (1);
 
查看从服务器:
 
可以看到从服务器同步了
 
测试读
 
主服务器查询语句条数
 
从服务器查询语句条数
 
连接mysql-proxy执行一条读语句
  
主服务器查询语句条数
 
从服务器查询语句条数
 
安装mysql-proxy实现mysql读写分离安装mysql-proxy实现mysql读写分离
 
我们可以看到查询语句是在从服务器上执行。

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!