InnoDB

【Database】MySQL实战45讲

。_饼干妹妹 提交于 2021-02-09 20:29:57
01 | 基础架构:一条SQL查询语句是如何执行的? 1. MySQL 的基本架构图: MySQL可以分成: Server层 和 存储引擎层 两部分。 Server层:包含连接器、查询缓存、分析器、优化器、执行器等等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(日期,时间,数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程,触发器,视图等。 存储引擎层:负责数据的存储和提取,架构模式是插件式的,支持 InnoDB(默认的存储引擎) , MyISAM, Memory 等多个存储引擎。 【1】连接器 连接器负责和客户端建立连接,获取权限,维持和管理连接。 mysql -h$ip -P$port -u$user -p 连接器要和服务端建立连接。 (1)TCP握手 (2)认证user身份 (3)去权限表里面查询user拥有的权限。(此后这个连接里面的权限判断逻辑,都将依赖于此时读到的权限) 这就意味着,一个用户建立成功连接之后,即使你用管理员账号对这个用户的权限做了修改,也不会影响到已经存在连接的权限。 修改完成之后,只有再新建的连接才会使用新的权限设置。 MySQL查看现在所有的连接: mysql> show processlist; command 列的 Sleep 状态表示现在系统里面有一个空闲连接。 客户端如果太长时间没有动静

MySQL Connector / Python

╄→尐↘猪︶ㄣ 提交于 2021-02-09 08:46:37
MySQL Connector / Python允许Python程序使用符合 Python数据库API规范v2.0(PEP 249) 的API访问MySQL数据库 。 MySQL Connector / Python包括对以下内容的支持: 几乎所有MySQL Server提供的功能都包括MySQL Server版本5.7。 Connector / Python 8.0也支持X DevAPI。有关使用X DevAPI的MySQL Connector / Python的概念和用法的文档,请参阅 X DevAPI用户指南。 在Python和MySQL数据类型之间来回转换参数值,例如Python datetime 和MySQL DATETIME。为方便起见,您可以打开自动转换,或者关闭以获得最佳性能。 标准SQL语法的所有MySQL扩展。 协议压缩,可以压缩客户端和服务器之间的数据流。 使用TCP / IP套接字的连接和使用Unix套接字的Unix连接。 使用SSL保护TCP / IP连接。 独立的驱动。Connector / Python不需要MySQL客户端库或标准库之外的任何Python模块。 1使用Connector / Python连接MySQL 该connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象。

MySQL 之mydumper安装详解

南楼画角 提交于 2021-02-08 14:31:45
方法一: 安装依赖包: 1 yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake make 下载二进制包: 1 wget https: //launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz 解压安装: 1 2 3 4 tar zxvf mydumper-0.9.1.tar.gz cd mydumper-0.9.1/ cmake . make && make install 安装完成后生成两个二进制文件mydumper和myloader位于/usr/local/bin目录下 查看是否正常: 1 mydumper --help 方法二: 安装 1 安装依赖包 yum -y install glib2-devel mysql-devel zlib-devel pcre-devel cmake gcc-c++ git 1 2 下载安装文件 cd /usr/MyWorkSpace/ git clone https://github.com/maxbube/mydumper.git cd mydumper //注意下面包含'.' cmake . make && make install [root@mysql82 mydumper]#

select query returns different results for the same query

房东的猫 提交于 2021-02-08 11:31:54
问题 i have a table in my db called events here is some info about the table 106,528 ROWS - InnoDB - utf8mb4_unicode_ci - 35.1 MiB in this table i store sport match events today i've noticed something weird , when i run a select query i get something different time to time this is the query , basically looking for the matches without the result select * from `events` where `stat_forms` > '0' and ((`result_added` = '0' and `archived` = '0' and `start_time` < '1530901263') or `result_error_flag` !=

MySQL日志模块

不羁的心 提交于 2021-02-08 11:27:53
目录 一、简介 二、redo log 三. binlog 四. 内部工作流程 MySql学习专栏 1. MySQL基础架构详解 2. MySQL索引底层数据结构与算法 3. MySQL5.7开启binlog日志,及数据恢复简单示例 4. MySQL日志模块 一、简介 MySQL 有两大重要的日志模块: redo log(重做日志) 和 binlog(归档日志) 。 redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志,但两者记录的格式不同。 二、redo log redo log: 又称(重做日志)文件,用于记录事务操作的变化,记录的是 数据修改之后的值,不管事务是否提交都会记录下来 。 在media failure时,redo log文件就能派上用场,如数据库掉电,InnoDB存储引擎会使用redo log恢复到掉电前的时刻,以此来保证数据的完整性。 当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log 里面,并更新内存,这个时候更新就算完成了。 InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新一般是在系统比较空闲的时候完成的,以此来提升更新效率。 这里涉及到 WAL 即 Write-Ahead Logging 技术,他的关键点就是 先写日志

A node in MySQL 5.7 innoDB cluster is crashed and unable to re-join the crashed node to the cluster

℡╲_俬逩灬. 提交于 2021-02-08 10:40:33
问题 We have a MySQL innodb cluster in one of our environments. One of the nodes in the cluster was crashed. Though, we were able to bring the crashed node online we were unable to join it to the cluster. Can someone please help to recover/restore the node and join it to the cluster. We tried to use "dba.rebootClusterFromCompleteOutage()" but it didn't help. Configuration: MySQL 5.7.24 Community Edition, CentOS 7, standard three node innodb cluster Cluster Status: MySQL NODE02:3306 ssl JS > var c

A node in MySQL 5.7 innoDB cluster is crashed and unable to re-join the crashed node to the cluster

扶醉桌前 提交于 2021-02-08 10:39:21
问题 We have a MySQL innodb cluster in one of our environments. One of the nodes in the cluster was crashed. Though, we were able to bring the crashed node online we were unable to join it to the cluster. Can someone please help to recover/restore the node and join it to the cluster. We tried to use "dba.rebootClusterFromCompleteOutage()" but it didn't help. Configuration: MySQL 5.7.24 Community Edition, CentOS 7, standard three node innodb cluster Cluster Status: MySQL NODE02:3306 ssl JS > var c

MySQL 5.6.10 InnoDB cannot create table as table already exists

不想你离开。 提交于 2021-02-08 06:55:20
问题 I have a very interesting case. Several of my InnoDB tables got somehow corrupted. The .frm files of the tables disappeared and only the .ibd files were left. I thought no problem, I will restore these tables from the backup, so I deleted the .frm files and try to create the new tables with the same name, but every time I get "the table already exists", the .ibd file gets created, but the .frm not. Basically now I cannot create InnoDB tables with the given names in the given database. My only

mysql5.7.20:安装教程

て烟熏妆下的殇ゞ 提交于 2021-02-07 20:34:52
从mysql官网下载安装包:/mysql-5.7.20-linuxglibc2.12-x86_64.tar.gz # 切换目录 cd /usr/ local # 解压下载的安装包 tar -zxvf /software/mysql/mysql- 5.7 . 20 -linux-glibc2. 12 -x86_64.tar. gz # 重命名 mv mysql- 5.7 . 20 -linux-glibc2. 12 - x86_64 mysql # 建立数据存储目录 mkdir data # 建立用户组 groupadd mysql # 建立用户,并禁止用户登录 useradd -r -s /sbin/nologin -g mysql mysql -d /usr/ local / mysql # 改变文件归属 chown -R mysql.mysql /usr/ local /mysql/ # 初始化系统数据库,记住不能用./bin/mysql_install_db,已经过期了 ./bin/mysqld --initialize --user=mysql --basedir=/usr/ local /mysql/ --datadir=/usr/ local /mysql/data/ 初始化后,会打印日志,如下 ,注意看最后输出,红色标记部分,这个就是root的临时密码。 2018 -

分布式事务有哪些解决方案?

↘锁芯ラ 提交于 2021-02-07 20:30:16
来源:http://dwz.date/eaAm 分布式事务是什么 数据库事务的特性包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durabilily),简称 ACID。 在数据库执行中,多个并发执行的事务如果涉及到同一份数据的读写就容易出现数据不一致的情况,不一致的异常现象有以下几种。 脏读 ,是指一个事务中访问到了另外一个事务未提交的数据。例如事务 T1 中修改的数据项在尚未提交的情况下被其他事务(T2)读取到,如果 T1 进行回滚操作,则 T2 刚刚读取到的数据实际并不存在。 不可重复读 ,是指一个事务读取同一条记录 2 次,得到的结果不一致。例如事务 T1 第一次读取数据,接下来 T2 对其中的数据进行了更新或者删除,并且 Commit 成功。这时候 T1 再次读取这些数据,那么会得到 T2 修改后的数据,发现数据已经变更,这样 T1 在一个事务中的两次读取,返回的结果集会不一致。 幻读 ,是指一个事务读取 2 次,得到的记录条数不一致。例如事务 T1 查询获得一个结果集,T2 插入新的数据,T2 Commit 成功后,T1 再次执行同样的查询,此时得到的结果集记录数不同。 脏读、不可重复读和幻读有以下的包含关系,如果发生了脏读,那么幻读和不可重复读都有可能出现。 不同隔离级别 SQL 标准根据三种不一致的异常现象