IT编程 > 数据库 > Mysql

mysql数据库读写分离 Atlas架构

67人参与2020-05-12

读写分离 atlas架构

1、安装软件

rpm -ivh atlas-2.2.1.el6.x86_64.rpm 

2、修改配置

cd /usr/local/mysql-proxy/

vim /usr/local/mysql-proxy/conf/test.cnf
[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 10.0.0.55:3306
proxy-read-only-backend-addresses = 10.0.0.51:3306,10.0.0.52:3306
pwds = repl:3yb5jeku5h4=,mha:o2jbxonx098=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log=on
proxy-address = 0.0.0.0:33060
admin-address = 0.0.0.0:2345
charset=utf8

/usr/local/mysql-proxy/bin/encrypt  123      ---->制作加密密码

3、启动atlas

/usr/local/mysql-proxy/bin/mysql-proxyd test start
ps -ef |grep proxy

4、测试

测试读写分离:

读的测试
mysql -uroot -p123 -h10.0.0.53 -p33060 
show variables like 'server_id';

写操作测试:

设置两个从节点只读
set global read_only=1;

连接测试

mysql -umha -pmha -h10.0.0.53 -p33060
create database db1;

5、管理atlas

连接管理接口:
mysql -uuser -ppwd -h127.0.0.1 -p2345
打印帮助:
mysql> select * from help;查看帮助命令
select * from backends;查看读写节点
动态添加删除节点:
remove backend 3;
add slave 10.0.0.53:3306;
save config;(配置文件中自动去除已经被删除的或者添加该节点)

6、扩展——atlas 自动分表

school.stu    1000w
id   name 

stu_0   stu_1   stu_2   stu_3    stu_4

以上分表方式,存数据非常均匀,取数据不均与,因为要考虑业务需求
如果业务查询热点数据集中在id是1-200w这些数据,那么读取就不均匀
取模分表

n/5  取余数  (0,1,2,3,4) 
(1)如果是  0  则分到 stu_0
(2)如果是  1  则分到 stu_1
(3)如果是  2  则分到 stu_2
(4)如果是  3  则分到 stu_3
(5)如果是  4  则分到 stu_4

取余数
配置文件
vim /usr/local/mysql-proxy/conf/test.cnf
tables = school.stu.id.5

重启atlas
(主库)手工创建,分表后的库和表,分别为定义的school  和 stu_0 stu_1 stu_2 stu_3 stu_4
create database school;
use school
create table stu_0 (id int,name varchar(20));
create table stu_1 (id int,name varchar(20));
create table stu_2 (id int,name varchar(20));
create table stu_3 (id int,name varchar(20));
create table stu_4 (id int,name varchar(20));

测试:

insert into stu values (3,'wang5');

insert into stu values (2,'li4');

insert into stu values (1,'zhang3');

insert into stu values (4,'m6');

insert into stu values (5,'zou7');

commit;

select * from stu_01 

或者 select * from stu where id=01
转自:https://www.cnblogs.com/cuiyongchao007/p/12861376.html

留下您精彩的一笔!!点此进行留言回复

最近更新

Windows10下mysql 8.0.19 winx64安装教程及修改初始密码

06-23

在IDEA的maven项目中连接并使用MySQL8.0的方法教程

06-23

如何更改MySQL数据库的编码为utf8mb4

06-23

安装mysql-8.0.19-winx64遇到的问题:Can't create directory 'xxxx\Database\'

06-23

mysql中GROUP_CONCAT的使用方法实例分析

06-23

win10安装zip版MySQL8.0.19的教程详解

06-23

推荐阅读

mysql数据库读写分离 Atlas架构

05-12

Mysql服务器处理客户端请求流程

04-05

C#如何在海量数据下的高效读取写入MySQL

06-13

mysql同步复制搭建方法指南详细步骤

06-10

mysql 跑存储过程没有权限的问题

03-27

MySQL InnoDB锁(翻译自官方手册)

03-22

mysql中提高Order by语句查询效率的两个思路分析

06-05

mysql第五课

01-03

MySQL的变量分类总结

05-12

centos7安装mysql并jdbc测试教程

06-08

Linux系统编程之验证kernel内核缓存区大小-)4096字节

06-30

在MySQL中使用序列的简单教程

06-05

热门评论