mysql数据库

没想到MySQL还会问这些...

我怕爱的太早我们不能终老 提交于 2020-03-10 09:45:27
前言 文本已收录至我的GitHub精选文章,欢迎Star : https://github.com/ZhongFuCheng3y/3y 在前一阵子,大哥问过我:”你知道MySQL的原子性是怎么保证的吗“。我懵逼了,MySQL怎么保证原子性?我不会啊。 谁都知道在事务里边原子性的意思:” 一个事务包含多个操作,这些操作要么全部执行,要么全都不执行 “ 于是大哥就给我讲:”用的就是 undo log 啊“。 我:”卧槽,又是知识盲区“ 后来在网上翻了一下,MySQL里边还有几种常见的 log ,分别为: undo log binlog redo log 如果你也未曾关注过这些 log ,麻烦在评论区给我留个言, 让我觉得不是只有我一个人这么菜,行不行 ? 后来我又去搜了一下,其实这几种log在 面试 的时候也经常会问到,这篇文章以最简单的方式来讲讲,希望对大家有帮助。 一、什么是binlog binlog 其实在日常的开发中是听得很多的,因为很多时候数据的更新就依赖着 binlog 。 举个很简单的例子:我们的数据是保存在数据库里边的嘛,现在我们对某个商品的某个字段的内容改了(数据库变更),而 用户检索的出来数据是走搜索引擎的 。为了让用户能搜到最新的数据,我们需要把引擎的数据也改掉。 一句话: 数据库的变更,搜索引擎的数据也需要变更 。 于是,我们就会监听 binlog 的变更,如果

Logstash的配置

。_饼干妹妹 提交于 2020-03-10 08:26:48
MySql 到 Elasticsearch input { jdbc { # 驱动jar包的位置 jdbc_driver_library => "/usr/local/logstash/jdbc-driver-library/mysql-connector-java-8.0.19.jar" # 驱动类名 jdbc_driver_class => "com.mysql.cj.jdbc.Driver" # 数据库连接 jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/base_db?characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull" # mysql用户名 jdbc_user => "root" # mysql密码 jdbc_password => "123456" # 数据库重连尝试次数 connection_retry_attempts => "3" # 开启分页查询(默认false不开启) jdbc_paging_enabled => true # 单次分页查询条数(默认100000,若字段较多且更新频率较高,建议调低此值) jdbc_page_size =>

flink读mysql

我的梦境 提交于 2020-03-10 08:22:46
flink读取mysql需要继承RichSourceFunction,代码如下 import com . aibee . flinktemplate . model . GateEvent ; import org . apache . flink . configuration . Configuration ; import org . apache . flink . streaming . api . functions . source . RichSourceFunction ; import java . sql . * ; public class FaceEventMysqlSource extends RichSourceFunction < GateEvent > { PreparedStatement ps ; private Connection connection ; boolean isRunning = true ; long timeInterval = 30 * 60 * 1000 L ; // 间隔 1h 查询一次 @Override public void open ( Configuration parameters ) throws Exception { super . open ( parameters ) ; connection

centos7 国内镜像yum安装mysql5.7

半世苍凉 提交于 2020-03-10 06:19:30
检查mysql环境是否已存在 虽然我的是纯净系统,但别人的不能保证,为了避免发生什么问题我们还是先检查下mysql是否已经安装过 [root@localhost ~]# rpm -qa | grep mysql [root@localhost ~]# rpm -qa |grep mariadb mariadb-libs-5.5.64-1.el7.x86_64 我这里要卸载mariadb [root@localhost ~]# yum remove mariadb-libs-5.5.64-1.el7.x86_64 假如你发现类似的就和我一样删除就好了 切换阿里云镜像源 先安装wget [root@localhost ~]# yum install wget -y 然后下载阿里云yum源配置 [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 然后生成缓存 [root@localhost ~]# yum makecache 显视元数据缓存已建立就代表完成了 然后我们更新一下yum [root@localhost ~]# yum update -y 这可能需要一点时间,耐心等待一下 下载国内的mysql rpm包并安装 地址为

MySQL日志管理

亡梦爱人 提交于 2020-03-10 06:04:53
MySQL日志管理 错误日志 配置方法: vim /etc/my.cnf [mysqld] log-error=/tmp/mysql.log 查看配置方式: show variables like '%log%error%'; 作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志。 一般查询日志 配置方法: vim /etc/my.cnf [mysqld] general_log=on general_log_file=/data/mysql/server2.log 查看配置方式: show variables like '%gen%'; 作用: 记录mysql所有执行成功的SQL语句信息,可以做审计用,但是我们很少开启; 可以作为审计功能,一般情况下这个日志不会开,除非有特殊要求 例如:ELK 二进制日志 建议刚部署mysql数据库的时候就开启二进制日志 二进制日志不依赖于存储引擎的,依赖于sql层,记录和sql语句有关的信息 在sql层已经执行完成的语句,如果是事务,应当是已经完成的事务 功能作用:备份和时间点恢复、主从 二进制日志记录了什么? 已提交的数据记录,以事件的形式记录到二进制文件中 二进制记录格式 一定要配置好二进制日志 row(行模式):表中行数据的变化过程,记录数据详细,但对IO要求比较高,记录数据在任何情况下都是准确的

Ubuntu下远程访问MySQL数据库

邮差的信 提交于 2020-03-10 06:04:21
MySQL远程访问的命令 格式: mysql -h主机地址 -u用户名 -p用户密码 示例: yanggang@host:~$ mysql -h192.168.1.11 -uroot -p123456 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.11' (111) 出现错误!无法连接远程的MySQL数据库 MySQL远程连接数据库,有两种方式: mysql.sock和TCP/IP,前者比后者连接访问速度更快,但仅限于同一台本机, 详见 上述错误,是没有远程访问权限导致的 解决方法: 1 在目标服务器上( 192.168.1.11 ),修改mysql的my.cnf文件: sudo vi /etc/mysql/my.cnf 2 注释掉bind-address,屏蔽其只对本地监听 #bind-address = 127.0.0.1 3 启动MySQL服务,使其修改的配置生效, 详见 sudo restart mysql 配置完了服务器的数据访问权限,此时还是不能远程访问MySQL数据库 这是因为现在还没有对服务器上的数据库或表赋予访问权限(GRANT) 4 在服务器上,登录MySQL数据库 mysql -u root -p123456 5 对数据库top800赋予权限 grant all

MySQL是什么?

妖精的绣舞 提交于 2020-03-10 02:30:58
在学习MySQL之前,首先需要了解数据库和SQL。 如果您已经知道数据库和SQL,那么可以直接跳转到下一章节的学习。 1. 数据库简介 当您想收听最喜欢的歌曲时,可以从智能手机上打开播放列表。在这种情况下,播放列表是数据库就是从数据库中读取出来的。 当您拍摄照片并将其上传到微博,朋友圈等,这样的社交网络中的帐户时,您的照片库就有可能存储在一个数据库中。 当您浏览电子商务网站购买鞋子,衣服等时,您使用购物车就是数据库应用。 数据库无处不在。 那么什么是数据库? 根据定义,数据库只是一个结构化的数据集合。 数据本质上相互关联,例如,产品属于产品类别并与多个标签相关联。这就是为什么要使用关系数据库。 在关系数据库中,我们使用表对产品,类别,标签等数据进行建模。 表包含列和行。它就像一个电子表格(Excel)。 表可以涉及的使用有:一对一,一对多,多对一关系等关系。 因为我们要处理大量的数据,所以需要一种方法来定义数据库,表等,并更有效地处理数据。 另外,我们可以将数据转换成数据信息。 所以就需要SQL来处理了。 2. SQL - 数据库的语言 SQL代表结构化查询语言( Structured Query Language )。SQL是用于访问数据库的标准化语言。 ANSI/SQL定义了SQL标准。当前版本的SQL是 SQL:2003 。每当我们引用SQL标准时,指的就是当前的SQL版本。

Ubuntu下远程访问MySQL数据库

*爱你&永不变心* 提交于 2020-03-10 02:00:17
MySQL远程访问的命令 格式: mysql -h主机地址 -u用户名 -p用户密码 示例: yanggang@host:~$ mysql -h192.168.1.11 -uroot -p123456 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.11' (111) 出现错误!无法连接远程的MySQL数据库 MySQL远程连接数据库,有两种方式: mysql.sock和TCP/IP,前者比后者连接访问速度更快,但仅限于同一台本机, 详见 上述错误,是没有远程访问权限导致的 解决方法: 1 在目标服务器上( 192.168.1.11 ),修改mysql的my.cnf文件: sudo vi /etc/mysql/my.cnf 2 注释掉bind-address,屏蔽其只对本地监听 #bind-address = 127.0.0.1 3 启动MySQL服务,使其修改的配置生效, 详见 sudo restart mysql 配置完了服务器的数据访问权限,此时还是不能远程访问MySQL数据库 这是因为现在还没有对服务器上的数据库或表赋予访问权限(GRANT) 4 在服务器上,登录MySQL数据库 mysql -u root -p123456 5 对数据库top800赋予权限 grant all

MySQL索引事务

耗尽温柔 提交于 2020-03-10 00:10:51
索引 什么是索引 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。 索引的作用 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。 索引所起的作用类似书籍目录,可用于快速定位、检索数据。 索引对于提高数据库的性能有很大的帮助 使用场景 要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点: 数据量较大,且经常对这些列进行条件查询。 该数据库表的插入操作,及对这些列的修改操作频率较低。 索引会占用额外的磁盘空间。 满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。 反之,如果非条件查询列,或经常做插入、修改操作,或磁盘空间不足时,不考虑创建索引。 使用 创建主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)时,会自动创建对应列的索引。 查看索引 show index from 表名 ; 创建索引 对于非主键、非唯一约束、非外键的字段,可以创建普通索引 create index 索引名 on 表名 ( 字段名 ) ; 删除索引 drop index 索引名 on 表名 ; 事务 事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。 在不同的环境中,都可以有事务

谈谈性能优化:Mysql 的字符集以及带来的一点存储影响

穿精又带淫゛_ 提交于 2020-03-09 22:43:48
前言 从 Mysql 数据库角度来说,谈到存储就一定离不开字符集,只不过在我们日常开发中统一的 utf8/utf8mb4 编码,使我们常常忽略了字符集的影响,本文仅从字符集的角度来谈谈对 InnoDB 的存储设计的一点影响,以及 Mysql 是怎么兼容各种字符集的。 过一下字符集 Unicode 作为现在通用的字符集,通常采用两个字节表示一个字符,带来的副作用就是,原本采用 ASCII 字符集只需要一个字节的,却变成了 2 个字节,造成了空间浪费,而 UTF-8 编码规则,将 Unicode 编码成 1~4 个字节,ASCII 字符集继续保持了 1 个字节空间,而中文编码成了三个字节,如下图。 对存储带来了什么影响 先说明下 Mysql 中存在两种字符集 utf8 和 utf8mb4,以下例子均以 Mysql 的 utf8(1~3个字节)为例。 采用 utf8 编码的确很不错,但是也带来了一个问题,例如我在 Mysql 中定义了一个定长字符类型 char(5): name type length title char 5 所谓定长字符类型代表我要给 title 分配 5 个字符大小的空间,可是 utf8 每个字符可能是 1~3 个字节,我该分配多少空间合适呢? 理论上为了兼容,最好应该采用 utf8 的最大 3 个字节进行分配,也就是 5*3 = 15 个字节的空间