mysql主从配置

redis高级

你。 提交于 2019-11-29 19:01:59
一.Redis简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色 二.Redis特性 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 三.Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 丰富的特性 –

mysql host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

南楼画角 提交于 2019-11-29 18:36:11
同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值,现在版本的默认值很小,可以适当修改大一点)中断的数据库连接而导致的阻塞; 解决方法: 1、提高允许的max_connection_errors数量(治标不治本):   ① 进入Mysql数据库查看max_connection_errors: show variables like '%max_connection_errors%';   ② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;   ③ 查看是否修改成功: show variables like '%max_connection_errors%'; 2、使用 mysqladmin flush-hosts 命令清理一下hosts文件(不知道mysqladmin在哪个目录下可以使用命令查找: whereis mysqladmin );   ① 在查找到的目录下使用命令修改:/usr/bin/ mysqladmin flush-hosts -h192.168.1.1 -P3308 -uroot -prootpwd;   备注:     其中端口号,用户名,密码都可以根据需要来添加和修改;     配置有master

mysql数据库优化概述详解

十年热恋 提交于 2019-11-29 18:05:09
mysql查询的过程图 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计数据库时:数据库表、字段的设计,存储引擎 利用好MySQL自身提供的功能,如索引等 横向扩展:MySQL集群、负载均衡、读写分离 SQL语句的优化(收效甚微) 一、字段设计阶段 选取最适用的字段属性 1. 字段的宽度设得尽可能小 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 2. 尽量把字段设置为NOTNULL 在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 3. 确定数据定义为ENUM类型 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 4. 单表字段不宜过多,可以预留字段 满足业务需求的前提下二三是个字段就是极限了,可以预留字段便于扩展。 遵循数据表的设计规范 1. 第一范式(1NF) 字段值具有原子性

mysql读写分离-mysql-proxy的配置

戏子无情 提交于 2019-11-29 17:40:33
读写分离介绍 读写分离适合于读特别多的场景,一台只写,一台只读,提高读的效率。 实现的思路 前提: 读写分离建立在两台机器上,并且这两台机器是做了主从复制的,主库只写,从库只读,从而实现的。 实现: 第一种: 在主库创建一个只写的用户,而从库创建一个只写的用户,让程序去连接不同的服务器可达到读写分离的效果。 第二种: 通过代理软件,这种的好处是程序不需要关心写和读的操作分别连接的哪台服务器,只管往代理机器发即可,代理软件进行判断发往不同的mysql服务器。 通过代理实现的软件有:mysql-proxy,amoeba 代理方式的实现 图解: 环境: 需要开三台机器。 192.168.101 # 主库-只写 192.168.102 # 从库-只读 192.168.100 # 代理 安装lua脚本语言: # 这个是mysql-proxy需要的 官方下载地址: http://www.lua.org/ftp/ (1)安装依赖 yum install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make readline-devel -y (2)下载包 wget http://www.lua.org/ftp/lua-5.3.5.tar.gz -P /opt/ (3)解压包 cd /opt/ tar xf

专职DBA-MySQL日志管理2

让人想犯罪 __ 提交于 2019-11-29 12:35:21
专职DBA-MySQL日志管理2 [root@db01 ~]# mysqld --defaults-file=/data/mysql/3306/my.cnf & [root@db01 ~]# ps -ef | grep mysql [root@db01 ~]# netstat -lnp | grep mysql [root@db01 ~]# mysql -S /data/mysql/3306/mysql.sock -p 错误日志(log_error): 文本形式记录MySQL启动,关闭,日常运行过程中所有状态信息,警告,错误。 错误日志配置,默认就是开启的:/数据目录下/hostname.err 手工设定: mysql> select @@log_error; +----------------------------+ | @@log_error | +----------------------------+ | /data/mysql/3306/error.log | +----------------------------+ 1 row in set (0.01 sec) mysql> show global variables like "log_error"; [root@db01 ~]# grep "log_error" /data/mysql/3306/my

MySQL常见知识点2

孤街醉人 提交于 2019-11-29 09:47:24
在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM。 首先: 1.简单介绍这两种引擎,以及该如何去选择。 2.这两种引擎所使用的数据结构是什么。 1. a.Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数的。当进行Select count(*) from table指令的时候,需要进行扫描全表。所以当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的。 b.MyIASM引擎,它是MySql的默认引擎,但不提供事务的支持,也不支持行级锁和外键。因此当执行Insert插入和Update更新语句时,即执行写操作的时候需要锁定这个表。所以会导致效率会降低。不过和Innodb不同的是,MyIASM引擎是保存了表的行数,于是当进行Select count(*) from table语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的

Mysql常见知识点3

倾然丶 夕夏残阳落幕 提交于 2019-11-29 09:47:17
Mysql 的存储引擎,myisam和innodb的区别。 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。 2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。 数据表类型有哪些 答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。 MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。 b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。 c. mysql库主从读写分离。 d. 找规律分表,减少单表中的数据量提高查询速度。 e。添加缓存机制,比如memcached,apc等。 f. 不经常改动的页面,生成静态页面。 g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?

集群之MYsql主从服务之引伸出Mysql互为主从(环形结构)外加简单实现自己个人的负载均衡器(3)

时光总嘲笑我的痴心妄想 提交于 2019-11-29 09:19:57
备注: 本人资历很浅,说的不对话,万望各位前辈不要计较, 另关于环形的问题,我在后面的评论给予回复, 其实环形,解决多地域问题比较好的选择 关于配置步骤我重新整理了一下(主从AND环形)的配置步骤 在我博客中,有兴趣的朋友可以看一下, http://my.oschina.net/u/1246814/blog/267518 多谢大家的指导. 比如 我有主的1台mysql服务器,俩从服务服务器 外加一个负载均衡器(如果把负载均衡器非常简单的来说话其实就DNS的转发,非常简单来说,其实 IP的轮换嘛) 我读数据的也就(查询)数据 也就(Select)语句时候,我只是在 仨台从服务器中读取数据 主服务器负责(增,删,改)这个一系列操作 顺便唠叨一下, 为啥 Select 我们建仨服务器或者多个呢? 因为距统计,大概B/S架构70%以上的操作都是以查为主(说白了就是展示嘛) 我们执行了DML语句那么负载均衡器, 就会把请求转发到主mysql服务器上, 这里有个问题? 我们已经向主服务器插入数据,或者删除数据,或者更新了数据, 那么是不是意味从服务里数据也应该发生变化呢 是的,从服务器肯定要发生变化的,不然就出现问题, 比如说,我删除了一个用户, 我查询一下被删除的用户, 丫的发现这个用户压根就没被删除,这不是搞笑了嘛, 那么就有了主从配置一说 主从原理:mysql中有一种日志叫做bin日志

MySQL主从同步配置

浪尽此生 提交于 2019-11-29 08:31:31
MySQL主从同步配置 1. 主从同步的定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。 使用主从同步的好处: 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能 2. 主从同步的机制 Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。 在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。 每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句

mysl 基于 GTID主从复制

ぐ巨炮叔叔 提交于 2019-11-29 08:03:32
注意:如果主mysql已经跑了一段时间,需要用备份软件把数据备份恢复到从服务器上去,确保主从服务器数据一致,否则可能报错,而且mysql 只有5.6 以后才支持gtid,安装时确保你的软件支持gpid 1.安装mysql wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm #下载mysql的yum源 yum install mysql57-community-release-el7-10.noarch.rpm -y # 安装yum源 yum -y install mysql-community-server -y #yum 安装mysql 2.编辑主配置文件 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock basedir=/usr/local/mysql user=mysql port=3306 server-id=1 gtid-mode=ON enforce-gtid-consistency=ON binlog_format=row log-bin=log-bin symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run