mysql理论知识:MySQL8OCP1Z0-908认证考试
mysql理论知识:MySQL8OCP1Z0-908认证考试所以:tmpdir它就是一个存放临时文件temporary files的地方,主要存放如下内容:mysql中存在两个InnoDB Temporary Tablespaces:它存放的是user-created temporary tables internal temporary tables created by the optimizer它存放的是用户创建的临时表的回滚段 user-created temporary tables rollback segments
第三讲--mysql8.0安装配置升级专题(上)
此专题题目较多,因此分为上中下三部分来讲,此为上篇。
第一题
讲解:
- 此题考查的考点是绝大多数人都弄不明白的#InnoDB_temp、ibtmp1、tmpdir、tmp_table_size
我来讲一下:
mysql中存在两个InnoDB Temporary Tablespaces:
- session temporary tablespace($DATADIR/$innodb_temp表空间)
它存放的是user-created temporary tables internal temporary tables created by the optimizer
- global temporary tablespace($DATADIR/ibtmp表空间)
它存放的是用户创建的临时表的回滚段 user-created temporary tables rollback segments
tmpdir它就是一个存放临时文件temporary files的地方,主要存放如下内容:
- load data使用的file,必须放在这个目录才能被读取并load到mysql
- group by或者order by的临时文件
- MySQL creates temporary SQL tables that are not hidden and have names that begin with #sql
- some DDL运行中创建的临时文件,比如rebuild、alter等
- SELECT创建的临时表存放临时结果
所以:
选项AB是错误的,temporary tables不会创建在tmpdir目录中。
选项D是错误的,internal temporary tables会创建在innodb_temp表空间中。
选项E是错误的,前半句是正确的,但后半句是错的,它应该是located in $DATADIR/$innodb_temp。
因此,选项C正确。
此题我认为是全题库中最好的一道题。
第二题
讲解:
- 此题考查的是mysql以二进制安装或者源码编译安装后,如何初始化initlialize的知识点。
- --initialize 会初始化datadir、创建root的初始化随机密码
- --initialize-insecure 会初始化datadir、但不会创建root的初始化随机密码
第三题
讲解:
- 此题考查的是mysql从低版本升级到mysql8的升级方式知识点
mysql版本升级有两种方式:
- logical upgrade(逻辑升级)
逻辑升级是指将数据库中的数据通过mysqldump导出为逻辑备份,然后在新安装的高版本数据库中导入。
- physical upgrade(物理升级)
物理升级是指直接在低版本数据库上执行mysql二进制可执行持续的升级,并升级对应的datafile。
物理升级完成后,数据文件占用空间一般比逻辑升级后的数据文件要大,因为逻辑升级会重建数据文件并导入数据,这样会收缩数据文件的空闲block,而物理升级不会收缩数据文件中的空闲block。
因此选项BF正确。
第四题
讲解:
- 此题考查的是远程连接mysql的命令
远程连接mysql需要至少提供以下3个参数:
- --user
- --password
- --host
题目中要求默认连接到world这个schema,那么还需要提供以下参数:
- --database=world
--socket是只有Linux系统才有的,用于连接本地mysql server专用
--shared-memory-base-name是只有windows系统才有的,也是用于连接本地mysql server专用
因此此题选CDEG
第五题
讲解:
- 此题考查的是慢查询相关的参数知识点
- long_query_time--超过此参数值的query就被认为是慢查询
- log_queries_not_using_indexes--没有使用索引的query都会被记录
- log_throttle_quries_not_using_indexes--没有使用索引的query每分钟最多被记录这么多次
- min_examined_row_limit--只有查询的记录数比这个值大的query才会被记录
因此此题选E
第六题
讲解:
- 此题考查的是mysql访问启动所必须的最小数据文件知识点
题目中给出的innodb_fast_shutdown=0,是指mysql在关闭之前将redo log、data buffer、ib_buffer都数据都刷新到了对应的文件中,是一种干净(clean)的关机。
因此当整个datadir被删除后,只需要有ibdata1和mysql.ibd这两个系统级表空间就可以启动mysql服务,而ib_logfile、ibtmp1、undo等表空间都可以在启动时重新自动创建。
所以,此题选AB
第七题
讲解:
- 此题考查的是mysql8新增的persist关键字,它可以通过sql命令改变mysql的配置参数文件
- 在之前的版本中,set global [variables_name]=xxx只会改变mysql的运行时设置,而不是改变my.cnf配置文件中的设置;
- 在现在的版本中,通过新增加的persist参数,可以达到既能改变mysql的运行时设置,又能同步改变my.cnf配置文件中的设置的作用,只不过它是通过新增一个mysqld-auto.cnf文件来记录的这些改变后的值,而不是直接更改my.cnf文件,mysqld-auto.cnf是一个json格式的文件。
- 当mysql服务启动时,会先读取my.cnf中的配置,再读取mysqld-auto.cnf中的配置,如果有重叠的参数,则用mysqld-auto.cnf中的值覆盖my.cnf中的值。
对应使用的命令是:set persist [variables_name]=xxx
因此,此题选AE。
第八题
讲解:
- 此题考查的是mysql的身份验证插件知识点。
在mysql5.6中使用的身份认证插件有以下2种:
- mysql_native_password --本地身份验证的插件
- sha256_password -- 实现基本的SHA-256身份验证
在mysql5.7中增加了一种身份认证插件;
- caching_sha2_password--实现SHA-256身份验证(如sha256_password) 它是sha256_password的超集,在服务器端使用缓存以获得更好的性能。
对于mysql各个版本的默认身份认证插件如下:
- 在MySQL 5.6&5.7中,默认的身份验证插件是 mysql_native_password
- 在MySQL 8.0中,默认的身份验证插件是caching_sha2_password
为了使MySQL 5.7客户端能够使用通过caching_sha2_password身份验证的帐户连接到8.0及更高版本的服务器 ,MySQL 5.7客户端库和客户端程序都必须支持 caching_sha2_password客户端身份验证插件才行。
题目中描述的是客户端连接已经升级到8.0的mysql服务器端报错找不到caching_sha2_password插件,既然如此,那就让这个客户端用户把基于caching_sha2_password的认证改为基于mysql_native_password的认证即可。
当然,还有一种方式,就是升级客户端程序和库,让它加载caching_sha2_password插件。
看选项:
- AB选项修改的是mysql8.0服务器端的配置,目的是让它使用caching_sha2_password活sha256_password的认证方式,而实际上它已经是了,不需要这么配置。
- DE选项是修改客户端使用的这个mysql用户的认证方式为caching_sha2_password和sha256_password,而实际上它已经是了,不需要这么修改。
- F选项,看上去貌似是可以的,让mysql 8的服务器端使用mysql_native_password插件做认证,但是这种配置只对以后新增加的用户生效,对已经存在的用户并不会改变其认证方式。
- C选项,修改客户端使用的用户的认证方式为mysql_native_password,这样客户端就不需要再去找caching_sha2_password和sha256_password认证插件了,直接就可以与服务器端连接。
综上,C正确。
补充:
caching_sha2_password插件相比于sha256_password有以下优势:
- 在服务器端,内存缓存使重新连接的用户可以更快地重新认证以前连接的用户。(此服务器端行为仅在MySQL 8.0和更高版本中实现。)
- 提供了对使用Unix套接字文件和共享内存协议的客户端连接的支持。
因为caching_sha2_password是MySQL 8.0中的默认身份验证插件,并且提供了该sha256_password身份验证插件的功能的超集 ,使用sha256_password验证的MySQL帐户应改为使用caching_sha2_password 。
第九题
讲解:
- 此题考查的是windows平台的mysql集成统一安装工具MySQL Installer知识点。
- 此工具只适配windows平台
- 此工具安装mysql产品系列过程中不需要提前手工下载它们,MySQL Installer会自动下载它们
- 此工具可以基于GUI界面安装,也可以基于命令行方式安装(MySQLInstallerConsole.exe)
- 此工具可以对已经安装的mysql产品进行升级
- 此工具提供了几乎oracle mysql产品的全系组件(mysql router、mysql shell、mysql server等)
因此,选项DE正确。
第十题
讲解:
- 此题考查的是mysql的系统表空间ibdata扩容知识点。
题目中要求是large、busy、warehousing。也就是数据量大、并发高、数据仓库。
如何配置ibdata可以满足长期(long-term)的存储需求呢?
先来强调一下ibdata的规则和特性:
- ibdata可以配置多个,比如ibdata1、ibdata2.... ibdata
- 不配置为autoextend,它就不会自动增大
基于以上两点规则和特性,我们来看选项:
选项A :ibdata1:12M;ibdata2:12M:autoextend,配置了2个ibdata,且最后一个ibdata可以自动扩容(autoextend),满足long-term的需求,且符合busy和large的需求求。
选项B:ibdata1:12M:autoextend,配置了1个ibdata,但可以自动扩容(autoextend),满足long-term的需求,且符合large的需求,勉强符合busy的需求。
选项C:ibdata1:12M;/tmp/ibdata2:12M:autoextend 配置在/.tmp目录是不能通过的,此处错误。
选项D:ibdata1:12M;ibdata2:12M;ibdata3:12M 虽然配置了3个ibdata,但不会自动扩容(autoextend),无法满足long-term的需求。一旦这3个ibdata初始空间耗尽,则不能再继续写入。
选项E:ibdata1:12M:autoextend;ibdata2:12M:autoextend,配置了2个ibdata,且配置了自动扩容(autoextend),貌似满足,但这个配置是错误的,多个ibdata一起配置的时候,只有最后1个ibdata可以设置为自动扩容(autoextend)。此处错误。
选项F:ibdata1:12M 配置了1个ibdata,且没有自动扩容(autoextend),与选项D同样的错误。
因此,选项AB正确。
第十一题
讲解:
- 此题考查的是windows平台上mysql支持的协议知识点
Windows平台上,mysql server提供如下协议:
- TCP/IP
- named pipes
- shared memory
Linux平台上,mysql server提供如下协议:
- TCP/IP
- socket
因此,选项BDE正确
第十二题
讲解:
- 此题考查的知识点是mysql 8安装完成后,systemctl管理mysqld服务的知识点。
题目中描述安装完成mysql并修改了my.cnf参数文件后,执行systemctl start mysqld来启动mysql服务报错。
错误日志中表达了如下信息:
- 在进程2732报错
- 从启动到报错的时间是33s
看选项:
选项B错误,如果是disabled,报错是没有mysqld服务,而不是现在的日志信息。
选项C错误,mysql server在有其它mysql进行存在的时候就不会继续启动新的mysqld服务
选项D错误,从日志里看是等了33s,而不是30s。
选项E错误,从日志中无法看出已经启动过1个mysqld服务才关闭当前的启动进程的。
选项A正确。
第三讲上篇结束。
作者:老哥讲数据库
简介:数据库高级架构师,oracle 11g OCM认证,MySQL 5.7 & 8.0 OCP认证。
原创文章,转载请注明来源。