mysql数据库

mysql日志redo log 和binlog

左心房为你撑大大i 提交于 2020-01-21 17:26:02
在上一篇中我们说到了mysql的基础架构,通常一个查询操作只会涉及到基础架构中的那几部分; 首先连接数据库,分析器进行语义、语法分析,优化器生成执行计划和索引选择、执行器执行对应的语句、存储引擎查看内存中是否有对应的数据,有的话直接返回,没有的话从磁盘查找(不考虑查询缓存);但是对于更新操作的话还需要用到日志来辅助 日志的作用:1、数据恢复需要用到binlog       2、数据库重启后需要redo log来保证数据的可靠,会出现数据还没写入磁盘服务器异常重启的情况 一、redo log(重做log) 由于直接更新磁盘响应较慢,所以引入了redo log,除了解决这个问题外它还能保证crash-safe redo log 是InnoDB特有的,他可以保证crash-safe(即数据库发生异常重启,之前提交的数据都不会丢失),因为提交记录都被保存在redo log中,重启之后仍然会将redo log中的提交记录刷新到磁盘 redo log大小是固定的,更新操作时并不会先直接更新磁盘中的数据,而是先将更新操作记录在redo log中,然后再更新内存中的数据,当数据库空闲时再将redo log中的记录刷新到数据库,如果数据库一直不空闲当redo log日志满了后数据库会先暂停其他的操作,先将redo log中的记录刷新到磁盘,这时会出现查询缓慢的情况(sql抖动) 二、binlog

mysql必知必会--排序检索数据

烈酒焚心 提交于 2020-01-21 16:16:39
排序数据 其实,检索出的数据并不是以纯粹的随机顺序显示的。如果不排 序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初 添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺 序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控 制的话,不能(也不应该)依赖该排序顺序。关系数据库设计理论认 为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有 意义。 子句(clause) SQL语句由子句构成,有些子句是必需的,而 有的是可选的。一个子句通常由一个关键字和所提供的数据组 成。子句的例子有 SELECT 语句的 FROM 子句 为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字,据此对输出进行排序 通过非选择列进行排序 通常, ORDER BY 子句中使用的列将 是为显示所选择的列。但是,实际上并不一定要这样,用非 检索的列排序数据是完全合法的 按多个列排序 经常需要按不止一个列进行数据排序。例如,如果要显示雇员清单, 可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。 如果多个雇员具有相同的姓,这样做很有用。 为了按多个列排序,只要指定列名,列名之间用逗号分开即可(就 像选择多个列时所做的那样)。 重要的是理解在按多个列排序时,排序完全按所规定的顺序进行。

mysql 5.7安装

我怕爱的太早我们不能终老 提交于 2020-01-21 16:03:15
一、写随笔的原因: 最近在阿里云上买了个centos7.3服务器,想将一些demo运行在上面,所以需要做一些环境的安装,通过此篇文章MAKR一下。下面来记录下安装步骤(参考网上的一些教程,有坑的话会实时记录)。 二、具体的内容: 1.进入官网找到5.7的yum源 懒得人可以直接点开这个地址:https://dev.mysql.com/downloads/repo/yum/ 选择第一个,如图: 点进去后,点击下面的链接,右键复制链接地址:( https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm ),这里有个坑,就是这个YUM源是官方默认最新的8.0的,如何安装5.7呢,下面的步骤3会提到, 有个简单的办法就是5.7的链接( https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm )。 2.下载和安装yum源: 在服务器上运行下载命令: wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm (如果yum源是5.7的忽略掉下面的第3步) 如下图: 继续输入安装命令: rpm -ivh mysql80-community

MySQL8 主从复制配置

淺唱寂寞╮ 提交于 2020-01-21 15:54:05
对于主从复制的原理我这里就不解释了,CSDN其他文章都有介绍,我这边就介绍同步的步骤。 话不多说,直接开干。 首先,我们还是要保证数据库版本的一致性。 1、主节(Master)点配置 首先找到Master的配置文件(my.ini文件) 找到后加入或者配置一下参数: log-bin=mysql-bin server-id=1 2、从节点(Slave)配置 首先找到Slave的配置文件(my.ini文件) 找到后加入或者配置一下参数: server-id=2 3、授权操作的用户 注意root是主服务器的用户,而 192.168.0.2 指的是从数据库的服务器IP,意思就是让从服务器有访问的权限 mysql> CREATE USER 'root'@'192.168.0.1' IDENTIFIED WITH mysql_native_password BY 'admin'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.0.2'; 我这边没有新建用户,权当测试用的,你们可以新建一个专门操作同步的用户。 刷新授权表信息 mysql> flush privileges; 4、获取主服务器当前binary log文件名和位置 5、在从(Slave)节点上设置主节点参数 mysql> CHANGE MASTER TO MASTER

MySQL 主从分离(读写分离)原理

好久不见. 提交于 2020-01-21 14:05:22
文章来源: https://www.cnblogs.com/php826291930/p/11242436.html 因为看了觉得通俗易懂,就转载了次文章,以做备份,如果侵犯原作者相应权利,请第一时间联系我进行删帖 1、what 什么是读写分离? 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2、why 为什么要读写分离呢? 因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。 但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。 所以读写分离,解决的是,数据库的写入,影响了查询的效率。 3、when 什么时候要读写分离? 数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库主从同步 。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是 表折分,或是搜索引擎。都是解决方法。 4、主从复制与读写分离 在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据

Sphinx与coreseek

妖精的绣舞 提交于 2020-01-21 13:38:29
Sphinx : 高性能 SQL 全文检索引擎 分类 编程技术 Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。 Sphinx 的特点 快速创建索引:3分钟左右即可创建近100万条记录的索引,并且采用了增量索引的方式,重建索引非常迅速。 闪电般的检索速度:尽管是1千万条的大数据量,查询数据的速度也在毫秒级以上,2-4G的文本量中平均查询速度不到0.1秒。 为很多脚本语言设计了检索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分编程应用中很方便地调用Sphinx的相关接口。 为MySQL设计了一个存储引擎插件,因此如果你在MySQL上使用Sphinx,那简直就方便到家了。 支持分布式搜索,可以横向扩展系统性能。 PHP+MySQL+Sphinx 搜索引擎架构图 在 MySQL 中安装 Sphinx Sphinx在MySQL上安装有两种方式: 第一种方式是采用API调用,我们可以使用PHP,Python,Perl,Ruby等编程语言的API函数进行查询,这种方式不必重新编译MySQL,模块间改动比较少,相对灵活。 第二种需要重新编译MySQL,将Sphinx以插件的方式编译到MySQL中去,这种方式对程序改动比较少

Zabbix监控平台(一)搭建部署与概述

十年热恋 提交于 2020-01-21 09:08:33
一、Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 Zabbix 的运行架构如下图所示: 1.1 组件 zabbix 由以下几个组件部分构成: 1) Zabbix Server: 负责接收 agent 发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行; 2) Database Storage: 专用于存储所有配置信息,以及由 zabbix 收集的数据; 3) Web interface: zabbix 的 GUI 接口,通常与 Server 运行在同一台主机上; 4) Proxy: 可选组件,常用于分布监控环境中,代理 Server 收集部分被监控端的监控数据 并统一发往 Server 端; 5) Agent: 部署在被监控主机上,负责收集本地数据并发往 Server 端或 Proxy 端; 注:zabbix node 也是 zabbix server 的一种 。 1.2 进程 默认情况下zabbix包含5个程序: zabbix_agentd、 zabbix_get、 zabbix_proxy、 zabbix_sender、zabbix_server,另外一个

复制mysql数据库中的表

柔情痞子 提交于 2020-01-21 04:49:41
仅仅复制表结构:create table2 XX like table1 也复制数据 :create table2 XX select * from table1 只复制部分数据:create table2 XX select **,** from table1 (筛选条件) 仅仅复制部分结构:create table2 XX select id ,name from table1 where 0;(使得筛选条件恒为0 数据过不来) 来源: CSDN 作者: sy8207880 链接: https://blog.csdn.net/sinat_37236995/article/details/104037428

【Mysql】Linux RPM 方式安装 MySQL

 ̄綄美尐妖づ 提交于 2020-01-21 04:35:20
文章目录 Linux RPM 方式安装 MySQL 1 检查以前是否有安装Mysql,卸载 2 下载安装包 3 开始安装 4 重置数据库密码 5 修改mysql密码过期问题(无则跳过) 6 解决Your password does not satisfy the current policy requirements 7 增加远程登陆权限 Linux RPM 方式安装 MySQL (记得使用 root 账户进行操作,若使用普通用户,那么请修改相应文件夹权限) 1 检查以前是否有安装Mysql,卸载 检查以前是否装过 MySQL rpm -qa | grep -i mysql centos7默认会安装mariadb,也要卸载,避免冲突 [ root@hdp01 ~ ] # rpm -qa |grep -i mariadb mariadb-libs-5.5.60-1.el7_5.x86_64 [ root@hdp01 ~ ] # rpm -e --nodeps mariadb-libs 发现有的话就都卸载 删除老版本 mysql 的开发头文件和库 rm -fr /usr/lib/mysql #数据库目录 rm -fr /usr/include/mysql rm -f /etc/my.cnf rm -fr /var/lib/mysql 注意:卸载后/var/lib/mysql 中的数据及

mysql还原大sql文件

落爺英雄遲暮 提交于 2020-01-21 04:10:19
使用工具:Sqlyog sql文件大小:6.5G 总耗时:约1小时 步骤:0.检查mysql的 max_allowed_packet 配置,默认max_allowed_packet为1k,如果导入的文件过大。可能会报错,修改mysql 配置文件设置 max_allowed_packet=1024M (最大值),保存, 重启mysql 。可使用以下语句查询是否配置生效, show VARIABLES like '%max_allowed_packet%'; 1.打开sqlyog,选择sql还原 2.选择要还原的数据库 3.关闭外键检查, SET FOREIGN_KEY_CHECKS=0; (还原成功后再执行SET FOREIGN_KEY_CHECKS=1;开启外键检查) 4.设置编码为utf8,防止中文乱码, set names utf8; (具体根据备份库备份的编码设置,两者需保持一致) 5.开始还原 来源: CSDN 作者: ganckun 链接: https://blog.csdn.net/mangck/article/details/104047880