MysQL数据库总结

数据库介绍

存储数据的仓库

存储数据的服务器 称为数据库服务器 (简称 数仓)

数据的类型可以是: 视频文件 、音频文件、图片文件、一段文字

数据库服务器: 有很大硬盘空间存储数据的服务器

常见的数据库服务软件

查看服务初始密码

grep password /var/log/mysqld.log

修改登录密码

alter user root@"localhost" identified by "新密码"

相关参数

文件

说明

/etc/my.cnf

主配置文件

/var/lib/mysql

数据库目录

默认端口号

3306

进程名

mysqld

传输协议

TCP

进程所有者

mysql

进程所属组

mysql

错误日志文件

/var/log/mysqld.log

破解密码方法,不需要重启数据库服务

工作中线上服务器是不能随便重启的

适合破解线上数据库服务器管理员root 密码

在host50主机做如下操作,具体步骤:

1 拷贝管理员root用户能正常登录的数据库服务的mysql库,覆盖本机的mysql库.

2 查看mysqld服务 父进程的pid

3 重新加载数据库目录下的文件

4 使用破解后的密码登录

拷贝Host51的mysql库 覆盖本机的mysql库

[root@host50 ~]# scp -r 192.168.88.51:/var/lib/mysql/mysql /var/lib/mysql/

查看mysqld服务的父进程的PID号,没有pstree命令的话 安装 psmisc软件

[root@host50 ~]# pstree -p | grep mysqld | head -1

|-mysqld(1130)-+-{mysqld}(1318)

查看信号列表

[root@host50 ~]# kill -l (小写L)

重新加载数据库目录下的文件

[root@host50 ~]# kill -SIGHUP 1130

登录本机的数据库的密码和Host51的root密码一样

[root@host50 ~]# mysql -uroot -pNSD2022…a

Mysql>

SQL语句分类:把功能相同的命令分成一组

DQL 数据查询语言(Data Query Language)

负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句 命令select

DDL 数据定义语言 (Data Definition Language)

负责数据结构定义与数据库对象定义的语言,

命令create alter dorp

DML 数据操纵语言(Data Manipulation Language)

负责对数据做编辑的的命令

命令 insert update delete 分别代表插入、更新与删除。

DCL 数据控制语言 (Data Control Language)

控制用户对数据的访问权限。

命令 grant revoke

mysql数据类型

数据类型分类:数值类型 字符类型 日期时间类型 枚举类型

数据导入操作步骤:

1) 要创建存储数据库(如果没有的话)

2) 建表

根据导入文件的内容创建表头名 表头个数

表头数据类型 根据文件内容定义

3) 把系统文件拷贝的检索目录里

4) 数据库管理执行导入数据的命令

5) 查看数据

数据导出

把数据库服务的表里数据保存到系统文件里

注意导出的数据不包括表头名 ,只有表里的行。

存放导出数据的文件名 不需要事先创建且具有唯一。

索引

一种数据结构,快速检索数据库中的数据

唯一索引 (unique)

约束的方式:表头值唯一 , 但可以赋null 值

字段高级约束

1、 PRIMARY KEY:主键,用于保证表头的值具有唯一性并且非空。

2、 FOREIGN KEY:外键,用于限制两个表的关系,用于保证表头的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。

主键 (primary key)

约束方式:表头值不允许重复,且不允许赋NULL值

使用说明:

1、表中只能有一个主键表头

2、多个表头做主键,称为复合主键,必须一起创建

3、主键标志PRI

4、主键通常与auto_increment 连用

5、通常把表中唯一标识记录的表头设置为主键[记录编号表头]

复合主键

表中的多个表头一起做主键

复合主键的约束方式: 多条记录 主键的值不允许同时相同

外键

核心思想:保证数据一致性

插入记录时,表头值在另一张表 表头值范围内选择。

外键的使用规则:

表存储引擎必须是innodb (在进阶课程里讲 现在仅需要知道如何指定表使用innodb存储引擎)

字段类型要一致

被参照字段必须要是索引类型的一种(通常是 primary key)

创建外键命令

create table 库.表(

表头列表 ,

foreign key(表头名) #指定外键

references 库.表(表头名) #指定参考的表头名

on update cascade #同步更新

on delete cascade #同步删除

)engine=innodb;

数据备份: 就是把当前服务器的上数据拷贝一份 放到其他的存储设备里

恢复数据: 使用放到其他存储设备里的备份数据,还原丢失的数据。

数据备份方式:

物理备份:拷贝数据库目录下的文件

逻辑备份:使用软件提供的备份命令对数据做备份

数据备份策略 :

完全备份 :备份所有数据: mysqldump

一台数据库服务器上的所有数据

一个数据库下所有数据

一张表里的所有数据

增量备份: 备份上次备份后,新产生的数据。 innobackupex

差异备份: 备份自完全备份后,新产生的数据。

备份策略的使用方式:

完全备份+增量备份

完全备份+差异备份

比如:每周的周一 完全备份 ,每周的周二到周日 做增量备份或差异备份

通过计划 执行备份脚本实现

00 23 * * 1 执行完全备份脚本

59 23 * * 2-7 执行备份新数据的脚本

完全备份

物理方式对数据做备份与恢复

适合线下数据库服务器

逻辑方式对数据备份与恢复

备份和恢复数据库服务必须是运行的,适合线上数据库服务器。

完全备份命令

]# mysqldump -uroot -p密码 库名 > /目录名/备份文件名.sql

完全恢复数据命令

# mysql -uroot -p密码 [库名] < /目录名/备份文件名.sql

说明:使用表的备份文件恢复数据时必须写库名,

不然数据库服务不知道把数据恢复那个库里

mysqldump的备份缺点:

1 mysqldump 在备份数据和恢复数据的时候会锁表

2 使用 mysqldump备份命令生成备份文件恢复数据,

只能把数据恢复备份时刻的数据。

增量备份

使用第三方软件percona提供的备份命令innobackupex 对数据做备份和恢复

特点:在线热备不锁表 适合生产环境下备份业务。

首次完全备份命令

]#innobackupex -uroot -p密码 /备份目录名 --no-timestamp

--no-timestamp 不用时间戳创建子目录存储备份数据

增量备份命令

]#innobackupex -uroot -p密码 --incremental /目录名

--incremental-basedir=/目录名 --no-timestamp

--incremental 备份新数据

--incremental-basedir 上次备份目录

实时备份 (启用mysql服务的binlog日志实现)

binlog日志介绍

也叫二进制日志

是MySQL服务日志文件的一种

保存除查询之外的sql命令

启用日志能够达数据自动备份数据的作用

搭建MySQL主从同步存储结构的必要条件

默认MySQL服务没有启用binlog日志

Binlog日志管理

1、 启用binlog日志

日志文件名命名格式 主机名-bin.000001

存放目录 /var/lib/mysql

查看日志文件内容

方法1 使用系统命令 mysqlbinlog 查看

[root@host50 ~]# mysqlbinlog /mylog/db50.000001

权限列表表示方式

ALL 所有权限 (表示所有命令)

USAGE 无权限 (除了查看之外啥权限都没有 , 看的命令show desc select )

SELECT,UPDATE,INSERT 个别权限

SELECT, UPDATE (表头名1,表头名2,……) 仅对指定表头有访问权限

权限的具体命令

命令

权限

命令

权限

SELECT

查看表记录

PROCESS

执行SHOW PROCESSLIST和KILL命令

INSERT

插入表记录

FILE

导入数据

UPDATE

更新表记录

REFERENCES

创建外键

DELETE

删除表记录

INDEX

索引的创建和删除

CREATE

建库、表

ALTER

修改表

DROP

删除库表视图索引

SHOW DATABASES

查看已有的库

RELOAD

可以执行flush [tables | logs | privileges]

SUPER

可以使用CHANGE MASTER,PURGE MASTER LOGS,SET,终止查询

SHUTDOWN

停止mysql服务

EXECUTE

调用函数、存储过程

命令

权限

命令

权限

CREATE USER

创建用户

LOCK TABLES

对加锁和解锁

EVENT

可以管理定时任务

CREATE ROUTINE

创建函数、存储过程

TRIGGER

可以管理触发器

REPLICATION SLAVE

读取主服务器二进制日志

CREATE TABLESPACE

创建表空间

REPLICATION CLIENT

查看主/从服务器状态

CREATE TEMPORARY TABLES

创建临时表

CREATE VIEW

创建视图

ALTER ROUTINE

修改函数、存储过程

SHOW VIEW

查看视图

库名表示方式

*.* 所有库所有表

库名.* 一个库下的所有表

库名.表名 一张表

用户名:

客户端连接数据库服务使用的用户,用户自定义即可

客户端地址:

% 表示网络中的所有主机

192.168.88.% 表示 192.168.88网段内的所有主机

192.168.88.1 表示仅仅是192.168.88.1 一台主机

localhost 表示数据库服务器本机

密码

使用添加用户连接数据服务时使用的密码 ,要符合数据库服务的密码策略

mysql索引

一种数据结构,能快速查找数据

Mysql索引主要有三种结构:Btree、B+Tree 、Hash 。

索引优点具体如下:

可以大大提高MySQL的检索速度

索引大大减小了服务器需要扫描的数据量

索引可以帮助服务器避免排序和临时表

索引可以将随机IO变成顺序IO

索引的分类:

普通索引 (index)

不应用任何限制条件的索引,该索引可以在任何数据类型中创建。

字段本身的约束条件可以判断其值是否为空或唯一。

创建该类型索引后,用户在查询时,便可以通过索引进行查询。

唯一索引 (unique)

使用UNIQUE参数可以设置唯一索引。

创建该索引时,索引的值必须唯一。

通过唯一索引,用户可以快速定位某条记录。

主键

是一种特殊唯一索引。

全文索引 (FULLTEXT)

使用FULLTEXT参数可以设置索引为全文索引。

全文索引只能创建在CHAR、VARCHAR或者TEXT类型的字段上。

查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度。

在默认情况下,应用全文搜索大小写不敏感。如果索引的列使用二进制排序后,可以执行大小写敏感的全文索引

单列索引

顾名思义,单列索引即只对应一个字段的索引。

应用该索引的条件只需要保证该索引值对应一个字段即可。

可以包括普通、唯一、全文索引。

多列索引

多列索引是在表的多个字段上创建一个索引。

该索引指向创建时对应的多个字段,用户可以通过这几个字段进行查询。

要想应用该索引,用户必须使用这些字段中的第一个字段。

数据库优化: 使用索引,优化查询语句,分库分表。主从复制,读写分离。升级硬件。

主从同步介绍

存储数据的服务结构,分为2种角色:

主服务器(master):接受客户端访问连接

从服务器(slave):自动同步主服务器数据

主从同步工作原理

主服务器:启用binlog日志

Binary log 二进制日志 relay log 中继日志

从服务器:

IO线程:复制master主机 binlog日志文件里的SQL命令保存到中继日志文件里。

SQL线程:执行中继日志文件里的SQL语句,实现与Master数据一致。Thread 线程

一主一从结构 A主 B从

一主多从结构

主从从结构

主主结构 A主 B主 互为主从

配置master服务器

1 启用binlog日志

2 用户授权 添加用户 从要主上读取数据

3 查看日志信息

配置slave服务器

1指定server_id 并重启 mysqld 服务

2指定主服务器信息(如果数据不一样,要先确保数据一致)(人为的把没有成为从之前的主数据完全备份)

3启动slave进程 ( 让I/O线程 和SQL 线程 启动工作)

4查看状态信息 (查看 让I/O线程 和SQL 线程 是否启动工作)

所有错误的 统一解决办法:

文件名

说明

master.info

主库信息

relay-log.info

中继日志信息

主机名-relay-bin.xxxxxx

中继日志

主机名-relay-bin.index

索引文件

MySQL存储引擎

存储引擎介绍

存储引擎是 MySQL服务软件自带的功能程序中的一种,

每种存储引擎功能和数据存储方式各不相同。

可以理解为 存储引擎是MySQL服务的功能分类

当对表里的数据做select 、insert 、 update 、delete 访问时,

会根据表使用的存储引擎对数据做处理。

作为可插拔式的组件提供

MySQL 5.0/5.1 (MyISAM)

MySQL 5.5/5.6 (InnoDB)

MySQL服务体系结构:MySQL服务由8个功能模块组成

1 管理工具: 安装MySQL服务软件后,提供的管理命令

2连接池:验证客户端连接时使用的用户和密码是否正确 同时验证数据库服务器是否有mysqld进程相应连接

3 SQL接口: 把用户执行的SQL命令传递给本机的mysqld 进程

4分析器:检查SQL命令的语句及对数据的访问权限

5优化器:对要执行的 SQL命令做优化(是内置自带功能程序)

6查询缓存:划分出一定的物理内存空间给MySQL服务存储查找过的数据。

7存储引擎:当对表里的数据做查询(select) 或写操作(insert /update /delete)会调用存储引擎对表中的数据做处理,至于如何处理取决表使用的存储引擎的功能

8文件系统:通常指的就是电脑的硬盘

MySQL数据读写分离

大幅度提升读性能,小幅度提升写性能

2.1 介绍

MySQL数据读写分离:是存储数据的一种服务架构

客户端把访问数据库服务的请求发给 读写分离服务器60

把客户端对数据的select 访问和 存储insert 访问 分别给不同的数据库服务器处理。

目的减轻单台数据库服务器的工作压力,

但是得保证负责处理select访问的数据库服务器和处理insert访问的数据库服务器的数据一致。 所以要想实现数据的读写分离 存储数据的数据库服务器之间必须是主从结构。

实现数据读写分离的方式?

在客户端实现: 开发网站的程序员在写访问数据库服务器的脚本时, 在脚本里定义连接的

数据库服务器的ip地址

执行select命令必须连接 slave角色服务器

执行insert命令必须连接 maste角色服务器

搭建读写分离服务器实现: 客户端查看数据和存储数据库的时候,连接读写分离服务器,由读写分离服务器根据客户端的访问类型,把请求给后端数据库服务器处理:

把查询请求select 命令 给slave服务器处理

把存储请求insert 命令 给master服务器处理

1)分库分表

将存放在一台数据库服务器中的数据,按照特定方式进行拆分,

分散存放到多台数据库服务器中,以达到分散单台服务器负载的效果

2)分库分表分割方式

垂直分割(分库)

按业务类型分类,将存储在一个库里的表分别存储到不同的数据库器里

水平分割(分表)

将表记录按行切分,分散存储到多个数据库服务器表中。

3) MyCAT软件介绍(提供数据分库分表服务软件)

mycat是基于Java的分布式数据库系统中间件,为高并发环境的分布式存储提供解决方案

适合数据大量写入的存储需求

支持MySQL、Oracle、Sqlserver、Mongodb等

提供数据读写分离服务

提供数据分片服务

基于阿里巴巴Cobar进行研发的开源软件

4) 十种分片规则

1 枚举法 sharding-by-intfile

2 固定分片 rule1

3 范围约定 auto-sharding-long

4 求模法 mod-long

5 日期列分区法 sharding-by-date

6 通配取模 sharding-by-pattern

7 ASCII码求模通配 sharding-by-prefixpattern

8 编程指定 sharding-by-substring

9 字符串拆分hash解析 sharding-by-stringhash

10 一致性hash sharding-by-murmu

  1. 拓扑结构

IP规划与角色

主机名

角色

IP地址

client50

客户端

192.168.88.50/24

Mycat60

分片服务器

192.168.88.60/24

Mysql63

数据库服务器

192.168.88.63/24

Mysql64

数据库服务器

192.168.88.64/24

Mysql65

数据库服务器

192.168.88.65/24

6) 分片服务器的工作过程;

客户端连接分片服务器执行存储数据命令insert

第一步:查看存储数据访问的表,并检查表使用的分片规则

第二步:根据表使用分片规则的计算结果,将命令发送给后端数据库服务器执行

第四步:获取数据库服务器的执行结果,并返回给客户端

服务没有启动的排错方法

查看日志文件获取报错信息

vim /usr/local/mycat/logs/wrapper.log

分片规则的使用

枚举分片规则 (sharding-by-intfile) :

表里必须有名字叫sharding_id的表头

且表头的值必须在分片规则配置文件定义的值里选择。

求模分片规则(mod-long)

表中必须有名叫id的表头

根据id表头与设定数字取余的结果存储数据

当余数是 0 数据存储到 dn1

当余数是 1 数据存储到 dn2

当余数是 2 数据存储到 dn3

mysql高可用集群

MHA 软件介绍(Master High Availability)

由日本DeNA公司youshimaton开发

是一套优秀的实现MySQL高可用的解决方案

数据库的自动故障切换操作能做到在0~30秒之内完成

MHA能确保在故障切换过程中最大限度保证数据的一致性,以达到真正意义上的高可用

软件由2部分组成

1 管理端软件(管理节点) : 安装在管理集群主机上

2 数据端软件(数据节点) : 安装在数据库服务器上

拓扑结构

Ip规划与角色

IP地址

主从同步角色

集群角色

主机名

192.168.88.50

客户端

client50

192.168.88.60

管理主机

mgm60

192.168.88.66

主库

主服务器

host66

192.168.88.67

从库

第一台备用服务器

host67

192.168.88.68

从库

第二台备用服务器

host68

MHA集群的工作过程:

由Manager定时探测集群中的master节点

当master故障时,Manager自动将拥有最新数据的slave提升为新的master;剩下的其他slave服务器自动配置为新master的服务器的slave主机)

集群环境准备

1)公共配置(3台数据库服务器都要配置)

#启用binlog日志

#开启半同步复制模式

#禁止删除本机的中继日志文件

#重启数据库服务

#添加从服务器拷贝sql命令时连接使用的用户

关系型数据库管理系统

简称 RDBMS (Relational Database Management System)

按照预先设置的组织结构,将数据存储在物理介质上数据之间可以做关联操作

主流的RDBMS软件

MySQL

MariaDB

Oracle

DB2

SQL Server

PostgreSQL

非关系型数据库管理系统

统称 NoSQL(NoSQL = Not Only SQL)

意思是"不仅仅是SQL"

泛指非关系型数据库

不需要预先定义数据存储结构

每条记录可以有不同的数据类型和字段个数

主流软件

Memcached

Redis

MongoDB

CouchDB

Neo4j

FlockDB

适用与存储的数据

redis 软件介绍

Remote Dictionary Server(远程字典服务器)

是一款高性能的(Key/Values)分布式内存数据库

支持数据持久化(定期把内存里数据存储到硬盘)

支持多种数据类型:字符、列表、散列、集合

支持 master-salve 模式数据备份

Redis服务常用管理命令

存储数据 查看数据

删除数据 移动数据

设置数据的存储时间 查看数据类型

清空数据 停止redis服务

文件里常用配置项说明

通过修改配置项改变redis服务的运行配置,需要重启redis服务才能生效

配置分类

名称

说明

NETWORK

网络

GENERAL

常规

SNAPSHOTTING

快照

REPLICATION

复制

SECURITY

安全

CLIENTS

客户端

MEMORY MANAGEMENT

内存管理

常用配置项

port 6379 //端口

bind 127.0.0.1 //IP地址

databases 16 //数据库个数

logfile /var/log/redis_6379.log //日志文件

maxclients 10000 //并发连接数量

dir /var/lib/redis/6379 //数据库目录

LNP+Redis (把网站的数据存储在redis服务器里)

生产环境下会把网站热点数据存放到内存存储服务器里,这样的好处是可以加快存取数据的速度,能够实现网站访问加速。

配置php支持redis

意思就是在在网站服务器编写php 脚本 可以连接redis服务存储数据和查询数据

默认PHP不支持redis (也就是不能连接redis服务)

在网站服务器主机上做如下配置:

1) 安装软件提供连接redis服务的功能模块

2) 让PHP进程在运行时 调用redis模块

3) 查看是否支持redis服务

4) 测试配置

4.1 在网站服务器编写PHP脚本 存储数据 和查询数据

#编写存储数据的脚本

#编写查询数据的脚本

4.2 在客户端访问网站服务器php脚本

4.3 在Redis服务器本机查看内存里的数据

能够看到PHP存储的数据为成功

内存清除策略

当内存空间不足,删除内存里已经存储的数据的方式

内存清除策略是软件的开发者写好的功能程序并定义的名称方便运维调用。

根据需要选择使用那种内存清除策略即可。

我们运维要知道策略名称 和清除数据的方式!!!

策略分类

说明

名称

删除范围

LRU

删除最近最少使用

volatile-lru

针对设置了TTL的key

allkeys-lru

针对所有的key

LFU

删除使用频率最少的

volatile-lfu

针对设置了TTL的key

allkeys-lfu

针对所有的key

RANDOM

随机删除

volatile-random

针对设置了TTL的key

allkey-random

针对所有的key

volatile-ttl

删除快要过期的

noeviction

不删除

部署Redis集群

配置管理主机并创建集群

测试集群及集群工作原理

访问集群存取数据

命令

-c 连接集群中的主机 使用集群算法存储数据

]# redis-cli -c -h redis服务器的ip -p 端口号

说明:连接集群中的任意一台服务器都可以查询数据和存储数据

集群存储数据的工作原理

Redis集群是如何实现数据的分布式存储的?

存储数据和查询数据时 调用集群算法CRC16

集群算法会计算出1个数字, 数字在哪个主服务占用的hash slots范围内 ,就连接对应的主服务器存储数据或查询数据。

主从复制

与mysql服务主同步功能一样,都是实现数据自动同步的存储结构。

分为2种角色:

主服务器:接收客户端连接

从服务器:同步主服务器数据库

主从复制结构模式:

一主一从 、 一主多从 、 主从从

redis主从复制工作过程(数据同步原理):

!!!说明!!!:从服务器首次做的是全量同步,且同步的数据会覆盖本机的数据

第1步:slave向master发送sync命令

第2步:master启动后台存盘进程,并收集所有修改数据命令

第3步:master完成后台存盘后,传送整个数据文件到slave

第4步:slave接收数据文件,加载到内存中完成首次完全同步,后续有新数据产生时,master继续收集数据修改命令依次传给slave,完成同步。

命令行配置命令(适合配置线上服务器)

slaveof 主服务器ip地址 主服务器端口号 #指定主服务服务器IP地址和服务端口号

config rewrite #保存到配置文件

info replication #查看复制信息

slaveof no one #临时恢复为主服务器

修改配置文件(需要重启Redis服务,适合线下服务器)

]# vim /etc/redis/6379.conf

slaveof 主服务器ip地址 主服务器端口号

:wq

!!!说明!!!!

redis服务运行后 默认角色就是master(主);

所以一台主机做master 服务器的话 无需配置。

主从结构中的从服务器 都是只读的;

客户端连接从服务器对数据仅有查看权限。

哨兵服务 : 内置的模块

什么是哨兵服务:监视主从复制结构中主服务器,发现主服务器无法连接后,会把对应的从升级为主数据库服务器,继续监视新的主数据库服务器,坏掉的主数据库服务器恢复后,会自动做当前主服务器的从主机。哨兵服务+redis主从服务 能够实现redis服务高可用和数据的自动备份,但远比Redis集群的资金成本和运维成本要低。

说明:

1)可以使用一主一从或 一主多从 或 主从从 + 哨兵服务 做服务的高可用 和 数据自动备份

2)如果主从结构中的redis服务设置连接密码的话必须全每台数据库都要设置密码且密码要一样,要么全都不设置密码。

3)如果Redis服务有密码宕机的服务器启动服务后,要人为指定主服务器的连接密码。

持久化 (理论多)

实现方式有2种:分别是 RDB文件 和 AOF文件

1) RDB文件(将Reids在内存中的数据库记录定时dump到磁盘的RDB持久化)

指定就是数据库目录下的 dump.rdb 文件

redis运行服务后,会根据配置文件的设置的存盘频率 把内存里的数据复制到数据库目录下的dump.rdb文件里(覆盖保存)

2)AOF文件(将Reids的操作日志以追加的方式写入文件)

redis服务AOF文件(与mysql服务的binlog日志文件的功能相同)

是一个文件,记录连接redis服务后执行的写操作命令并且是以追加的方式记录写操作命令

默认没有开启,使用需要人为启用。

RDB方式的优/缺点

优点:

高性能的持久化实现 —— 创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件;

过程中主进程不做任何IO操作比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合

缺点:意外宕机时,丢失最后一次持久化的所有数据

AOF文件的优缺点

AOF优点

可以灵活设置持久化方式

出现意外宕机时,仅可能丢失1秒的数据

AOF缺点

持久化文件的体积通常会大于RDB方式

执行fsync策略时的速度可比RDB方式慢

二者的区别

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

数据类型(操作多 ,主要掌握对不同类型数据的管理命令)

在数据是通过程序员写网站脚本存储在 redis 服务器的内存里。

数据库运维需要对存储在服务器内存里的数据做管理,

管理包括: 查看 修改 删除 存储新数据 ,不同类型的数据要使用对应的命令管理

redis服务支持的数据类型如下:

1) 字符类型( string) 字符串 可以是英文字母 或 汉字

2) 列表类型 (list) 一个变量名 存储多个数据 (类似于shell脚本语言的数组)

3)Hash 类型 (hash) 一个变量里可以存储多列 每列对应一个值

4)集合类型 也是让一个变量可以存储多个数据 (和python 语言集合类型是一个意思)

集合分为有序集合类型(zset) 和 无序集合类型( set)

字符类型 string

- 字符串类型是 Redis 中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据

- 可以用其存储用户的邮箱、JSON 化的对象甚至是一张图片

- 一个字符串类型键允许存储的数据的最大容量是512 MB

- 字符串类型是其他4种数据类型的基础,其他数据类型和字符串类型的差别从某种角度来说只是组织字符串的形式不同

- 列表类型(list)可以存储一个有序的字符串列表

- 常用的操作是向列表两端添加元素,或者获得列表的某一个片段

- 列表类型内部是使用双向链表(double linked list)实现的,获取越接近两端的元素速度就越快

- 使用链表的代价是通过索引访问元素比较慢

- 这种特性使列表类型能非常快速地完成关系数据库难以应付的场景:如社交网站的新鲜事,我们关心的只是最新的内容,使用列表类型存储,即使新鲜事的总数达到几千万个,获取其中最新的100条数据也是极快的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库是非常重要的数据存储和管理工具,因此需要做好相应的安全措施以保证数据库的安全性。以下是MySQL数据库安全实验的总结: 1. 设置密码: 在MySQL中,可以通过设置密码来保护数据库的安全性。可以使用以下命令来设置密码: ``` SET PASSWORD FOR 'username'@'host' = PASSWORD('password'); ``` 其中,'username'和'host'是要设置密码的用户和主机名,'password'是要设置的密码。 2. 远程连接控制: MySQL数据库默认允许远程连接,因此需要对远程连接进行控制。可以使用以下命令来控制远程连接: ``` GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' IDENTIFIED BY 'password' WITH GRANT OPTION; ``` 其中,'username'和'host'是要授权的用户和主机名,'password'是用户的密码。 3. 防火墙设置: 为了保证MySQL数据库的安全性,也需要设置防火墙来控制访问。可以使用iptables等工具来设置防火墙规则,以禁止未授权的访问。 4. 数据备份: 为了防止数据丢失和数据库损坏,需要定期进行数据备份。可以使用mysqldump等工具来备份数据库。 5. 安全审计: 安全审计可以帮助我们识别潜在的安全问题和漏洞,并及时进行修复和加固。可以使用MySQL Enterprise Audit等工具来进行安全审计和监控。 总之,MySQL数据库的安全性是非常重要的,需要我们采取相应的安全措施和措施来保护数据库的安全性。除了以上提到的措施,还需要定期更新和升级MySQL版本,以修复已知的安全漏洞和问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值