1.在Linux上安装好MySQL8.0之后,默认数据目录的具体位置是什么?该目录下都保存哪些数据库组件?在目录/usr/sbin、/usr/bin、/etc、/var/log 分别保存哪些组件?
答:默认数据目录:/var/lib/mysql。保存有mysql数据库和其它数据库目录、InnoDB日志文件和系统表空间。
/usr/sbin:mysqld服务器;/usr/bin:mysql和其它客户机程序;/etc:my.cnf配置文件;
/var/log:日志文件目录。
2.请说出mysqladmin、mysqldump、mysqlslap、mysqlshow、mysqlcheck客户机程序的用途。
答:mysqladmin:用于监视、管理和关闭MySQL服务器。
mysqldump:以SQL脚本方式创建逻辑备份的备份工具,用来恢复数据库结构和内容。 mysqlslap:进行负载模拟的压力测试用客户机。
mysqlshow:用于显示数据库对象元数据的实用程序。 mysqlcheck:用于检查和优化表的实用程序。
3.写出在Linux7中启动和停止MySQL服务器的命令。
答:systemctlstart mysql
4.MySQL服务器进程mysqld由哪三层组成,从各自所实现的功能角度分别加以说明。
答:有连接层、SQL层、存储层组成。 连接层:为每个连接维护一个线程,进行身份验证、处理查询执行。
SQL层:包括了解析、授权分析、优化、执行、查询日志记录。
存储层:管理表数据,常见的存储引擎有InnoDB、MyISAM、MEMORY和NDBCLUSTER。InnoDB 和NDBCLUSTER
是仅有的两个支持外键的事务性MySQL存储引擎。
5.InnoDB存储引擎和MyISAM存储引擎主要有哪些功能特点?
答:InnoDB是MySQL的默认存储引擎,它支持事务安全(符合ACID原则)、MVCC(多版本并发控制)、
行级锁定、支持外键引用完整性约束、损坏后的快速自动恢复、支持内存缓存数据和索引缓冲池。MyISAM是MySQL5.5之前的默认存储引擎、快速简单、支持FULLTEXT索引、支持空间数据类型和索引、支持表级锁、仅支持原始表级别的备份和恢复。
6.MySQL8.0的表空间类型有哪几种,各自的用途是什么?
答:InnoDB表空间是可以存储一个或多个InnoDB表和相关索引的数据文件。包括:数据表空间、还原(undo)表空间和临时表表空间:数据表空间有分为系统表空间、单表文件表空间、通用表空间。
7.给出在 Linux 系统上的标准选项文件的名称和保存的位置。
答:/etc/my.cnf。
8.在同一台服务器上启动多个 mysqld 实例时,必须要隔离的对象有哪些?
答:数据目录、连接层参数、日志和PID文、InnoDB表空间和日志文件。
- MySQL 服务器都提供了哪几种类型的日志文件?说明每种日志的用途。
答:错误日志(Error log):与启动、关闭和异常情况有关的诊断信息。默认启用。 常规查询日志(General query
log):服务器从客户端收到的所有语句。 慢速查询日志(Slow query log):需要很长时间执行的查询。 二进制日志(Binary
log):修改数据的信息。默认启用。 审计日志(Audit log):企业版基于策略的审计。
- 请说明常规查询日志和慢速查询日志在记录的内容上有何不同。
答:常规查询日志,记录连接信息和接收到的语句的详细信息;记录每个连接的时间和类型以及所有操 作的进程 ID;记录对所有表执行的所有语句。
慢速查询日志记录执行时间超过指定阈值的语句,默认 10 秒种,使用 long_query_time 修改。
- 从 DBA 的角度,谈一下使用 Performance schema 的目的或作用?
答:Performance schema 是一组内存表,MySQL 用它来跟踪性能度量,例如:哪些查询正在运行、 I/O
等待统计信息、历史性能数据等,使用它有助于深入了解数据库活动。
- 请谈一下 MySQL 8.0 新增加的 sys 模式的作用。
答:sys 模式是基于 Performance schema 的,它提供了一组视图,将 Performance schema 数据
汇总为更易于理解的格式,同时提供了存储过程和函数,协助 DBAPerformance schema 并生成诊 断报告。方便 DBA 进行
MySQL 的性能管理。
- MySQL 用户账户的定义信息保存在数据库的什么地方?
答:保存在 mysql.user 系统表。
- 在定义用户时,除非绝对必要,要避免在主机名中使用通配符。请给出检查用户定义中包含有通配
符的办法。
答:mysql> SELECT User, Host FROM mysql.user WHERE Host LIKE '%%%’;
- 请详细说明热备、温备和冷备的特点和不同。
答:热备(Hot backups),在数据库正常读取和修改数据时进行,几乎不会中断对数据的操作。 冷备(Cold backups),在服务器处于不可访问模式或完全关闭时进行,无法操作数据。 温备(Warm backups),备份时允许应用程序读取数据,但不允许修改数据。
- 在使用 mysqlbackup 进行备份时,对于 InnoDB 存储引擎都会备份哪些文件?
答:ibdata文件:系统表空间文件,其中包含系统表空间以及某些用户表的数据。 .ibd
文件:单文件表表空间的数据文件和常规表空间的数据文件。 ib_logfile文件,从
ib_logfile*文件中提取的数据,包含了在备份运行时所发生的更改信息, 以及重做日志的信息。
- mysqldump 和 mysqlpump 实用程序在功能上有哪些相同和不同的地方?
答:二者都能用来执行逻辑备份,将所有数据库、特定数据库或特定表转出到文本文件,可移植,独立于存储引擎,是很好的复制/移动策略,适合小型导出,但不是完整的备份解决方案。 相比于 mysqldump,mysqlpump可并行执行,提供了更好的性能,以 CREATE USER/GRANT 语 句而不是使用 INSERT 语句将用户转储到 mysql系统数据库中,更安全。
- 什么是 MySQL 的复制技术,在生产上有哪些典型应用案例?
答:复制是 MySQL 的一项功能,使用复制可以将将更改从一个实例复制到另一个实例。
主服务器(master)将所有数据和结构更改记录到二进制日志中,二进制日志格式是基于语句的、基 于行的或混合的格式。
从属服务器(slave)请求主服务器(master)的二进制日志并在本地应用所有接收事,实行同步。
- 相对于坐标位置,使用 GTID 配置复制时都具备哪些优势?
答:使用 GTID(全局事务标识符)可以唯一标识复制拓扑中的每个事务。 每个 GTID 的格式为:,例如:0ed18583-47fd-11e2-92f3-0019b944b7f7:338 使用 GTID时,循环拓扑中的故障转移很简单:在发生故障的主服务器的从属服务器上,通过发出 单个 CHANGE MASTER TO语句绕过该主服务器,每个服务器忽略或应用从拓扑中的其他服务器复 制的事务。
- 二进制日志有哪几种记录格式,请详细加以说明。
答:基于行(默认)、基于语句以及混合记录格式。 基于行的二进制日志:记录对单个表行的更改,始终能正确重放语句,即便 CURRENT_USER()。 基于语句的二进制日志:包含实际的 SQL 语句(DDL,DML),日志文件较小,可用于审计,但不能保证非确定性语句在远程机器上的正确重放。 混合格式二进制日志:默认情况下使用基于语句的日志记录,当语句不确定时会使用基于行的日志记录:如调 UUID(),USER(),FOUND_ROWS(),ROWS_COUNT(),或任何用户定义的函数。
- 请详细描述在复制拓扑中参与复制的线程类型以及各自所承担的功能。
答:当从属服务器连接到主服务器时,主服务器会创建 Binlog 转储线程,用于从二进制日志读取事件 并将其发送到从属服务器 I/O 线程。
从属服务器会默认创建两个线程:从属服务器 I/O 线程和 SQL 线程。 I/O 线程从主服务器的 Binlog转储线程读取事件并将其写入从属服务器的中继日志。 SQL(或应用)线程在单线程从属服务器上应用中继日志事件,在多线程从属服务器上分配协调工作者线程应用中继日志事件。
- 请对组复制的原理和功能做一个完整的描述。
答:组复制是 MySQL 的一个插件,它能够在一组服务器之间进行高可用的复制数据,并自动处理服务器故障转移、当成员因崩溃、故障或重新连接而加入或离开组时自动重新配置组、容错、解决冲突。
集群中的服务器属于一个复制组(replication group),一个复制组最多9台最少3台服务器,必须使用全局事务标识符(GTID),组成员身份是自动管理的,服务器可以随时离开和加入该组,一 台服务器的更改将复制到组的所有成员。