mysql读写分离

mysql 主从同步-读写分离

浪子不回头ぞ 提交于 2020-03-18 18:08:13
主从同步与读写分离测试 一、 实验环境(主从同步) Master centos 7.3 192.168.138.13 Slave centos 7.3 192.168.138.14 二、在master操作 安装并配置文件 [root@localhost ~]# yum install mariadb-server -y [root@localhost ~]# cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock server-id=1 //必须唯一 log-bin=mysql-bin //开启binlog日志 character-set-server=utf8 //设置字符集 2.启动mysql [root@localhost ~]# systemctl start mariadb 3. 授权root用户 MariaDB [(none)]> grant all on *.* to root@'localhost' identified by '123456'; MariaDB [(none)]> grant all on *.* to root@'%' identified by '123456'; 4. 刷新权限表 MariaDB [(none)]> flush

<转>MySQL性能调优的10个方法

江枫思渺然 提交于 2020-03-18 14:30:50
文章原地址: http://mp.weixin.qq.com/s/oRXJRz_Y5drmIrcbxSKOcw 1. 选择合适的存储引擎: InnoDB 除非你的数据表使用来做只读或者全文检索 (相信现在提到全文检索,没人会用 MYSQL 了),你应该默认选择 InnoDB 。 你自己在测试的时候可能会发现 MyISAM 比 InnoDB 速度快,这是因为: MyISAM 只缓存索引,而 InnoDB 缓存数据和索引,MyISAM 不支持事务。 但是 如果你使用 innodb_flush_log_at_trx_commit = 2 可以获得接近的读取性能 (相差百倍) 。 1.1 如何将现有的 MyISAM 数据库转换为 InnoDB: mysql -u [USER_NAME] -p -e "SHOW TABLES IN [DATABASE_NAME];" | tail -n +2 | xargs -I '{}' echo "ALTER TABLE {} ENGINE=InnoDB;" > alter_table.sql perl -p -i -e 's/(search_[a-z_]+ ENGINE=)InnoDB//1MyISAM/g' alter_table.sql mysql -u [USER_NAME] -p [DATABASE_NAME] < alter_table

Mysql主从复制

有些话、适合烂在心里 提交于 2020-03-18 14:26:37
一:主从复制 一:介绍 主从复制就是从库不断向主库要数据,来更新自身的数据库以便自身的数据库数据和主库相同。基于二进制日志完成的. 作用: 1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。 2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。 3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。 简单流程介绍:从库读取master.info 中最后一个二进制日志(例mysql-bin.000012)序号和主库连接信息去连接主库(构建的是长链接,会一直问主库要数据),主库通过show master status查看当前最新的二进制日志,假设是mysql-bin.000020,那么主库就会将12-20之间的二进制日志都通过dump线程发送给从库,然后从库进行一系列的更新。 简单搭建一个主从: 构建如下一个主从 Master slave 3307---->3308 1. 3307中创建复制用户 主库开启二进制日志 vim /data/3307/my.cnf log_bin=/data/3307/mysql

mysql-proxy实现读写分离

江枫思渺然 提交于 2020-03-18 14:23:40
其中Amoeba for MySQL也是实现读写分离 环境描述: 操作系统:CentOS6.5 32位 主服务器Master:192.168.179.146 从服务器Slave:192.168.179.147 调度服务器MySQL-Proxy:192.168.179.142 由于电脑配置不行,安装了三台虚拟机,就卡死了,只能将就一下,由于是一主 一从,所以,导致读写都在master上,有机会,再弄两台slave来测试 一.mysql主从复制,参考:http://www.cnblogs.com/lin3615/p/5679828.html 二、mysql-proxy实现读写分离 1、安装mysql-proxy 实现读写分离是有lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装 下载:http://dev.mysql.com/downloads/mysql-proxy/ 一定要下载对应的版本 tar zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz mv mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit /usr/local/mysql-proxy 2、配置mysql-proxy,创建主配置文件 cd /usr/local/mysql-proxy mkdir lua

mysql proxy 读写分离

限于喜欢 提交于 2020-03-18 14:23:26
环境描述: 操作系统:CentOS6.5 32位 主服务器Master:192.168.179.146 从服务器Slave:192.168.179.147 调度服务器MySQL-Proxy:192.168.179.142 由于电脑配置不行,安装了三台虚拟机,就卡死了,只能将就一下,由于是一主 一从,所以,导致读写都在master上,有机会,再弄两台slave来测试 一.mysql主从复制,参考:http://www.cnblogs.com/lin3615/p/5679828.html 二、mysql-proxy实现读写分离 1、安装mysql-proxy 实现读写分离是有lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装 下载:http://dev.mysql.com/downloads/mysql-proxy/ 一定要下载对应的版本 tar zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz mv mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit /usr/local/mysql-proxy 2、配置mysql-proxy,创建主配置文件 cd /usr/local/mysql-proxy mkdir lua #创建脚本存放目录 mkdir logs #创建日志目录

MySql的读写分离

谁都会走 提交于 2020-03-18 11:00:06
数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。 主从集群 这种集群方式,就是将访问的压力从主库转移到从库,单机的数据库不能支撑并发读写的时候,而且读的请求很多的情况下就适合数据库集群。如果写的操作很多的话,那就不适合这种集群方式,因为写的时候是写入主库,主库的压力还是没有变化,同时同步到从库也需要消耗资源。 单机的时候,一般数据库优化就是加索引,但是加了索引对查询有优化,但是写入的时候会有影响,因为写入的数据库不会更新索引。所以在主从数据库中,可以单独的对读库(从数据库)做索引,而写库(主数据库)可以减少缩影而提高写的效率。 但是主从数据库中需要注意: 主从同步延迟、分配机制的考虑 主从同步延迟 二次读取 一般操作是,在从库读取数据时,没有读到数据,就去主库进行数据读取。但是这种操作还是将读的压力返还给主库,如果有恶意的攻击,主库就爆了。 一般情况下,通过对数据库访问的API进行封装就能实现这个功能,业务之间没有耦合。 写了之后的马上读操作操作主库 在写了数据后,立马读操作就去访问主库,之后的读操作访问从库,这种业务上会有高度耦合。 根据业务,将重要的业务数据的读写都放在主库

高性能MySQL 第一章 mysql架构与历史

人盡茶涼 提交于 2020-03-18 10:44:43
mysql的存储引擎架构把查询处理及其他系统任务和数据的存储/提取相分离 1.1 mysql逻辑架构   第一层:链接处理、授权认证、安全等大多数基于网络的工具或者服务都有类似的架构   第二层:核心服务,查询解析、分析、优化、缓存、所有的内置函数(日期、时间等),所有跨存储引擎的功能,存储过程、触发器、视图等   第三层:存储引擎,负责数据的存储和提取   1.1.1 连接管理与安全性     每个客户端连接都会在服务器进程中拥有一个线程,服务器会缓存线程,   1.1.2 优化与执行     mysql会解析查询,并创建解析书,然后优化。     在查询之前,会先检查查询缓存 1.2 并发控制   1.2.1 读写锁     读锁和写锁     1.2.2 锁颗粒       表锁:       行级锁:可以最大程度的支持并发,只在存储引擎层实现 1.3 事务   原子性、一致性、隔离性、持久性   1.3.1 隔离级别     未提交读:事务的修改,即使没有提交,对其他事务也都是可见的。脏读     提交读:一个事务只能看见已经提交的事务的修改。不可重复读     可重复读:保证了同一个事务中多次读取同样记录的结果是一致的,mvcc,mysql默认隔离级别     可串行化:强制事务串行执行   1.3.2 死锁     各种死锁检测和死锁超时机制

MySQL 5.7 深度解析: 半同步复制技术

不问归期 提交于 2020-03-18 07:52:56
复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史。 MySQL的复制分为四种: 普通的replication,异步同步。 搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非常好,可谓非常成熟。 但是这种架构数据是异步的,所以有丢失数据库的风险。 semi-sync replication,半同步。性能,功能都介于异步和全同步中间。从mysql5.5开始诞生,目的是为了折中上述两种架构的性能以及优缺点。 sync replication,全同步。目前官方5.7基于Group replication的全同步技术处在labs版本,离正式集成已经不远。全同步技术带来了更多的数据一致性保障。相信是未来同步技术一个重要方向,值得期待。 mysql cluster。 基于NDB引擎,搭建也简单,本身也比较稳定,是mysql里面对数据保护最靠谱的架构,也是目前唯一一个数据完全同步的架构,数据零丢失。不过对业务比较挑剔,限制也较多。 半同步复制 我们今天谈论第二种架构。我们知道,普通的replication,即mysql的异步复制,依靠mysql二进制日志也即binary log进行数据复制。比如两台机器,一台主机(master),另外一台是从机(slave)。 正常的复制为:事务一(t1)写入binlog buffer;dumper

学会数据库读写分离、分表分库——用Mycat,这一篇就够了!

≡放荡痞女 提交于 2020-03-15 22:47:37
系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用。 安装 Mycat官网: http://www.mycat.io/ 可以了解下Mycat的背景和应用情况,这样使用起来比较有信心。 Mycat下载地址: http://dl.mycat.io/ 官网有个文档,属于详细的介绍,初次入门,看起来比较花时间。 下载: 建议大家选择 1.6-RELEASE 版本,毕竟是比较稳定的版本。 安装: 根据不同的系统选择不同的版本。包括linux、windows、mac,作者考虑还是非常周全的,当然,也有源码版的。(ps:源码版的下载后,只要配置正确,就可以正常运行调试,这个赞一下。) Mycat的安装其实只要解压下载的目录就可以了,非常简单。 安装完成后,目录如下: 目录 说明 bin mycat命令,启动、重启、停止等 catlet catlet为Mycat的一个扩展功能 conf Mycat 配置信息,重点关注 lib Mycat引用的jar包,Mycat是java开发的 logs 日志文件,包括Mycat启动的日志和运行的日志。 配置

MySQL性能优化(一):优化方式

若如初见. 提交于 2020-03-14 12:49:34
原文: MySQL性能优化(一):优化方式 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/vbirdbest/article/details/81047715 一:简介 MySQL性能优化是通过优化各个方面的,不仅仅是优化SQL语句这一方面,而是通过各各方面的优化,每个地方优化一些,这样整体性能就会有明显的提升。 二:优化方式 1. 优化数据库表结构的设计 为什么数据库表的设计会影响性能? 字段的数据类型:不同的数据类型的存储和检索方式不同,对应的性能也不同,所以说要合理的选用字段的数据类型。比如人的年龄用无符号的unsigned tinyint即可,没必要用integer 数据类型的长度:数据库最终要写到磁盘上,所以字段的长度也会影响着磁盘的I/O操作,如果字段的长度很大,那么读取数据也需要更多的I/O, 所以合理的字段长度也能提升数据库的性能。比如用户的手机号11位长度,没必要用255个长度。 表的存储引擎:常用的存储引擎有MyISAM、InnoDB、Memory,不同的存储引擎拥有不同的特性,所以要合理的利用每种存储引擎的长处和优点来提供数据的性能。MyISAM不支持事务,表级锁,但是查询速度快,InnoDB支持事务,行锁。 2. SQL优化