高级DBA带你学习Mysql代理Proxysql主从读写分离安装配置例子全网最详细

       Proxysql安装配置  

1.ProxySQL 介绍
ProxySQL 是基于 MySQL 的一款开源的中间件的产品(类似MYCAT),是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。

1.安装架构
IP Server-id 数据库版本 备注
192.168.2.153 1 MySQL 客户端 ProxySQL2.0.15
192.168.2.103 2 MySQL 8.0.18服务 Master(主库)
192.168.2.169 3 MySQL 8.0.18服务 Slave1(从库)
192.168.2.251 4 MySQL 8.0.18服务 Slave1(从库)

2.安装部署方法
步骤1:192.168.2.153上安装依赖包
操作系统环境为centos 6.5

为下载好的依赖包要依次按顺序安装,用root用户执行
rpm -ivh perl-DBI-1.616-1.el6.rfx.x86_64.rpm
rpm -ivh perl-DBD-MySQL-4.013-3.el6.x86_64.rpm
rpm -ivh proxysql-2.0.15-1-centos67.x86_64.rpm

2.验证安装是否正常
执行命令rpm -ql proxysql

图上属于安装正常
vi /etc/proxysql.cnf

修改这2个值,第一个线程数32,第二个是MYSQL的版本这个要对应你服务器安装MYSQL的版本。

3.启动代理服务
service proxysql start
验证启动成功

4.所有数据库建立代理MYSQL账号
192.168.2.103,192.168.2.169,192.168.2.251分离建立代理用户

用户名:proxysql
密码设置为:pwproxysql
赋予全部权限(因为监管程序有一些建索引需求)
建完用户之后
ALTER USER ‘proxysql’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘pwproxysql’;
FLUSH PRIVILEGES;
然后再其他电脑上能通过账号联入即可,用Navicat for MySQL在其他电脑上验证,能查询!
或者用mysql -u -p -h 命令其他服务器上测试!
然后每个MYSQL服务器执行
set global max_connect_errors = 900000000000;
show variables like ‘max_connect_errors’;
flush hosts;

5.建立监控账号
192.168.2.103,192.168.2.169,192.168.2.251分离建立监控用户

用户名:monitor
密码设置为:monitor
赋予全部权限建完用户之后
ALTER USER monitor@‘%’ IDENTIFIED WITH mysql_native_password BY ‘monitor’;
FLUSH PRIVILEGES;
然后再其他电脑上能通过账号联入即可,用Navicat for MySQL在其他电脑上验证,能查询!
或者用mysql -u -p -h 命令其他服务器上测试!

6.进入到192.168.2.153(6032端口跟6033端口需要打开防火墙)
mysql -h 127.0.0.1 -P 6032 -u admin -padmin

如果该服务器没有安装过MYSQL,则需要安装MYSQL客户端

rpm -Uvh mysql-community-common-8.0.16-2.el6.x86_64.rpm
rpm -Uvh mysql-community-libs-8.0.16-2.el6.x86_64.rpm
rpm -Uvh mysql-community-libs-compat-8.0.16-2.el6.x86_64.rpm
rpm -Uvh mysql-community-client-8.0.16-2.el6.x86_64.rpm

安装完成之后,成功登录代理管理端端口6032

执行下面:
set mysql-default_charset=‘utf8mb4’;
set mysql-default_sql_mode=‘NO_ENGINE_SUBSTITUTION’;
set mysql-mysql-max_allowed_packet=67108864;
set mysql-ping_interval_server_msec=300000; #sleep会话保持时长300s
set mysql-max_connections=4000; #ProxySQL能处理的和前端客户端的最大连接
set mysql-server_version=‘8.0.16’; #proxysql响应给客户端的MySQL版本号

LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

执行
insert into mysql_replication_hostgroups(writer_hostgroup,reader_hostgroup,comment) values(1,2,‘高可用’);

insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(1,‘192.168.2.103’,3306,1,‘Write Group’);
insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(2,‘192.168.2.169’,3306,1,‘Read Group’);
insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(2,‘192.168.2.251’,3306,1,‘Read Group2’);

Insert into mysql_users (username,password,default_hostgroup) values (‘proxysql’,‘pwproxysql’,1);

Insert into mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) values (1,1,‘^select.*for update$’,1,1);

Insert into mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) values (2,1,‘^select’,2,1);

验证是不是各个MYSQL是不是正常通的
select * from mysql_server_ping_log;

null就代表是正常的,如果不正常会有异常报错信息!

//加载到内存
load mysql users to runtime;
load mysql servers to runtime;
load mysql query rules to runtime;
load mysql variables to runtime;
load admin variables to runtime;
//永久生效

save mysql users to disk;
save mysql servers to disk;
save mysql query rules to disk;
save mysql variables to disk;
save admin variables to disk;

验证成功
mysql -uproxysql -ppwproxysql -P6033 -h127.0.0.1 -e “select @@datadir”;

mysql -uproxysql -ppwproxysql -P 6033 -h 127.0.0.1 -e “select @@server_id;”
每个SELECT每次执行都分开查不同的数据库实例!

笔者简介
国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 学习MySQL DBA需要一系列的步骤。首先,你需要了解MySQL的基础知识,包括数据库结构、SQL查询、数据库设计和数据库管理。其次,你需要学习如何使用MySQL的开发工具,学习如何安装配置MySQL服务器以及其他实用工具。最后,你需要学习如何管理MySQL服务器,包括性能监控、安全管理和可用性管理。 ### 回答2: 学习MySQL DBA需要掌握以下几个方面: 1. 学习MySQL基础知识:包括MySQL的概念、体系结构、SQL语法等。可以通过阅读官方文档、参加培训课程或者学习在线教程来掌握。 2. 实践操作MySQL:通过在自己的电脑上安装MySQL,创建数据库、表和查询数据等来熟悉MySQL的操作。可以使用一些开源项目或者模拟练习来加深对MySQL的理解。 3. 学习数据库设计:了解关系数据库的基本原理和规范化的概念,学习如何设计合理的数据库结构,包括表的设计、字段的定义、主键和外键的关系等。 4. 学习MySQL性能调优:学习如何优化查询语句、索引的设计和使用,以及MySQL的参数调优等。可以通过查阅相关书籍、阅读MySQL官方性能调优手册、参与相关社区讨论来提高性能方面的知识。 5. 学习MySQL的备份和恢复:了解MySQL的备份和恢复策略,学习如何进行数据的备份和恢复,以及如何保证数据的安全性和完整性。 6. 学习高可用和容灾方案:了解MySQL的高可用性和容灾方案,学习如何搭建主从复制、集群、备份恢复等架构,以确保系统的稳定性和可用性。 7. 持续学习和实践:MySQL是一个不断发展和更新的数据库系统,所以需要持续学习并了解最新的版本和特性。同时,通过实践和解决实际问题来提升自己的技能和经验。 总之,学习MySQL DBA需要坚持不断学习和实践,通过理论与实践相结合来提升自己的技能水平。记得保持耐心和专注,因为这是一个相对复杂的领域。 ### 回答3: 学习MySQL数据库管理(MySQL DBA)需要掌握一定的数据库基础知识和相关技术。以下是学习MySQL DBA的步骤和建议: 1. 学习数据库基础知识:深入学习关系数据库的基本概念、SQL语言和数据库设计原则,了解数据库管理系统(如MySQL)的特点和功能。 2. 学习MySQL的特定知识:掌握MySQL的基本架构、配置文件、存储引擎等方面的知识,以及MySQL命令行和图形界面工具的使用方法。 3. 实践经验:通过实际操作和练习来加深对MySQL的理解。可以在本地安装MySQL,创建数据库、表,执行SQL查询语句,并进行数据库的备份和恢复等操作。 4. 深入了解性能优化:掌握MySQL的性能调优技术,如索引优化、查询优化、缓存配置、硬件调整等,以提高数据库的性能和响应速度。 5. 学习备份和恢复策略:了解MySQL的备份和恢复方法,包括物理备份(如mysqldump)和逻辑备份(如mysqlbinlog),并熟悉如何应对数据库故障和数据丢失的情况。 6. 学习数据库安全性:了解MySQL数据库的安全配置和授权管理,以及如何保护数据库的安全性,如设置密码策略、访问控制等。 7. 参考学习资源:可以阅读相关的MySQL官方文档、书籍和在线教程,还可以参加专业的培训课程或参与技术社区的讨论,与其他DBA进行交流与学习。 8. 实践项目经验:参与数据库项目的开发和运维,通过实践解决实际问题,不断提升数据库管理技能。 总之,学习MySQL DBA需要通过持续学习和实践,了解数据库的基本原理和技术,并熟悉MySQL的特定知识和工具的使用。通过不断积累经验和解决问题,将能够成为一名高级MySQL DBA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值