ITPub博客

首页 > 数据库 > 数据库开发技术 > mysql每天一点点笔记(一)

mysql每天一点点笔记(一)

原创 数据库开发技术 作者:DBA修行之路 时间:2021-12-19 11:29:04 0 删除 编辑

文字表述

文字表述

文字表述

左右滑动查看更多



点击上方“蓝字”,发现更多精彩。





mysql每天一点点笔记(一)


学习规划

工作两年多的时间,算算也接触了不少技术,MySQL,redis,大数据,云平台,docker,容器,可是认真想想,对很多东西都是半吊子,知道一些皮毛,掌握的也零零散散,而且很多之前学的不用就忘了。都说毕业三年是一道分水岭,距离三年之期还有半年多的时间。时间还算充足,希望接下来的这半年多的时间能够有个质的突破吧。当时5月份心血来潮申请了这个公众号,可能是冲动,但也是想记录总结一下自己学习的内容,因为自己是个懒得做笔记的懒人。上两三个月里系统对redis的一些关键和基础知识点重新学习温故了下,接下来打算重点对mysql进行一个学习复盘吧,毕竟这是自己毕业后接触最早时间也是最久的技术了。当然,redis的学习也不会落下。在之前温故redis的时候以及日常工作中,感觉很多时候问题解决和一些设计思想都和操作系统层次有着奇妙的联系,唉,之前欠下的债,终究是要还的。还有大数据,之前也接触了一年的时间,当时也花费了一番心思,最近工作用不到,好多东西感觉又忘了。但是自己对这块也挺感兴趣,还是舍不得就这么丢了。加之,而且细细思考下,大数据中各个组件的好多设计理念对其他技术也是有借鉴意义的,因此后续肯定还要再捡起来。还有docker以及k8s等等,工作中也会遇到,也是需要了解一下的。当然,这得往后放放了。额,这么一通列下来,半年的时间感觉也不多。啥也不说了,还是先学起来再说吧。如果你也有自己的学习计划,一起加油吧!



基本组成

了解一个产品,最基础的莫过于了解产品的安装方式和基本构成。学习mysql,可以从mysql安装方式和mysql基本构成开始。


mysql通常有三种安装方式,如下:

rpm安装,可以通过官网下载对应的rpm包,直接通过yum的方式来安装,实际中使用比例不高,因为yum安装的路径和配置难以定制化。

二进制安装,可以在官网下载编译软件包,软件包解压就可完成,实现简单。

源码安装,通过对指定的环境配置适用的软件环境,进行源码的编译安装,对环境的依赖较高。对于批量安装的方式耗时难以控制。作为环境调试比较适用。


mysql的基本构成可以参考下图,初学时可以先有一个整体的认知和初步印象即可:




配置读取

平时安装部署mysql时,启动mysqld程序时我们基本是--defaults-file选项来指定配置文件路径,不知道你是否尝试过不使用该选项,亦或者使用--defaults-extra-file选项,细细探究一下,或许你会有不一样的发现。

使用如下命令,可以查看mysqld启动时读取配置文件的路径:

mysqld   --verbose --help |grep -A 1 'Default options'


可以看到,mysqld启动时会到上述路径下查找配置文件,如果前一个文件找不到,则会寻找下一个文件,如果所有的路径都找不到,则会启动报错。另外,一般情况下,如果在使用mysqld启动时,多个配置文件中都设置了相同的启动选项,则以最后一个配置文件中的为准,配置文件读取的顺序如下:

如果一个启动选项同时出现在命令行中和配置文件中,则以命令行中为准,这个需要关注。

因此,如果在生产中发现某些启动选项不达你的预期,不妨看看是否在上述的这些路径下存在配置文件导致启动选项值被覆盖。




选项组

在mysql中,启动选项有数百个,而不同启动命令,例如mysqld,mysql等,在启动时会读取这数百个中的一部分选项,而一些选项需要根据实际情况进行配置,试想,在一堆启动选项中找某个启动选项,是不是很头疼。尤其是你对启动选项本身不熟悉的情况下,真的会很崩溃。对此,mysql提供了一个很人性化的方案,在配置项中可以根据作用域将不同的启动选项划分为不同的组,每个组用[组名]表示,后面跟具体的启动选项。例如:

[mysql]

no_auto_rehash

default_character_set     =gb2312


[client]

default_character_set     = utf8

配置组及作用的范围可以参考下图:


而实际启动命令时,往往不是只读取一个配置组的启动选项,而是读取多个配置组的启动选项。


当然,如果多个配置组有相同的启动选项,以最后一个出现的组中的启动选项为准。例如启动mysql程序时,以上面的为例,因为mysql可以访问[mysql],[client]组,而[client]组在[mysql]组后面,因此最后default_character_set的值以utf8为准。





变量相关 


mysql服务器在运行过程中,会使用一些变量来控制程序行为或展示程序运行状态。而这些变量数量是较多的,都记住是不现实的,我们只需要根据一定的规则将不同变量划分开来即可,变量划分可以按照不同的规则,根据作用域划分,可以分为全局变量,会话变量。根据功能划分,可以分为系统变量和状态变量,如下:


先总结下按照作用域划分吧,mysql中按照变量作用范围可将变量划分为全局变量和会话变量。

全局变量,即GLOBAL变量,会影响服务器的整体操作。例如max_connection,表示服务器程序同时最多支持多少个客户端程序连接。可通过set golbal 变量名 = 值或set @@global.变量名 = 值方式设置。

会话变量,即session变量,也称为local变量,只影响当前客户端连接的操作,可通过set session 变量名 = 值,set 变量名 = 值或set @@session.变量名 = 值方式设置。


按照功能划分:mysql中按照变量功能可将变量划分为系统变量和状态变量。

系统变量,用来控制MySQL程序行为的变量,可以人工设置,大部分系统变量可以在程序运行时动态修改而无需停止服务器。一般来说,系统变量的值不会随程序运行变化,除非手动在线修改了系统变量的值。

状态变量,用来展示服务器运行状况的变量,不能人工设置,变量值随着服务器程序的运行情况动态变化。


自问自答

Q:
mysqld启动与mysqld_safe启动?

mysqld与mysql_safe都可以启动MySQL服务器程序,但是一般生产上不会直接使用mysqld启动,而是使用mysqld_safe,mysqld_safe在启动MySQL服务器时,会调用mysqld,同时还会启动一个监控进程,可以在mysqld服务挂掉的时候协助进行重启。另外还会将程序运行信息和出错信息输出到错误日志,便于服务异常时问题定位。还可通过--help选项查看mysqld与mysqld_safe支持的启动选项,因为启动MySQL服务器时mysqld_safe会调用mysqld,因此mysqld_safe不处理的选项,会继续交给mysqld处理。

Q:
系统变量global OR session?

大部分系统变量是读写的,并同时支持设置全局级别和会话级别。如果在当前会话中未设置,则默认按照全局级别的值。但是少部分系统变量只具有global级别,例如max_connections,或只具备session级别,例如insert_id,或是只读的,例如version。

Q:
defaults-extra-file与defaults-file?

在mysqld或mysqld_safe启动程序启动时,如果不指定配置文件,会到一些默认路径下查找,如果指定路径,则使用到defaults-extra-file或defaults-file选项,两者的异同如下:

相同点:都可以用来指定额外的配置文件路径。

差异点:使用defaults-file时,mysqld程序启动时只会到指定路径下搜索配置文件,而使用defaults-extra-files时,除了搜索指定路径,还会搜索固定的配置文件路径。一般生产中使用defaults-file选项。


结尾小结

今天学习的内容是MySQL的一些安装方式,基本组成,以及启动时配置读取等的小知识,虽然不是啥重点,但是还是要了解一下的,毕竟,不积跬步无以至千里,不积小流无以成江海。好了,最后,周末快乐。




END



扫码关注我
每天进步一点点,未来才可期,我们共同的目标是星辰大海。
赞一下你最美!



原文作者:DBA修行之路;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-05-25

  • 博文量
    64
  • 访问量
    23943