mysql主从配置

PHP 之Mysql优化

别等时光非礼了梦想. 提交于 2019-12-16 13:23:18
一、建立索引 普通索引 index: 对关键字没有要求。 唯一索引 unique index: 要求关键字不能重复。同时增加唯一约束。 主键索引 primary key: 要求关键字不能重复,也不能为NULL。同时增加主键约束。 全文索引 fulltext key: 关键字的来源不是所有字段的数据,而是从字段中提取的特别关键词。 索引的管理: 建表时 更新表结构 1、前缀索引 建立前缀索引的语法: alter table test add KEY (name(5)); name一定是字符类型(索引字段),5为长度 那好,如何确定取前面几个字符呢?显然,这个场景是一个观察的结果,也就是说,必须要有一定量的实际数据,我们才能分析出其规律,也就是说这个索引是在后期优化得来的,前期没必要建立。 计算不重复的概率: select COUNT(DISTINCT name) / COUNT(*) as rate from test; 找出接近rate的一个n(试出最合理的n) select COUNT(DISTINCT LEFT(name, 3)) / COUNT() as rate3 from test; select COUNT(DISTINCT LEFT(name, 5)) / COUNT() as rate5 from test; select COUNT(DISTINCT LEFT

基于MySQL 5.7多源复制及Keepalived搭建三节点高可用架构

你离开我真会死。 提交于 2019-12-16 11:33:19
导读 本内容摘自知数堂第35期公开课《MySQL 5.7 高可用新玩法》 本次公开课视频请访问 http://pan.baidu.com/s/1mia6MZu 知数堂公开课相关视频请访问 https://ke.qq.com/course/172600 基本环境准备 使用Centos 6.X 64位系统 MySQL 使用 MySQL-5.7.17-x86_64 版本,去官方下载mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 版本 机器名 操作系统 Ip node1 centos-6.8 192.168.11.100 node2 centos-6.8 192.168.11.101 node3 centos-6.8 192.168.11.102 三节点集群设置VIP为 192.168.11.110 一般我们建议关闭iptables [wubx@zhishuedu.com ~]# chkconfig —del iptables [wubx@zhishuedu.com ~]# /etc/init.d/iptables stop 并且关闭 selinux [wubx@zhishuedu.com ~]# setenforce 0 并且将配置文件 /etc/sysconfig/selinux 中的下面这行 SELINUX=permissive 更改为

mysql中间件汇总

假如想象 提交于 2019-12-16 08:15:37
一、写在前面 mysql作为互联网公司都会用到的数据库,在使用过程中。会用主从复制来提高性能。会用分库分表解决写入问题。以下介绍mysql中间件的一些实现方案 二、Atlas Atlas时 360 公司开发维护的一个基于MySQL协议的数据中间层项目。 2.1 atlas架构 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 2.3 主要功能 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB 三、Mysql router MySQL Router是mysql官方发布的数据库中间件,是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品 3.1 mysql router架构 1.Router实现读写分离,程序不是直接连接数据库IP,而是固定连接到mysql router。MySQL Router对前端应用是透明的。 应用程序把MySQL

mysql主从复制原理及实践

时光毁灭记忆、已成空白 提交于 2019-12-15 14:33:34
Mysql主从复制原理及实践 系统小说网 wap.kuwx.net mysql主从框架 MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从。可以防止单一主机的数据丢失,提高数据的安全性,务上可以实现读写分离,可以把一些读操作在从服务器上执行,减小主服务器的负担。 主从复制原理 mysql主从复制是指数据可以从一个mysql服务器节点复制到一台或者多台mysql服务器上,多个从服务器采用异步的方式更新主数据库的变化。MySQL主从同步是基于从库对主库binlog文件的增量订阅来实现,更新的事件类型写入到主库的binlog文件中,日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句,以“事件”的形式保存,它描述数据更改,它是以二进制的形式保存在磁盘中。以.000001的方式结尾,binlog文件大小和数字会不断增加,当mysql重启时,数字会不断递增。 主从复制的原理图: 对于每一个主从连接,都需要三个进程来完成,master(binlog dump thread)、slave(I/O thread 、SQL thread)。 主节点会为每一个当前连接的从节点建一个binary log dump 进程 从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin

MySQL集群(PXC)

别说谁变了你拦得住时间么 提交于 2019-12-15 01:03:41
一、目标和方式 1.目标:    1)大型互联网应用的架构设计和业务处理   2)掌握PXC集群MySQL方案的原理   3)掌握PXC集群的强一致性   4)掌握PXC集群的高可用方案 2.分析方式 :由浅入深,循序渐进;案例有小到大,逐步扩展 二、硬件环境需求 1.win /Linux/ MacOS 2.Docker虚拟机 3.内存8GB以上 三、单节点数据库的弊端 1.大型互联网程序用户群里庞大,所以架构必须要特殊设计 2.单节点的数据库无法满足性能上的要求,就像校园网查成绩的时候,如果1万人同时查,你可能拿到就是一个白屏,无论你是收费的还是免费的数据库,单节点都满足不了这种并发需求 3.单节点的数据库没有冗余设计,无法满足高可用,一旦这个机器出现问题,没有其他节点的数据库顶替,那网站将无法正常访问 单节点数据库测试,5000个连接,5000个并发查询,平均就1个连接1个查询,安装好数据库,配置好环境变量,[mysqld]下面配置最大连接量为6000(max_connections=6000),执行下面的命令: mysqlslap -hlocalhost -uroot -pabc123456 -P3306 --concurrency=5000 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type

MySQL架构——mmm部署实例

风流意气都作罢 提交于 2019-12-14 23:21:10
mmm架构的来源 众所周知,MySQL自身提供了主从复制,然后可以很轻松实现master-master双向复制,同时再为其中一个Master节点搭建一个Slave库。这样就实现了MySQL-MMM架构的基础:master1和master2之间双向复制,同时Master1和Slave1之间是主从复制。 这样整个体系中存在两个Master,正常情况下只有一个master对外提供写服务。如果对外提供服务的master意外宕机了,这是MySQL本身并不具备failover切换的能力,尽管集群中仍然有一个正常的master节点,但应用仍不可用。mysql-mmm就是为了解决这个问题诞生的。 mmm架构的原理 MySQL-MMM是Master-Master Replication Manager for MySQL(mysql主主复制管理器)的简称,是Google的开源项目(Perl脚本),主要用来监控mysql主主复制并做失败转移 其原理是将真实数据库节点的IP(RIP)映射为虚拟IP(VIP)集,在这个虚拟的IP集中,有一个专用于write的IP,多个用于read的IP,这个用于Write的VIP映射着数据库集群中的两台master的真实IP(RIP),以此来实现Failover的切换,其他read的VIP可以用来均衡读(balance)。 mmm机构优缺点 优点

MySQL高可用架构之MHA

空扰寡人 提交于 2019-12-14 18:15:36
一、MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成。 自动故障检测和自动故障转移 MHA能够在一个已经存在的复制环境中监控MySQL,当检测到Master故障后能够实现自动故障转移,通过鉴定出最“新”的Salve的relay log,并将其应用到所有的Slave,这样MHA就能够保证各个slave之间的数据一致性,即使有些slave在主库崩溃时还没有收到最新的relay log事件。一个slave节点能否成为候选的主节点可通过在配置文件中配置它的优先级。由于master能够保证各个slave之间的数据一致性,所以所有的slave节点都有希望成为主节点。在通常的replication环境中由于复制中断而极容易产生的数据一致性问题,在MHA中将不会发生。

mysql主从复制原理及实践

北城余情 提交于 2019-12-14 10:58:56
Mysql主从复制原理及实践 mysql主从框架 MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从。可以防止单一主机的数据丢失,提高数据的安全性,务上可以实现读写分离,可以把一些读操作在从服务器上执行,减小主服务器的负担。 主从复制原理 mysql主从复制是指数据可以从一个mysql服务器节点复制到一台或者多台mysql服务器上,多个从服务器采用异步的方式更新主数据库的变化。MySQL主从同步是基于从库对主库binlog文件的增量订阅来实现,更新的事件类型写入到主库的binlog文件中,日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句,以“事件”的形式保存,它描述数据更改,它是以二进制的形式保存在磁盘中。以.000001的方式结尾,binlog文件大小和数字会不断增加,当mysql重启时,数字会不断递增。 主从复制的原理图: 对于每一个主从连接,都需要三个进程来完成,master(binlog dump thread)、slave(I/O thread 、SQL thread)。 主节点会为每一个当前连接的从节点建一个binary log dump 进程 从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I

MySQL-配置文件my.cnf参数优化详解

这一生的挚爱 提交于 2019-12-13 15:21:46
MySQL-配置文件my.cnf参数优化详解 [client] ######################################################################### # # # MySQL客户端配置 # # # ######################################################################### port = 3306 # MySQL客户端默认端口号 socket = /data/mysql/my3306/mysql.sock # 用于本地连接的Unix套接字文件存放路径 default-character-set = utf8mb4 # MySQL客户端默认字符集 [mysql] ######################################################################### # # # MySQL命令行配置 # # # ######################################################################### auto-rehash # 开启tab补齐功能 socket = /data/mysql/my3306/mysql.sock #

linux系统mysql主从配置

蹲街弑〆低调 提交于 2019-12-13 07:39:58
##linux系统mysql主从配置 mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面; 2)master有一个I/O线程将二进制日志发送到slave; slave有一个I/O线程把master发送的二进制写入到relay日志里面; 4)slave有一个SQL线程,按照relay日志处理slave的数据; 二、操作步骤 按照原理,我们开启mysql主从复制,我们大体需要做以下操作: 1)开启master的二进制日志 2)开启slave的二进制日志 3)将slave指向master 4)开始复制 三、开启master二进制日志 1)编辑mysql的配置文件,使用命令: vim /etc/my.cnf 2)添加二进制日志配置,开启二进制(master-bin只是日志文件名称,可以自己指定) log-bin=master-bin server-id=1 注意:server-id是要指定的,不然会报错,每一台指定一个唯一标识符 四、授权 我们需要给slave配置一个用户/密码的权限 mysql>GRANT REPLICATION SLAVE ON . TO ‘用户名’@‘slave数据库的IP地址’ IDENTIFIED BY ‘密码’; 这行命令的意思是:允许在某个IP地址的某个用户以某个密码对当前数据库的所有库和所有表进行复制操作 注意:以上配置了权限