面试问题整理(一)

1.equals和==号的区别

参考:链接描述

2.数据库主从复制

参考:链接描述

(1)为什么需要主从复制?

一台服务器接收多个请求,压力很大,所以设置一个服务器集群。有些服务器负责数据库的读,有些负责写,为了保持数据库数据的同步性,所以需要主从复制。
在这里插入图片描述

(2)什么是主从复制?

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(3)什么是主从复制?mysql的主从形式?

在这里插入图片描述
在这里插入图片描述
双向的
在这里插入图片描述
在这里插入图片描述
还有一层是级联复制
在这里插入图片描述

3.数据库的日志

在这里插入图片描述

(1)bin log
2.2 二进制日志
2.2.1概述

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制, 就是通过该binlog实现的。

二进制日志,默认情况下是没有开启的,需要到MySQL的配置文件中开启,并配置MySQL日志的格式。

配置文件位置 : /usr/my.cnf

日志存放位置 : 配置时,给定了文件名但是没有指定路径,日志默认写入Mysql的数据目录。

#配置开启binlog日志, 日志的文件前缀为 mysqlbin -----> 生成的文件名如 : mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin

#配置二进制日志的格式
binlog_format=STATEMENT

2.2.2 日志格式

STATEMENT

该日志格式在日志文件中记录的都是SQL语句(statement),每一条对数据进行修改的SQL都会记录在日志文件中,通过Mysql提供的mysqlbinlog工具,可以清晰的查看到每条语句的文本。主从复制的时候,从库(slave)会将日志解析为原文本,并在从库重新执行一次。

ROW

该日志格式在日志文件中记录的是每一行的数据变更,而不是记录SQL语句。比如,执行SQL语句 : update tb_book set status=‘1’ , 如果是STATEMENT 日志格式,在日志中会记录一行SQL文件; 如果是ROW,由于是对全表进行更新,也就是每一行记录都会发生变更,ROW 格式的日志中会记录每一行的数据变更。

MIXED

这是目前MySQL默认的日志格式,即混合了STATEMENT 和 ROW两种格式。默认情况下采用STATEMENT,但是在一些特殊情况下采用ROW来进行记录。MIXED 格式能尽量利用两种模式的优点,而避开他们的缺点。

2.2.3 日志读取

由于日志以二进制方式存储,不能直接读取,需要用mysqlbinlog工具来查看,语法如下 :

mysqlbinlog log-file;

查看STATEMENT格式日志

执行插入语句 :

insert into tb_book values(null,'Lucene','2088-05-01','0');

查看日志文件 :

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pyuvOxhU-1597656332544)(assets/1554079717375.png)]

mysqlbin.index : 该文件是日志索引文件 , 记录日志的文件名;

mysqlbing.000001 :日志文件

查看日志内容 :

mysqlbinlog mysqlbing.000001;

查看ROW格式日志

配置 :

#配置开启binlog日志, 日志的文件前缀为 mysqlbin -----> 生成的文件名如 : mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin

#配置二进制日志的格式
binlog_format=ROW

插入数据 :

insert into tb_book values(null,'SpringCloud实战','2088-05-05','0');

如果日志格式是 ROW , 直接查看数据 , 是查看不懂的 ; 可以在mysqlbinlog 后面加上参数 -vv

mysqlbinlog -vv mysqlbin.000002 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3upOYTlr-1597656332548)(assets/1554095452022.png)]

2.2.4 日志删除

对于比较繁忙的系统,由于每天生成日志量大 ,这些日志如果长时间不清楚,将会占用大量的磁盘空间。下面我们将会讲解几种删除日志的常见方法 :

方式一

通过 Reset Master 指令删除全部 binlog 日志,删除之后,日志编号,将从 xxxx.000001重新开始 。

查询之前 ,先查询下日志文件 :

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-An8JyJRG-1597656332550)(assets/1554118609489.png)]

执行删除日志指令:

Reset Master

执行之后, 查看日志文件 :

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPsFoNoW-1597656332552)(assets/1554118675264.png)]

方式二

执行指令 purge master logs to 'mysqlbin.******',该命令将删除 ******编号之前的所有日志。

方式三

执行指令 purge master logs before 'yyyy-mm-dd hh24:mi:ss',该命令将删除日志为 “yyyy-mm-dd hh24:mi:ss” 之前产生的所有日志 。

方式四

设置参数 --expire_logs_days=# ,此参数的含义是设置日志的过期天数, 过了指定的天数后日志将会被自动删除,这样将有利于减少DBA 管理日志的工作量。

(2)redo log 和二进制日志的区别

参考:链接描述
在这里插入图片描述
redo log的概念
在这里插入图片描述

(3)Undo log

在这里插入图片描述

4.Liunx的常用命令

参考:链接描述
参考:链接描述
在这里插入图片描述
在这里插入图片描述
ls -l 展示所有文件或者目录的权限(属主\属组\其他)
在这里插入图片描述

5.字符串下最长回文子串的长度

参考:链接描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值