MySQL-Proxy

linux运维人员必会运维工具

爷,独闯天下 提交于 2020-08-06 09:57:38
linux运维人员必会开源运维工具体系 说明:不同的技术人员,不同的阶段确定知识边界非常重要,否则,就像马拉车,不知道终点在哪,累死也达不到目标。例如拿8K要学多少,拿15K要学多少。一个新手也许只想拿8k结果 各种学, 学了2年,发现都学了,结果8k还是拿不到,归根结底,没边界瞎学,熊瞎子掰苞米,掰一个丢一个,学知识是有周期的,学太多又拖太长和没学差不多,2016年5月更新! 新手必会用 深×××(8-15k) 标记,老鸟必会 深××× + 浅蓝色(15-25K)标记 ============================================== 操作系统: Centos ,Ubuntu,Redhat,suse , Freebsd 网站服务: nginx ,apache , lighttpd, php , tomcat , resin 数据 库: MySQL ,Mysql-proxy, MariaDB , PostgreSQL DB中间件: MyCat , atlas, cobar ,amoeba,MySQL-proxy 代理相关: lvs,keepalived , haproxy , nginx , heartbeat 网站缓存: squid , nginx , varnish NOSQL库: memcached , memcachedb, MongoDB

Linux MySQL Proxy 读写分离

ⅰ亾dé卋堺 提交于 2020-07-27 02:57:38
导读   因为 读写分离 是 建立在MySQL集群主从复制的基础上 ,还不了解的,先看我另一篇博客: 点我直达 MySQL-Proxy简介   mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上。mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:   进一步的,mysql-proxy可以分析与修改请求。拦截查询和修改结果,需要通过编写Lua脚本来完成。mysql-proxy允许用户指定Lua脚本对请求进行拦截,对请求进行分析与修改,它还允许用户指定Lua脚本对服务器的返回结果进行修改,加入一些结果集或者去除一些结果集均可。   根本上,mysql-proxy是一个官方提供的框架,具备良好的扩展性,可以用来完成: sql拦截与修改 性能分析与监控 读写分离 请求路由 下载 官网链接: 点我直达 百度云盘地址:https: // pan.baidu.com/s/1Aw1laIWYJVvHYshHXw4p_Q 密码: 9qif 需求 1台MySQL-Proxy机器,IP:192.168.1.106 1台MySQl主服务器( 可读可写 ),IP:192

MySQL主从复制(4)原理画图深入浅出

孤街醉人 提交于 2020-05-01 06:29:23
一、如何实现MySQL主从读写分离     1、通过程序实现读写分离(性能,效率最佳,推荐)     php和java程序都可以通过设置多个连接文件轻松的实现对数据库的读写分离,即当select时,就去连接读库的连接文件,当updata,insert,delete时就连接写库的连接文件。     2、通过软件实现读写分离     MySQL-proxy,Amoeba等代理软件也可以实现读写分离功能, 但最常用好用的还是程序实现读写分离。     3、开发dbproxy 二、主从复制原理图: 三、MySQL主从复制原理过程     1、同步的时候,从库有俩个线程完成IO、SQL线程,主从有一个线程完成IO线程。     2、要在从库上面配置连接主库的IP、用户名、账号、密码、文件的位置、以及pos点等。     3、开启开关之前,要确保主从库是一致的。     4、要在主库上建立专门用于从库同步的账号。     5、主库要打开binlog开关,否则无法实现同步。     6、从库打开开关的过程,其实就是让IO,SQL线程工作的过程 来源: oschina 链接: https://my.oschina.net/u/4294821/blog/4114896

MySQL主从复制&读写分离&分库分表

ⅰ亾dé卋堺 提交于 2020-05-01 05:12:38
MySQL主从复制 MySQL的主从复制只能保证主机对外提供服务,从机是不提供服务的,只是在后台为主机进行备份数据 首先我们说说主从复制的原理,这个是必须要理解的玩意儿: 理解:    MySQL之间的数据复制的基础就是二进制日志文件bin log ,Master的所有操作都会纪录在二进制日志文件中,其他MySQL通过一个IO线程与其进行通信,监控这个日志文件的变化,并将变化赋值到Slave的中继日志relay中,然后SQL线程会执行中继日志中的相关操作,以此实现主从数据库的一致性,也就是主从复制 主从搭建,配置 Master 准备材料如下: 分别装在两台Linux服务器上的数据库 master:192.168.159.159 slave : 192.168.159.169 master数据库配置文件修改:my.cnf 各自的安装方式不一样,我是通过rpm方式安装的, 在这里扩展一下: 通过这两个命令,大致发现了我的MySQL的安装目录    当然我的配置文件在在 /etc/mysql/my.cnf 在[mysqld]段下添加如下内容 log-bin=mysql-bin server-id=159    然后重启Mysql: service mysqld restart 登录到MySQL建立账户并授权给Slave mysql> CREATE USER 'chen' @'192

MySQL 主从分离(读写分离)原理知识要点

≯℡__Kan透↙ 提交于 2020-05-01 05:12:20
1、what 什么是读写分离? 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2、why 为什么要读写分离呢? 因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。 但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。 所以读写分离,解决的是,数据库的写入,影响了查询的效率。 3、when 什么时候要读写分离? 数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库主从同步 。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是 表折分,或是搜索引擎。都是解决方法。 4、主从复制与读写分离 在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于前面我们学习过的rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。 4.1、 mysq支持的复制类型 1) 基于语句的复制

MySQL主从复制介绍:使用场景、原理和实践

耗尽温柔 提交于 2020-05-01 05:12:03
MySQL数据库的主从复制方案,和使用scp/rsync等命令进行的文件级别复制类似,都是数据的远程传输,只不过MySQL的主从复制是其自带的功能,无需借助第三方工具,而且,MySQL的主从复制并不是数据库磁盘上的文件直接拷贝,而是通过逻辑的binlog日志复制到要同步的服务器本地,然后由本地的线程读取日志里面的SQL语句重新应用到MySQL数据库中。 1.1.1 MySQL主从复制介绍 MySQL数据库支持单向、双向、链式级联、环状等不同业务场景的复制。在复制过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(Slave),接收来自主服务器binlog文件的日志内容,解析出SQL重新更新到从服务器,使得主从服务器数据达到一致。 如果设置了链式级联复制,那么,从(slave)服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器。链式级复制类似A→B→C的复制形式。 1.1.2 MySQL主从复制的企业应用场景 MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写称为可能,同时有效地保护了物理服务器宕机场景的数据备份。 应用场景1:从服务器作为主服务器的实时数据备份 主从服务器架构的设置,可以大大加强MySQL数据库架构的健壮性。例如:当主服务器出现问题时

Mysql-Proxy 读写分离的各种坑,特别是复制延迟时

蓝咒 提交于 2020-04-28 12:50:30
延迟问题 读写分离不能回避的问题之一就是延迟,可以考虑Google提供的SemiSyncReplicationDesign补丁。 端口问题 MySQL-Proxy缺省使用的是4040端口,如果你想透明的把3306端口的请求转发给4040的话,那么可以: iptables -t nat -I PREROUTING -s ! 127.0.0.1 -p tcp --dport 3306 -j REDIRECT --to-ports 4040 查询乱码 连接上MySQL-Proxy后,执行查询时,随机出现乱码。出现此问题的原因是当我们使用MySQL-Proxy读写分离时,通常会有多个后端服务器,客户端发出查询请求时,一般会先发出一条类似"SET NAME gbk"的语句来声明客户端编码,然后再发出实际查询的SQL语句,但MySQL-Proxy可能会把这两条语句分发给不同的后端服务器,于是就出现了乱码。 解决方法是强行指定后端服务器的字符编码: init-connect='SET NAME gbk' default-character-set=gbk skip-character-set-client-handshake 如果使用init-connect,则需要注意操作用户不能有SUPER权限,否则此选项无效。 即便做好了以上的设置后,还有可能会出现乱码,比如说数据库是gbk的

Mysql主从复制的配置(双机互为主从)

不想你离开。 提交于 2020-04-12 16:53:03
目的: 让两台mysql服务器可以互为主从提供同步服务. 优点: mysql的主从复制的主要优点是同步"备份", 在从机上的数据库就相当于一个(基本实时)备份库. 在主从复制基础上, 通过mysqlproxy可以做到读写分离, 由从机分担一些查询压力. 做一个双向的主从复制, 两台机器互相为主机从机, 这样, 在任何一个机器的库中写入, 都会"实时"同步到另一台机器, 双向的优点在于当一台主机发生故障时, 另一台主机可以快速的切换过来继续服务. 步骤: 在两台机器上添加一个用于从机访问的帐号, 赋予REPLICATION SLAVE权限. GRANT REPLICATION SLAVE ON . TO 'slave'@'%' IDENTIFIED BY 'slave'; 为slave用户赋予任何数据库中任何表上的REPLICATION SLAVE权限, 此用户可以在网络任意位置访问, 访问时以密码slave标记. 当使用的是ubuntu的时候, 需要注意一点, /etc/mysql/my.cnf配置文件下的bind-address = 127.0.0.1这一行需要注释, 不然从机在请求时是连接不到的.(我的是ubuntu, 其他版linux不知道会不会一样) 为了保证工作的步骤明细, 可以采用在配置完用户相关信息之后, 在另一台机器上以分配的用户密码连接一次,

配置MySQL主从复制和读写分离

谁都会走 提交于 2020-03-25 11:43:55
3 月,跳不动了?>>> 实验环境 序号 主机名 IP地址 备注 1 mysql-master 192.168.204.201 MySQL主库 2 mysql-slave 192.168.204.202 MySQL从库 3 appserver 192.168.204.111 应用服务器 安装配置MySQL数据库 1.使用yum安装mysql和mysql-server yum install -y mariadb mariadb-server 2.启动mysql服务 systemctl start mariadb systemctl enable mariadb 3.查看启动状态 systemctl status mariadb netstat -anpt | grep "mysql" --color 4.允许3306端口通过防火墙 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload 5.设置MySQL密码 mysql_secure_installation 6.在mysql-master上创建数据库 使用 root 用户登录MySQL mysql -uroot -p123456 创建数据库并添加数据 create database db_test; show

How to log SQL errors AND warnings with a Lua script on mysql-proxy

删除回忆录丶 提交于 2020-01-17 01:42:19
问题 For debug purposes, I want to log SQL errors and warnings messages returned by MySQL, and corresponding queries, at server-level. I've found two useful Lua scripts : https://github.com/koopa/mysql-proxy-log-error-queries/blob/master/mysql-proxy-log-error-queries.lua https://github.com/patrickallaert/MySQL-Proxy-scripts-for-devs (debug.lua) which allow to log errors with MySQL Proxy. But I'm still looking for a way to log warnings. I'm not confident with mysql-proxy LUA-scripting. Can someone