面试题
1、管理员在高可用架构维护的职责
- 搭建:MHA+VIP+SendReport+BinlogServer
- 监控及故障处理
- 高可用架构的优化
核心是:尽可能降低主从的延时,让MHA花在数据补偿上的时间尽量减少。
5.7 版本,开启GTID模式,开启从库SQL并发复制。
2、单表查询
2、mysql聚合函数GROUP_CONCAT
select 不支持结果集是1对多行的显示方式
解决方法:使用GROUP_CONCAT函数,列以行的方式显示
3、having 后过滤
应用场景:需要在group by + 聚合函数后,再做判断过滤使用
例:统计中国,每个省的总人口,只显示总人口数大于500W信息
select district,sum(population) from world.city where countrycode='CHN' group by district having sum(population) >5000000;
4、order by 排序应用
统计中国,每个省的总人口,只显示总人口数大于500W信息,并且按照总人口数从大到小排序输出
select district,sum(population) from world.city where countrycode='CHN' group by district having sum(population) >5000000 order by sum(population) desc;
5、limit 应用
作用:分页显示结果集
例:统计中国,每个省的总人口,只显示总人口数大于500W信息,并且按照总人口数从大到小排序输出,只显示前5名
select district,sum(population) from world.city where countrycode='CHN' group by district having sum(population) >5000000 order by sum(population) desc limit 5;
需求:显示6-10名
limit 5,5 前一个5,跳过5行;后一个5,显示5行
需求:显示3-5名
limit 2,3 显示3行,跳过2行
6、统计每个库,所有表的个数、表名
select table_schema,count(table_name) ,group_concat(name) from information_schema.tables group by table_schema;
7、统计每个库的占用空间总大小
一张表的大小公式:avg_row_lengthtable_rows+index_length
select table_schema,sum(avg_row_lengthtable_rows+index_length) from information_schema.tables group by table_schema;
8、查询业务数据库(系统库除外),所有非INNODB表。
select table_schema,table_name from information_schema.tables where engine != 'innodb' and table_schema not in ('sys','performance_schema','information_schema','mysql');
9、查询业务数据库(系统库除外),所有非INNODB表。将所有非INNODB表转换为INNODB表。
select concat ("alter table",table_schema,".",table_name,"engine=innodb") from information_schema.tables where engine != 'Innodb' and table_schema not in ('sys','performance_schema','information_schema','mysql') into outfile '/tmp/alter.sql';
注意:如果有报错,需要在配置文件中添加配置;
vim /etc/my.cnf
[mysqld]
secure-file-priv=/tmp
- 配置完执行导出的sql语句文件
mysql>source /tmp/alter.sql
3、union 和 union all 区别
union : 聚合两个结果集,会自动进行结果集去重复。
union all : 聚合两个结果集,不会去重复。
4、redis持久化
image.png-
redis 持久化方式有哪些?有什么区别?
rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能,非实时持久化。
aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog,实时持久化。 -
如果写入数据,没有触发持久化条件,关闭redis会不会持久化?
答:应该问怎么关? shutdown,pkill,kill,killall会持久化,kill -9不会持久化
keys * //十分危险的命令,线上禁止使用
redis的作用:可以作为缓存数据库,MySQL数据库的补充,应用优先在redis取值,redis取到值,则返回,如果没取到值,则到MySQL取值,然后应用转义取到的值存到redis
redis的数据类型及应用场景
字符串:1、session 共享,2、常规计数:微博数,粉丝数,订阅、礼物
字典(hash类型):存储部分变更的数据,如用户信息等。最接近mysql的数据结构
列表:消息队列系统、比如sina微博
集合:案例:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。
有序集合:排行榜应用,取TOP N操作
DNS服务器
在阿里云、或者自己搭
A记录与CNAME
A记录将域名绑定的IP
CNAME就是将域名绑定到域名
问:2亿行的表,想要删除其中1000w,你们公司怎么做的?假如是按照时间列条件。
答:1、如果2亿行数据表,还没有生成,建议在设计表时,采用分区表的方式(按月range),然后删除时truncate
2、如果2亿行数据表,已经存在,建议使用pt-archive 工具进行归档表,并且删除无用数据。