mysql读写分离

基于Atlas实现读写分离

时间秒杀一切 提交于 2019-12-01 12:43:48
mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品:Atlas,tddl,Mycat。 环境准备: 关闭所有防火墙 192.168.200.111 master 192.168.200.112 slave1 192.168.200.113 slave2 192.168.200.114 Atlas 192.168.200.115 客户端 先实现MySQL数据库的主从复制 mysql主机允许Atlas远程连接 mysql> grant all on *.* to 'admin'@'192.168.200.%' identifieed by '123123'; mysql> flush privileges; Atlas主机: rpm -vih https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm #注意操作系统的版本,安装相应版本的Atlas。 cd /usr/local/mysql-proxy/bin/ ./encrypt 123123 ++gAN07C/Q0= cd /usr/local/mysql-proxy/ # Atlas的安装目录 vim

MySQL基于Mycat实现读写分离

末鹿安然 提交于 2019-12-01 12:35:33
基于 Mycat实现读写分离 环境: mariadb主:192.168.200.129 Mariadb从 : 192.168.200.114 Mycat : 192.168.200.112 (1) 安装 jdk,先查看本机是否有jdk,由于Mycat是基于Java语言来编写的,所以需要安装JDK,版本为1.8即可。没有的话安装一下然后配置环境变量 [root@ns2 ~]# ls jdk-8u191-linux-x64.tar.gz [root@ns2 ~]# tar xf jdk-8u191-linux-x64.tar.gz //解压 [root@ns2 ~]# mv jdk1.8.0_191 /usr/local/java // 我把它移动到了 /usr/local 下起名叫 java [root@ns2 ~]# vim /etc/profile //配置环境变量 [root@ns2 ~]# source /etc/profile //声明一下 [root@ns2 ~]# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed

MySQL基于Amoeba实现读写分离

瘦欲@ 提交于 2019-12-01 12:31:12
在实际的生活环境中,如果对数据库的读和写都在同一个数据库服务中操作,无论是在安全性,高可用还是高并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提升数据的高并发负载能力这样的方案来进行部署。 读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。 目前较为常见的MySQL读写分离方案有两种: 1.基于程序代码内部实现: 根据select,insert进行路由分类,是目前生产环境应用最广泛的,优点是性能好,因为在代码中实现,不需要增加额外的设备作为硬件开支,缺点是需要开发人员来实现,运维人员无从下手。 2.基于中间代码层实现: 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,代表性程序: ( 1 ) mysql-proxy 为 mysql 开发早期开源项目,通过其自带的 lua 脚本进行 SQL 判断,虽然是 mysql 的官方产品,但是 mysql 官方不建议将其应用到生产环境。 ( 2 ) Amoeba (变形虫)由陈思儒开发,曾就职与阿里巴巴,该程序由 java 语言进行开发,阿里巴巴将其应用于生成环境,它不支持事物和存储过程。 通过程序代码实现 mysql

mysql MyAMI 锁机制

做~自己de王妃 提交于 2019-12-01 11:11:22
为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制。 一、概述 MySQL有三种锁的级别:页级、表级、行级。 MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 MySQL这3种锁的特性可大致归纳如下: 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 二、MyISAM表锁 MyISAM存储引擎只支持表锁,是现在用得最多的存储引擎。 1、查询表级锁争用情况 可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺: mysql> show status like ‘table%’; +-----------------------+----------+ | Variable_name | Value | +--------

MySQL基于Amoeba实现读写分离

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-01 10:17:13
读写分离应用分析: 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作。解决方法: 配置多台数据库服务器以实现主从复制+读写分离。 1、基于程序代码内部实现 在代码中根据select、 insert 进行路由分类,这种方法目前生产环境中应用最广泛。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支。缺点是需要开发人员能来实现,运维人员无从下手。 2、基于中间代理层实现 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库。 常见的代理服务器: MySQL-Proxy Amoeba 实验环境: amoeba: 192.168.200.114 master:192.168.200.111 slave1:192.168.200.112 slave2:192.168.200.113 client:192.168.200.123 前提是主从服务器支持主从复制 配置amoeba服务器: 1.安装amoeba软件 准备好jdk-6u14-linux-x64.bin文件 2.给与该文件执行权限 chmod +x jdk-6u14-linux-x64.bin 3.执行该文件 ./jdk-6u14-linux-x64.bin 执行后会进入阅读模式,一直按回车,提示是否安装是输入yes 4.将文件移动 mv jdk1.6.0_14/

mysql主从备份案例—读写分离(异步主从)

徘徊边缘 提交于 2019-12-01 10:07:18
主备配置 主:MySQL 192.168.200.115 从:MySQL 192.168.200.116 从:MySQL 192.168.200.113 主: yum -y install ntp cp -p /etc/ntp.conf /etc/ntp.conf/origin vim /etc/ntp.conf-------------------------- server 127.127.1.0 fudge 127.127.1.0 startum 8------------------- /etc/init.d/ntpd start chkconfig ntpd on 从:yum -y install ntpdate ntpdate 192.168.200.115 ------------------------------------------------------------------------------------------------------------------ 主: vim /etc/my.cnf--------------------------- server-id = 1 log-bin=mysql-bin log-slave-updates=true------------------------------- 重启 /etc/init

mysql读写分离

只愿长相守 提交于 2019-12-01 10:03:29
搭建一个主从复制服务器:192.168.200.111(master) 192.168.200.112 (slave1)192.168.200.113(slave2) AMOEBA服务器:192.168.200.114 上传jdk-6u14-linux-x64.bin包 [root@localhost ~]# chmod +x jdk-6u14-linux-x64.bin [root@localhost ~]# ./jdk-6u14-linux-x64.bin [root@localhost ~]# mv jdk1.6.0_14/ /usr/local/java [root@localhost ~]# vim /etc/profile 添加五行: export JAVA_HOME=/usr/local/java export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin [root@localhost ~]# source /etc/profile [root

proxysql 系列 ~ 知识点总结

自闭症网瘾萝莉.ら 提交于 2019-12-01 09:44:18
proxysql 知识点总结 1 读写分离搭建(核心) 2 variables熟悉 1 admin 2 mysql 3 variables优化 4 db熟悉 1 main 2 stats 3 monitor 5 后端mysql高可用 6 本身高可用/负载均衡 7 监控 8 性能问题排查 9 原理理解 1 读写分离过程 2 检测延时过程 3 连接池复用原理 10 备份和还原 来源: https://www.cnblogs.com/danhuangpai/p/11675802.html

PostgreSQL 与 MySQL 相比,优势何在?

我只是一个虾纸丫 提交于 2019-12-01 08:46:17
一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。 二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。 三、 PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。 四、PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。 五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。 六、 PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法

MySQL中间件介绍

南楼画角 提交于 2019-12-01 07:57:33
360 Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。 Altas架构: Atlas是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 主要功能: 1. 读写分离 2. 从库负载均衡 3. IP过滤 4. SQL语句黑白名单 5. 自动分表 (1)需带有分表字段。 (2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE语句。 (3)支持多个子表查询结果的合并和排序。 6.之前官方主要功能逻辑由使用lua脚本编写,效率低,Atlas用C改写,QPS提高,latency降低。 7.安全方面的提升 (1)通过配置文件中的pwds参数进行连接Atlas的用户的权限控制。 (2)通过client-ips参数对有权限连接Atlas的ip进行过滤。 (3)日志中记录所有通过Altas处理的SQL语句,包括客户端IP、实际执行该语句的DB、执行成功与否、执行所耗费的时间