mysql运维必会的一些知识点整理
(1)基础
1.开启MySQL服务
1 | /etc/init.d/mysqld start |
2.检测端口是否运行
1 | lsof -i :3306 |
3.为MySQL设置密码或者修改密码
1 | 设置密码 |
4.登陆MySQL数据库
1 | mysql -uroot -ppassword |
5.查看当前数据库的字符集
1 | show create database DB_NAME; |
6.查看当前数据库版本
1 | mysql -V |
7.查看当前登录的用户
1 | select user(); |
8.创建GBK字符集的数据库mingongge,并查看已建库完整语句
1 | create database mingongge DEFAULT CHARSET GBK COLLATE gbk_chinese_ci; |
9.创建用户mingongge,使之可以管理数据库mingongge
1 | grant all on mingongge.* to 'mingongge'@'localhost' identified by 'mingongge'; |
10.查看创建的用户mingongge拥有哪些权限
1 | show grants for mingongge |
11.查看当前数据库里有哪些用户
1 | select user from mysql.user; |
12.进入mingongge数据库
1 | use mingongge |
13.创建一innodb GBK表test,字段id int(4)和name varchar(16)
1 | create table test ( |
14.查看建表结构及表结构的SQL语句
1 | desc test; |
15.插入一条数据“1,mingongge”
1 | insert into test values('1','mingongge'); |
16.再批量插入2行数据 “2,民工哥”,“3,mingonggeedu”
1 | insert into test values('2','民工哥'),('3','mingonggeedu'); |
17.查询名字为mingongge的记录
1 | select * from test where name = 'mingongge'; |
18.把数据id等于1的名字mingongge更改为mgg
1 | update test set name = 'mgg' where id = '1'; |
19.在字段name前插入age字段,类型tinyint(2)
1 | alter table test add age tinyint(2) after id; |
20.不退出数据库,完成备份mingongge数据库
1 | system mysqldump -uroot -pMgg123.0. -B mingongge >/root/mingongge_bak.sql |
21.删除test表中的所有数据,并查看
1 | delete from test; |
22.删除表test和mingongge数据库并查看
1 | drop table test; |
23.不退出数据库恢复以上删除的数据
1 | system mysql -uroot -pMgg123.0. </root/mingongge_bak.sql |
24.把库表的GBK字符集修改为UTF8
1 | alter database mingongge default character set utf8; |
25.把id列设置为主键,在Name字段上创建普通索引
1 | alter table test add primary key(id); |
26.在字段name后插入手机号字段(shouji),类型char(11)
1 | alter table test add shouji char(11); |
27.所有字段上插入2条记录(自行设定数据)
1 | insert into test values('4','23','li','13700000001'),('5','26','zhao','13710000001'); |
28.在手机字段上对前8个字符创建普通索引
1 | create index SJ on test(shouji(8)); |
29.查看创建的索引及索引类型等信息
1 | show index from test; |
30.删除Name,shouji列的索引
1 | drop index SJ on test; |
31.对Name列的前6个字符以及手机列的前8个字符组建联合索引
1 | create index lianhe on test(name(6),shouji(8)); |
32.查询手机号以137开头的,名字为zhao的记录(提前插入)
1 | select * from test where shouji like '137%' and name = 'zhao'; |
33.查询上述语句的执行计划(是否使用联合索引等)
1 | explain select * from test where name = 'zhao' and shouji like '137%'\G |
34.把test表的引擎改成MyISAM
1 | alter table test engine=MyISAM; |
35.收回mingongge用户的select权限
1 | revoke select on mingongge.* from mingongge@localhost; |
36.删除mingongge用户
1 | drop user migongge@localhost; |
37.删除mingongge数据库
1 | drop database mingongge |
38.使用mysqladmin关闭数据库
1 | mysqladmin -uroot -pMgg123.0. shutdown |
39.MySQL密码丢了,请找回?
1 | mysqld_safe --skip-grant-tables & #启动数据库服务 |
(2)MySQL运维基础知识面试问答题
面试题001:请解释关系型数据库概念及主要特点?
1 | 关系型数据库模型是把复杂的数据结构归结为简单的二元关系,对数据的操作都是建立一个或多个关系表格上,最大的特点就是二维的表格,通过SQL结构查询语句存取数据,保持数据一致性方面很强大 |
面试题002:请说出关系型数据库的典型产品、特点及应用场景?
1 | 关系型数据库模型是把复杂的数据结构归结为简单的二元关系,对数据的操作都是建立一个或多个关系表格上,最大的特点就是二维的表格,通过SQL结构查询语句存取数据,保持数据一致性方面很强大 |
面试题003:请解释非关系型数据库概念及主要特点?
1 | 非关系型数据库也被称为NoSQL数据库,数据存储不需有特有固定的表结构 |
面试题004:请说出非关系型数据库的典型产品、特点及应用场景?
1 | 1、memcaced 纯内存 |
面试题005:请详细描述SQL语句分类及对应代表性关键字。
1 | sql语句分类如下 |
面试题006:请详细描述char(4)和varchar(4)的差别
1 | char长度是固定不可变的,varchar长度是可变的(在设定内)比如同样写入cn字符,char类型对应的长度是4(cn+两个空格),但varchar类型对应长度是2 |
面试题007:如何创建一个utf8字符集的数据库mingongge?
1 | create database mingongge default charset utf8 collate utf8_general_ci; |
面试题008:如何授权mingongge用户从172.16.1.0/24访问数据库。
1 | grant all on *.* to mingongge@'172.16.1.0/24' identified by '123456'; |
面试题009:什么是MySQL多实例,如何配置MySQL多实例?
1 | mysql多实例就是在同一台服务器上启用多个mysql服务,它们监听不同的端口,运行多个服务进程,它们相互独立,互不影响的对外提供服务,便于节约服务器资源与后期架构扩展 |
面试题010:如何加强MySQL安全,请给出可行的具体措施?
1 | 1、删除数据库不使用的默认用户 |
面试题011:MySQL root密码忘了如何找回?
1 | 参考前面的回答 |
面试题012:delete和truncate删除数据的区别?
1 | 前者删除数据可以恢复,它是逐条删除速度慢 |
面试题013:MySQL Sleep线程过多如何解决?
1 | 1、可以杀掉sleep进程,kill PID |
面试题014:sort_buffer_size参数作用?如何在线修改生效?
1 | 在每个connection(session)第一次连接时需要使用到,来提访问性能 |
面试题015:如何在线正确清理MySQL binlog?
1 | MySQL中的binlog日志记录了数据中的数据变动,便于对数据的基于时间点和基于位置的恢复 |
面试题016:Binlog工作模式有哪些?各什么特点,企业如何选择?
1 | 1.Row(行模式); |
面试题017:误操作执行了一个drop库SQL语句,如何完整恢复?
1 | 1、停止主从复制,在主库上执行锁表并刷新binlog操作,接着恢复之前的全备文件(比如0点的全备) |
面试题018:mysqldump备份使用了-A -B参数,如何实现恢复单表?
1 | -A 此参数作用是备份所有数据库(相当于--all-databases) |
面试题019:详述MySQL主从复制原理及配置主从的完整步骤
1 | 主从复制的原理如下: |
面试题020:如何开启从库的binlog功能?
1 | 修改配置文件加上下面的配置 |
面试题021:MySQL如何实现双向互为主从复制,并说明应用场景?
1 | 双向同步主要应用于解决单一主库写的压力,具体配置如下 |
[mysqld]
auto_increment_increment = 2 #起始ID auto_increment_offset = 1 #ID自增间隔 log-slave-updates 从库配置
[mysqld]
auto_increment_increment = 2 #起始ID auto_increment_offset = 2 #ID自增间隔 log-slave-updates 主从库服务器都需要重启mysql服务
面试题022:MySQL如何实现级联同步,并说明应用场景?
1 | 级联同步主要应用在从库需要做为其它数据库的主库 |
面试题023:MySQL主从复制故障如何解决?
1 | 登陆从库 |
面试题024:如何监控主从复制是否故障?
1 | mysql -uroot -ppassowrd -e "show slave status\G" |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes |
面试题025:MySQL数据库如何实现读写分离?
1 | 1、通过开发程序实现 |
面试题026:生产一主多从从库宕机,如何手工恢复?
1 | 1、执行stop slave 或者停止服务 |
面试题027:生产一主多从主库宕机,如何手工恢复?
1 | 1、登陆各个从库停止同步,并查看谁的数据最新,将它设置为新主库让其它从库同步其数据 |
面试题028:工作中遇到过哪些数据库故障,请描述2个例子?
1 | 1、开发使用root用户在从库上写入数据造成主从数据不一致,并且前端没有展示需要修改的内容(仍旧是老数据) |
面试题029:MySQL出现复制延迟有哪些原因?如何解决?
1 | 1、需要同步的从库数据太多 |
面试题030:给出企业生产大型MySQL集群架构可行备份方案?
1 | 1、双主多从,主从同步的架构,然后实行某个从库专业做为备份服务器 |
面试题031:什么是数据库事务,事务有哪些特性?企业如何选择?
1 | 数据库事务是指逻辑上的一组sql语句,组成这组操作的各个语句,执行时要么成功,要么失败 |
面试题032:请解释全备、增备、冷备、热备概念及企业实践经验?
1 | 全备:数据库所有数据的一次完整备份,也就是备份当前数据库的所有数据 |
面试题033:MySQL的SQL语句如何优化?
1 | 建立主键与增加索引 |
面试题034:企业生产MySQL集群架构如何设计备份方案?
1 | 1、集群架构可采用双主多从的模式,但实际双主只有一主在线提供服务,两台主之间做互备 |
面试题035:开发有一堆数据发给dba执行,DBA执行需注意什么?
1 | 1、需要注意语句是否有格式上的错误,执行会出错导致过程中断 |
面试题036:如何调整生产线中MySQL数据库的字符集。
1 | 1、首先导出库的表结构 -d 只导出表结构,然后批量替换 |
面试题037:请描述MySQL里中文数据乱码原理,如何防止乱码?
1 | 服务器系统、数据库、客户端三方字符集不一致导致,需要统一字符 |
面试题038:企业生产MySQL如何优化(请多角度描述)?
1 | 1、提升服务器硬件资源与网络带宽 |
面试题039:MySQL高可用方案有哪些,各自特点,企业如何选择?
1 | 高可用方案有 |
面试题040:如何批量更改数据库表的引擎?
1 | 通过mysqldump命令备份出一个sql文件,再使用sed命令替换 |