MySQL 中的 redolog/undolog/binlog

一、概述 binlog/redolog/undolog 都是 msql 中的日志模块,binlog 一般被称为二进制日志 (也成为归档日志),redolog 成为重做日志,undolog 称为回滚日志。其中二进制日志是 mysql 服务层实现的,redolog 和 undolog 是引擎层实现的。 binlog 记录的数据库 ... 阅读更多

使用 mysqldump 备份和数恢复数据库

一、备份数据库 mysql 自带了数据库备份工具 mysqldump 可以很方便的对数据库进行备份:

以上命令就完成了一次数据备份,备份后的数据保存在文件 db.sql,参数--all-databases 是指备份所有数据库。 如果只想备份特定 ... 阅读更多

给 MySQL 终端 prompt 设置颜色

昨天给 shell 的 prompt 设置了终端颜色,今天突然奇想能不能给 mysql 的 prompt 也设置颜色,网上查了一下还真有,在.bashrc 中添加以下设置即可开启颜色:

显示效果如下: 上面的代码中,\x1B 表示颜色设置开始,紧接着 [0 ... 阅读更多

MYSQL 基础之 SELECT 语句 (一):SELECT 的基本用法

一、 SELECT 介绍 1.1 SELECT SELECT 是数据库四大基本操作的一种,用于查询表中的数据信息。 基本的查询语法为:SELECT 列 1, 列 2, ... FROM 表,表示从表中取出对应的列。 SELECT 语句的用法多种多样,并且还有很多高级的操作 (如排序、分组以及联合等等),是增删改查 ... 阅读更多

MySQL 主从同步原理

一、主从复制原理 MySQL 主从复制依赖 binlog,binlog 中记录了数据库中的执行过的语句,主从复制时,复制的并不是整个数据库中的所有数据,而是从上次同步到现在所执行过的 SQL 语句。 执行主从同步时,主库会有一个 Log-Dump 线程和从库同步,把 binlog 发送给从库。从库则有一个 I/O 线程和 ... 阅读更多

MySQL 用户操作:添加删除用户

一、创建用户

查询当前用户:

二、授权

三、修改用户密码 [crayon-6986be1aeb1ac1 ... 阅读更多

MySQL 中的 unique 和 primary key

primary key 用于标识主键,字段被设置为主键后该字段所有值不可重复且不能为 null,每个表仅可有一个主键。 unique 设置字段不可重复,但不包括 null 值,每张表可以有多个 unique 字段,null 并不包括空值。 简单来说 primary key = unique + not null 。 一、 ... 阅读更多

SQL UNION 和 UNION ALL 用法

一、概述 union 和 union all 都用于合并多个查询的结果,用法为:

两者的区别是 union all 中会有重复记录,而 union 中没有。 二、示例 创建两张表 ch ... 阅读更多

redis 中的发布和订阅

一、发布和订阅

除了任务队列以外,redis 还有一种基于 「发布/订阅」 模式的消息传递,使得客户端可以订阅某个频道,当频道有消息产生时,会把消息传递到所有的订阅者。和列表不一样的是,发布和订阅可以是一对多的关系,即同一个消息可以同时传递到多个客户端 (订阅者) 。而列表只能允许一个客户端接收一个消息。

订阅和退订的命令是 PUBLISH/SUBSCRIBEPUBLISH 是向频道发送消息,SUBSCRIBE 是订阅频道。

1.1 发布

往指定频道发布消息的操作:

消息发送成功后,将会返回一个整数,表示收到这条消息的订阅者数量,如果没有任何客户端订阅频道,返回 0 。

一个要注意的问题是消息发布后不会被持久化,如果当前没有订阅者订阅频道,后续再订阅也不会收到订阅前的消息。

阅读更多

Redis 小案例 (二):redis 实现消息队列

一、任务队列概述 消息队列,顾名思义就是一个用来传递任务的队列。消息队列在开发中十分常见,经常用在页面后台处理需要很长时间的操作时,例如发送邮件、短信以及进行复杂数据运算操作等,这些操作通常会阻塞页面相当长的时间,为了避免用户等待太久,一般会先给用户页面进行相应,然后在后台使用独立的线程或者进程来处 ... 阅读更多