mysqld_safe启动脚本源码阅读、分析
mysqld_safe是MySQL数据库的启动脚本,负责启动mysqld实例。该脚本对MySQL数据库的启动流程进行了详细的描述,包括查找MySQL相关目录、解析配置文件以及最后如何调用mysqld程序来启动实例等。同时,该脚本还涉及了许多shell编程中的小技巧,例如变量解析、sed替换转义、进程优先级的判断以及test结构等等。
**MySQL数据库启动流程**
mysqld_safe脚本首先定义了一些状态变量,例如KILL_MYSQLD、MYSQLD、niceness等,其中KILL_MYSQLD用于标识是否需要kill多余的mysqld_safe程序,MYSQLD是mysqld二进制可执行文件的名称,niceness是进程的调度优先级标识。
然后,脚本定义了一些变量,例如logging、want_syslog、syslog_tag等,用于标识日志记录状态、是否使用syslog、syslog标志位等。
接下来,脚本定义了pid文件和错误日志的路径,用于存储mysqld实例的进程ID和错误日志。
**shell编程技巧**
mysqld_safe脚本中涉及了许多shell编程中的小技巧,例如:
* 变量解析:使用case语句来解析命令行参数,例如解析--no-defaults、--defaults-file和--defaults-extra-file选项。
* sed替换转义:使用sed命令来替换和转义字符串,例如将配置文件中的变量替换为实际值。
* 进程优先级的判断:使用niceness变量来设置进程的调度优先级。
* test结构:使用test结构来判断条件是否成立,例如判断是否需要kill多余的mysqld_safe程序。
**MySQL配置文件**
mysqld_safe脚本还涉及了MySQL配置文件的解析,例如读取配置文件中的变量、设置mysqld实例的参数等。配置文件目录是/usr/local/mysql3306/etc,配置文件中定义了mysqld实例的参数,例如数据库目录、日志文件目录、错误日志文件目录等。
**环境变量**
mysqld_safe脚本还涉及了环境变量的设置,例如umask、trap等。umask用于设置默认权限,trap用于捕捉信号,例如在终端上被人打断时的信号。
mysqld_safe启动脚本对MySQL数据库的启动流程进行了详细的描述,同时还涉及了许多shell编程中的小技巧,例如变量解析、sed替换转义、进程优先级的判断以及test结构等等。