ProxySQL(读写分离)部署

proxySQL是MySQL的中间件产品,是灵活强大的代理层,实现读写分离,支持Query路由功能,支持动态指定某个SQL进行缓存,支持动态加载配置,故障切换和一些SQL

过滤功能

环境:

192.168.139.152  proxy SQL中间件   server-id=1

192.168.139.153  master mysql         server-id=2

192.168.139.154 slave mysql            server-id=3

proxy SQL更多信息可以访问 https://github.com/sysown/proxysql/wiki

MYSQL安装(all node)

要点:所有节点都安装MySQL并修改/etc/my.cnf 中的server-id

更新root密码123qweASD!

修改配置文件/etc/my.cnf

[mysqld]

server-id=1

mysql主从部署(master-slave)

从节点read_only=on

PROXYSQL安装(proxysql node)

安装依赖包:

yum install -y perl-DBD-MySQL  perl-DBI  perl-Time-HiRes perl-IO-Socket-SSL

创建repo文件

cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name= ProxySQL YUM repository
baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasever
gpgcheck=1
gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key
EOF

安装proxy SQLyum install -y proxysql

proxysql配置文件的路径为 /etc/proxysql.cnf

启动proxy SQLservice proxysql start

查看proxysql版本:proxy SQL--version

proxy SQL 默认用户名/密码 admin/admin

proxysql 管理端口6032  对外服务端口6033登陆proxysql :mysql -u admin -padmin -h 127.0.0.1 -P 6032MySQL>show databases;   显示5个数据库  main  disk  stats monitor  stats_historymain 内存配置数据库,即MEMORY ,表里存放后端db实例,用户验证,路由规则等信息  主要表:mysql_servers  后端可以连接MySQL服务器的列表       mysql_users 配置后端数据库的账户和监控账户       mysql_query_rules  指定Query路由到后端不同服务器的规则列表注:runtime 开头的表,表示当前运行的配置,不可修改;其余表修改后,LOAD使其生效,SAVE使其存到硬盘以供下次重启加载

master 节点创建proxy SQL监控账户:create user ‘monitor‘@‘192.168.139.%‘ identified by ‘123qweASD!‘;grant all privileges on *.* to ‘monitor‘@‘192.168.139.%‘ with grant option;

master节点创建对外访问账户:mysql> create user ‘zs‘@‘192.168.139.%‘ identified by ‘123qweASD!‘;mysql> grant all privileges on *.* to ‘zs‘@‘192.168.139.%‘ with grant option;

proxy SQL节点:添加主服务器列表 将主从MySQL加进去,自己不加mysql -uadmin -padmin -h 127.0.0.1 -P 6032mysql>insert into mysql_servers(hostgroup_id,hostname,port) values(10,‘192.168.139.153‘,3306);mysql>insert into mysql_servers(hostgroup_id,hostname,port) values(10,‘192.168.139.154‘,3306);mysql>load mysql servers to runtime;mysql>save mysql servers to disk;

机器的状态都是online状态

proxysql配置监控账号mysql> set mysql-monitor_username=‘monitor‘;mysql> set mysql-monitor_password=‘123qweASD!‘;    ===》 /etc/proxysql.cnf 中的monitor_password也要修改

配置proxy SQL主从分组mysql> insert into  mysql_replication_hostgroups values(10,20,‘proxy‘);mysql> load mysql servers to runtime;mysql> save mysql servers to disk;

配置对外访问账号,默认指定库,并对该用户开启事务持久化保护

mysql> insert into mysql_users(username,password,default_hostgroup) values(‘zs‘,‘123qweASD!‘,10);mysql> update mysql_users set transaction_persistent=1 where username=‘zs‘;mysql> load mysql users to runtime;mysql> save mysql users to disk;

验证登陆服务器就:是主库
读写分离策略配置

mysql> insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,‘^SELECT.*FOR UPDATE$‘,10,1);  ===》写mysql> insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,‘^SELECT‘,20,1);   ===》读mysql> load mysql query rules to runtime;mysql> save mysql query rules to disk;

读写分离测试:

mysql -u zs -p123qweASD! -h 192.168.139.152 -P 6033  登陆proxysql所在机器登陆数据库mysql> select * from mysql.user;     读操作mysql> create database zhangyu ;     写操作

登陆proxysql管理账户

10 是写库组 20是读库组

调整权重,让某个机器承受更多读操作

mysql> update mysql_servers set weight=10 where hostname=‘192.168.139.154‘;

mysql> load mysql servers to runtime;

mysql> save mysql servers to disk;



原文地址:https://www.cnblogs.com/zy1234567/p/10220232.html

时间: 2024-10-17 05:31:47

ProxySQL(读写分离)部署的相关文章

Amoeba实现Mysql读写分离部署文档

以下所有理解纯属个人理解,如若有误欢迎指出,不胜感激--o(∩_∩)o 两台服务器配置MYSQL主从复制实现数据高可用,这时读与写操作都有由master服务器来完成的,而从服务器只是复制了mster服务器的数据,这时可以利用一台服务器配置Amoeba实现mysql读写分离, master负责写,slave负责读取,当然 也可以有多个salve-- 从而减轻master服务器的压力,实现负载分摊: 拓扑图: Mysql主从复制原理: 两台mysql服务器一个作为master一个为slave:mas

MySQL ProxySQL读写分离实践

目的 在上一篇文章MySQL ProxySQL读写分离使用初探里初步介绍了ProxySQL的使用,本文继续介绍它的一些特点和DBProxy的性能差异.深入一些去了解ProxySQL,通过例子来说明ProxySQL的一些特性和用sysbench对其进行测试来对比分析说明. 环境:  Distributor ID: Ubuntu Description : Ubuntu 14.04.5 LTS Release : 14.04 Codename : trusty MySQL Master :192.1

实现MySQL读写分离 部署集群基础环境(有图)

实现MySQL读写分离 部署集群基础环境 1 实现MySQL读写分离1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服

Mycat读写分离部署分享

安装配置mycat 涉及到的安装包: 安装包:Mycat-server-1.6-RELEASE-linux.tar.gz 依赖环境:jdk-7u75-linux-x64.tar.gz 1安装JDK (1)创建java目录 # mkdir -p /usr/local/java (2)上传JDK到/usr/local/java目录下 (3)解压jdk-7u75-linux-x64.tar.gz # cd /usr/local/java # tar -zxvf jdk-7u75-linux-x64.t

MySQL ProxySQL读写分离使用初探

目的 在美团点评DBProxy读写分离使用说明文章中已经说明了使用目的,本文介绍ProxySQL的使用方法以及和DBProxy的性能差异.具体的介绍可以看官网的相关说明,并且这个中间件也是percona推的一款中间件.其特性和其他读写分离的中间件差距不大,具体的会在文中介绍.本文大致简单的介绍在使用过程中的一些说明,也可以看官方的wiki获得使用帮助. 环境:  Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.

ProxySQL读写分离

我们首先看一下自己的环境: MHA已经搭建: master:172.16.16.35:3306 slave:172.16.16.35:3307 slave:172.16.16.34:3307 MHA manager在172.16.16.34,配置文件如下: [[email protected] bin]# cat /etc/masterha/app1.cnf [server default] manager_log=/var/log/mha/app1/manager.log manager_wo

基于maxscale的读写分离部署笔记

使用maxscale搭建的读写分离架构,后期还可以再结合MHA做master的故障转移,这样业务层面上不需要做任何的改动即可. 基于connect方式的不要使用.从库延迟他还会继续分发请求过去,暂时不适合生产使用. 实验演示: 目前的主从结构: node93     10.1.20.93 master node94  10.1.20.94 slave node95  10.1.20.95 slave node96  10.1.20.96 maxscale 先在master主库上创建相关的账户:

ProxySQL 读写分离实践

前言 ProxySQL是一个高性能的MySQL中间件,拥有强大的规则引擎.具有以下特性: 连接池,而且是 multiplexing 主机和用户的最大连接数限制 自动下线后端DB 延迟超过阀值 ping 延迟超过阀值 网络不通或宕机 强大的规则路由引擎 实现读写分离 查询重写 sql流量镜像 支持prepared statement 支持Query Cache 支持负载均衡,与gelera结合自动failover 官方参考文档 https://github.com/sysown/proxysql/

003.MMM双主-双从读写分离部署

一 前期规划 1.1 主机规划 功能 IP 主机名 server id 应用属性 VIP MySQL版本 Monitor 172.24.8.20 Monitor -- 监控 -- -- Master01 172.24.8.10 Master01 1 写-writer 172.24.8.100 MySQL 5.6.37 Master02 172.24.8.11 Master02 2 读-reader 写-writer 172.24.8.101 172.24.8.102 172.24.8.103 1

MMM双主-双从读写分离部署

目录 一 前期规划 1.1 主机规划 1.2 虚拟IP规划 1.3 用户列表 1.4 整体架构 1.4 hosts修改 1.5 NTP配置 二 部署MySQL 2.1 安装MySQL 三 双主复制部署 3.1 master01 my.cf配置 3.2 Master02 my.cf配置 3.4 Master02创建账号 3.5 启动双主复制 3.3 启动Master02的slave功能 四 其他节点配置 4.1 所有Slave节点配置配置 4.2 所有Slave节点创建账号 4.2 Slave节点