mysql proxysql的简单部署读写分离

摘要:
6032是连接proxysq的管理端口,6033是连接数据库的客户端端口。

环境需求(centos)

proxysql-server(1)-- 地址:proxysql-service

mysql-master-server(1)--- 地址:mysql1-service

mysql-slave-server(2)--- 地址:mysql2-service 和 mysql3-service

提前做好三台mysql的主从复制

mysql-master-server

创建一个监控账号和一个程序账号(自动同步到slave)

GRANT ALL ON *.* TO 'monitor'@'%' IDENTIFIED BY 'monitor';
GRANT ALL ON *.* TO 'proxysql'@'%' IDENTIFIED BY 'proxysql';

proxysql-server

1.安装proxysql

# vi/etc/yum.repos.d/proxysql.repo

[proxysql_repo]
name= ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key

#yum -y install proxysql

# /etc/init.d/proxysql start

2.安装mariadb-client(配置proxysql需要使用mysql命令)

#vi/etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

#yum install -y MariaDB-client

3.配置proxysql

# cat /etc/proxysql.conf

# 使用命令来配置连接数据库做读写分离,那么配置文件基本上可以不用修改
datadir="/var/lib/proxysql"# 这里可以修改进入proxysql的账号密码端口 admin_variables={ admin_credentials="admin:proxy1234"mysql_ifaces="0.0.0.0:6032"} mysql_variables={ threads=4max_connections=2048default_query_delay=0default_query_timeout=36000000have_compress=truepoll_timeout=2000interfaces="0.0.0.0:6033;/tmp/proxysql.sock"default_schema="information_schema"stacksize=1048576server_version="5.5.30"connect_timeout_server=10000monitor_username="proxysql"monitor_password="proxysql"monitor_history=600000monitor_connect_interval=200000monitor_ping_interval=200000monitor_read_only_interval=1500monitor_read_only_timeout=500ping_interval_server_msec=120000ping_timeout_server=500commands_stats=truesessions_sort=trueconnect_retries_on_failure=10} mysql_servers =( ) mysql_users: ( ) mysql_query_rules: ( ) scheduler=( ) mysql_replication_hostgroups=( )

另外,proxysql涉及两个端口6032和6033。6032是连接proxysq的管理端口,6033是连接数据库的客户端端口。

进入proxysql

#mysql -uadmin -pproxy1234 -P6032 -h127.0.0.1 --prompt='proxysql> '

# proxysql连接数据库
insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(10,'mysql1-service',3306,1,1000,10,'write mysql'); insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(20,'mysql2-service',3306,1,10000,10,'read mysql'); insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(20,'mysql3-service',3306,1,10000,10,'read mysql');
# proxysql创建监控账号和程序账号,要和上面实际数据库里创建的账号一样 insert into mysql_users(username,password,active,default_hostgroup,transaction_persistent) values(
'proxysql','proxysql',1,10,1); insert into mysql_users(username,password,active,default_hostgroup,transaction_persistent) values('monitor','monitor',1,10,1);
# 设置账号monitor为监控账号 UPDATE global_variables SET variable_value
='monitor' WHERE variable_name='mysql-monitor_username'; UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';
# 设置rule INSERT INTO mysql_query_rules(active,match_pattern,destination_hostgroup,apply) VALUES(
1,'^SELECT.*FOR UPDATE$',10,1); INSERT INTO mysql_query_rules(active,match_pattern,destination_hostgroup,apply) VALUES(1,'^SELECT',20,1);
# 保存,生效 load mysql servers to runtime; load mysql users to runtime; load mysql variables to runtime; save mysql servers to disk; save mysql users to disk; save mysql variables to disk; save mysql users to mem; load mysql query rules to runtime; save mysql query rules to disk;
# 查询监控数据,sql语句在哪个数据库执行的
select * from stats_mysql_query_digest;

远程连接(在网络互通情况下,也可以在proxysql本地127.0.0.1)

#mysql -unanjing -pnanjing -hproxysql-service -P6033

免责声明:文章转载自《mysql proxysql的简单部署读写分离》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【使用 DOM】理解 DOMopenstack 5大组件之间的关系和基本架构思维导图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL中的数据类型的长度范围和显示宽度(转)

长度范围是随数据类型就已经是固定的值,而显示宽度与长度范围无关。 以下是每个整数类型的存储和范围(来自MySQL手册) 类型 字节 最小值 最大值 (带符号的/无符号的) (带符号的/无符号的) TINYINT 1 -128 127 0 255 SMALLINT 2 -32768 32767 0 65535 MEDI...

Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新

前言        实际上,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入,但是,实际上即使Mybatis完美支持你的sql,你也得看看你说操作的数据库是否支持,而阿福,最近就遇到这样的一个坑。 问题        先带大家来看一段sql的配置, <update id="updateAllAvailable"> <...

linux下percona-toolkit工具包的安装和使用(超详细版)

一.检查和安装与Perl相关的模块 PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。 依赖包检查命令为: rpm -qaperl-DBIperl-DBD-MySQLperl-Time-HiResperl-IO-Socket-SSL 如果有依赖包确实,可以使用下面的命令安装: yum install perl-DBI yum inst...

如何将frm格式MYD格式MYI格式文件导入MySQL中

frm,myd,myi是属于MySQL存储数据的文件,phpMyAdmin是无法导入的。 phpMyAdmin支持的文件格式为sql文件。 其实很简单: 1.找到你的mysql的安装目录下的data文件夹,新建一个文件夹,文件夹的名称是你想设计的库的名称,把这些文件(frm,myd,myi格式的文件)放到此文件夹中。 提示:也可以使用mysql管理工具创建...

【DB宝41】监控利器PMM的使用--监控MySQL、PG、MongoDB、ProxySQL等

目录 一、PMM简介 二、安装使用 三、监控MySQL数据库MySQL慢查询分析 四、监控PG数据库 五、监控MongoDB数据库 六、监控ProxySQL中间件 一、PMM简介 之前发布过一篇Prometheus+Grafana的文章,连接为:【DB宝36】使用Docker分分钟搭建漂亮的prometheus+grafana监控,今天我们...

MySQL联合多表更新和删除

多表更新在 MySQL 3.23 中,你能够使用 LIMIT # 来确保仅仅有给定的记录行数目被更改。 假设一个 ORDER BY 子句被使用(从 MySQL 4.0.0 開始支持),记录行将以指定的次序被更新。这实际上仅仅有连同 LIMIT 一起才实用。 从 MySQL 4.0.4 開始,你也能够运行一个包括多个表的 UPDATE 的操作: UPDA...