第一周作业

第三周作业:https://www.jianshu.com/p/34a47ebd7842




1、总结mysql常见的存储引擎以及特点。

答:常见的有InnoDB、MyISAM、Mariadb 。

不常见的percona : TokuDB myrocks mongodb,ARCHIVE、NDB、CSV、黑洞、MEMORY、,Merge。

mysql支持的类型

innodb:

从mysql 5.5之后 默认建表的引擎就是innodb,

主要的特点:插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead)。独有innodb_buffer_pool,LRU算法,刷脏页checkpoint技术。事务、回滚、奔溃修复能力和多版本并发控制的事务安全,是Mysql是第一个提供外键约束的表引擎。支持自动增长列AUTO_INCREMENT。InnoDB存储引擎特别适合处理多重并发的更新请求,InnoDB存储引擎是唯一支持事务的标准MySQL存储引擎,自动灾难恢复。

MyISAM:

MyISAM存储引擎的优势在于占用空间小,处理速度快,缺点是不支持事务和并发性。不支持事务,不支持外键。MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快(注意不能加有任何WHERE条件);MyISAM支持全文索引,MyISAM表格可以被压缩后进行查询操作,MyISAM支持表级锁,可以不用设置主键索引。

MEMORY:

使用存储在内存中的内容来创建表,而且所有数据也放在内存中。

MEMORY表不支持VARCHAR、BLOB、TEXT数据类型,因为这种表类型按固定长度的记录格式存储。此外,如果使用版本4.1.0之前的MySQL,这不支持自动增长列。MEMORY存储引擎默认使用哈希(HASH)索引。其速度要比使用BTREE索引快。在内存中一旦宕机全部丢失。

tokudb:

高达25x的数据压缩,快速插入,使用免读复制消除从延迟,热模式变化,热索引创建——当索引被添加到表中时,TokuDB表支持插入、删除和查询,没有停机时间,热列添加、删除、展开和重命名——当alter table添加、删除、展开或重命名列时,TokuDB表支持插入、删除和查询,而不需要停机时间,在线备份。mysql 不支持tokudb引擎 。mariadb自带tokudb引擎。

Merge:许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

mariadb:

Aria(原名Maria) 存储引擎,Aria 存储引擎是默认被编译进MariaDB 5.1里的,并且在mysqld启动的时候就要求同时启动.内部的磁盘表是Aria表格式而不是MyISAM表格式.这将使某些GROUP BY和DISTINCT请求速度更快,因为Aria有比MyISAM更好的缓冲机制.包含Aria是MariaDB 5.1和MySQL 5.1之间的一个不同。

2、MySQL日志各类总结

答:

1:重做日志(redo log)

确保事务的持久性。redo日志记录事务执行后的状态,用来恢复未写入data file的已成功事务更新的数据。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。

2:回滚日志(undo log)

保证数据的原子性,保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

3:二进制日志(binlog)

用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。用于数据库的基于时间点的还原。

4:错误日志(errorlog)

错误日志记录着mysqld启动和停止,以及服务器在运行过程中发生的错误的相关信息。在默认情况下,系统记录错误日志的功能是关闭的,错误信息被输出到标准错误输出。

5:慢查询日志(slow query log)

慢日志记录执行时间过长和没有使用索引的查询语句,报错select、update、delete以及insert语句,慢日志只会记录执行成功的语句。

6:一般查询日志(general log)

记录了服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,general log 都会将其记录下来 ,记录的格式为 {Time ,Id ,Command,Argument }。也正因为mysql服务器需要不断地记录日志,开启General log会产生不小的系统开销。 因此,Mysql默认是把General log关闭的

7:中继日志(relay log)。

从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。

3、主从复制及主主复制的实现

vim /etc/my.cnf

log-bin = mysql-bin

server-id=2

innodb-file-per-table =ON

skip_name_resolve=ON

relay-log=relay-log

relay-log-index=relay-log.index




登录查看mysql


查看主节点二进制日志列表


查看主节点的server id


在主节点上创建有复制权限的用户。REPLIACTION SLAVE ,REOPLIATION CLIENT

grant replication slave,replication client on *.* to 'repluser'@'172.16.1.3' identified by 'replpass';

flush privileges; --刷新

登录从节点

CHANGE MASTER TO change master to master_host='172.16.1.2',master_user='repluser',master_password='replpass',master_log_file='mysql-bin.000042',master_log_pos=362;

start slave  --启动从节点


测试



4、xtrabackup实现全量+增量+binlog恢复库

通过binlog恢复数据

create database bindb;

use bindb;

create table t1 (id int);

insert into t1 values(1);

insert into t1 values(2);

insert into t1 values(3);

起点:899终点:2557

/data/3306/data/binlog.000003

mysqlbinlog --start-position=899 --stop-position=2557 /data/3306/data/binlog.000003 >/tmp/dali.sql


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 100天读书打卡第64天 《为何家会伤人》作者:武志红 歉疚感可能是我们最不愿意面对的一种感觉,尤其是有人替我们做...
    李男Nina阅读 263评论 0 0
  • 饶晓志的最新执导作品,电影《人潮汹涌》已经下画了,历经早期的排片风波到后期刘天王大力助推下出现一些反转,票房逆袭,...
    大海_992e阅读 262评论 1 5
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,607评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,275评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,987评论 2 7