当前位置: 首页 > Linux

MySql(一)——启动选项和系统变量

时间:2023-04-06 06:31:25 Linux

MySql(一)——启动选项和系统变量启动MySql服务器程序mysqldmysqld这个可执行文件代表MySql服务器程序,直接运行这个可执行文件就可以启动它归档服务器进程。mysqld_safemysqld_safe是一个启动脚本,它会间接调用mysql,顺便还会启动另一个监控服务,这个监控进程可以在服务器进程挂掉的时候帮助重启。另外,在使用mysqld_safe启动服务器程序时,会将服务器程序的错误信息和其他诊断信息重定向到一个文件中,并生成错误日志,可以方便我们查找错误原因。mysql.servermysql.server也是一个启动脚本,它会间接调用mysql_safe,在调用mysql.server的时候,后面指定start参数来启动服务器程序:mysql.serverstartmysqld_multi一台电脑可以运行多个服务器实例。mysqld_multi可以监视每个服务器进程的启动或停止。Tips:在windows下,命令:“完整的可执行文件路径”--install[-manual][服务名称]可以指定要注册为windows服务的程序。启动MySql客户端程序mysql-h主机名-u用户名-p密码参数名称含义-h计算机域名或IP地址-u用户名-p密码客户端与客户端连接过程中运行的服务器程序和客户端服务器程序本质上是计算机上的一个进程,所以客户端进程向服务器进程发送请求并得到回复的过程,本质上就是一个进程间通信的过程!MySql支持以下三种客户端进程和服务器进程之间的通信方式。TCP/IPmysqld-P3307,-P可以改变MySql服务器监听哪个端口。mysql-p3307,-P允许客户端连接到服务器的指定端口。命名管道和共享内存。只有Windows用户可以使用Unix域套接字文件。如果我们的服务器进程和客户端进程都运行在同一台类Unix机器上的话,我们可以使用Unix域套接字文件进行进程间通信。如果我们在启动客户端程序时指定主机名为localhost,或者指定启动参数--protocal=socket,那么服务器程序和客户端程序就可以通过Unix域套接字文件进行通信。MySql服务器程序默认监听的Unix域套接字文件路径是/tmp/mysql.sock,客户端程序也默认连接到这个Unix域套接字文件。如果我们想改变这个默认路径,可以在启动时指定socket参数mysqld--socket=/tmp/a.txtmysql-hlocalhost-uroot--socket=/tmp/a.txt-pserver来处理客户端请求服务器程序不管客户端进程和服务器进程使用什么通信方式,最终的效果是:客户端进程发送一段文本(MySQL语句)给服务器进程,服务器进程发送一段文本给处理后的客户端进程(处理结果)。连接管理大致分为以下三个部分:每当客户端进程连接到服务器进程时,服务器进程会创建一个线程来处理与客户端的交互,当客户端退出时,会断开与服务器的连接。服务器不会立即销毁与客户端交互的线程,而是将其缓存起来,并在另一个新客户端再次连接时将缓存的线程分配给新客户端。这具有不频繁创建和销毁线程的效果,从而节省开销解析和优化查询缓存:如果两个查询请求在任何字符上不同(例如:空格、注释、大写),缓存将不会命中。querycache虽然有时可以提高系统性能,但是也不得不为维护这个cache带来一些开销,比如每次在querycache中查找,处理完query请求后更新querycache,维护对应的内存等查询缓存区。从MySQL5.7.20开始,不推荐查询缓存,MySQL8.0删除了语法解析:判断请求的语法是否正确查询优化:MySql优化器会优化我们的语句存储引擎blackhole,MyIsam,InnoDB...存储引擎上的一些操作SHOWENGINES;建表时指定存储引擎:CREATETABLE表名(建表语句;)ENGINE=存储引擎名;修改表的存储引擎:ALTERTABLE表名ENGINE=存储引擎名称;启动选项和配置文件使用命令行选项格式:--startup-option1[=value1]--startup-option2[=value2]...--startup-optionn[=valuen]mysqld--skip-networking:客户端不能使用-h(TCP/IP)进行网络通信mysqld--default-storage-engine=MyISAM:设置默认引擎为MyISAM在命令行设置启动选项只对当前启动配置生效Windows操作系统使用options文件中的配置文件路径名备注%WINDIR%my.ini,%WINDIR%my.cnfWINDIR一般指toC:WINDOWSC:my.ini,C:my.cnfBASEDIRmy.ini,BASEDIRmy.cnfBASEDIR是MySQL安装目录的路径defaults-extra-file命令行指定的extra配置文件的路径%APPDATA%MySQL.mylogin.cnf登录路径选项(仅限客户端)最后一个名为.mylogin.cnf的配置文件。特别是,它不是纯文本文件(所有其他配置文件都是纯文本文件),而是使用mysql_config_editor实用程序创建的加密文件。该文件只能包含启动客户端软件时连接服务器的一些选项,包括主机、用户、密码、端口和套接字。而且它只能被客户端程序使用。类Unix操作系统配置文件路径名备注/etc/my.cnf/etc/mysql/my.cnfSYSCONFDIR/my.cnfCMake构建MySQL时用SYSCONFDIR选项指定的目录$MYSQL_HOME/my.cnf服务器特定选项(serveronly)defaults-extra-file由命令行指定的额外配置文件路径~/.my.cnf用户特定选项~/.mylogin.cnf用户特定登录路径选项(仅限客户端)配置文件内容[server]option1#This是option1,这个选项不需要一个选项值option2=value2#这个是option2,这个选项需要一个选项值(Specificstartupoptions...)[mysql](Specificstartupoptions...)[mysqladmin](Specificstartupoptions...)如果我们在多个配置文件中设置相同的启动选项,最后一个配置文件中的那个占上风。启动命令类组可以读到mysqld]、[server]、[mysql.server]mysql启动客户端[mysql]、[client]mysqladmin启动客户端[mysqladmin]、[client]mysqldump启动客户端[mysqldump],[client]defaults-file的使用如果我们不想让MySql在默认路径下搜索配置文件(也就是上表中列出的那些),我们可以在命令行指定defaults-file选项,比如这个(以UNIX系统为例):mysqld--defaults-file=/tmp/myconfig.txt。如果文件不存在或不可访问,则会发生错误。命令行启动选项与配置文件启动选项的区别如果命令行和配置文件中都出现相同的启动选项,则以命令行启动选项为准。系统变量一、系统变量介绍MySql服务器程序运行过程很多影响程序行为的变量都会用到SHOW[GLOBAL|SESSION]VARIABLES[LIKE匹配方式];2、通过启动选项设置系统变量:上面说的很具体了。在服务器程序运行过程中设置系统变量更强大最重要的一点是,对于大多数系统变量,它们的值可以在服务器程序运行过程中动态修改,无需停止和重启服务器。设置不同作用域的系统变量GLOBAL:全局变量影响服务器的整体运行。SESSION:会话变量,影响一个客户端连接的操作。(注意:SESSION有一个单独的名字LOCAL)服务器会为每个连接的客户端维护一组会话变量设置:SET[GLOBAL|SESSION]系统变量名=值;SETGLOBALdefault_storage_engine=MyISAMSET[@@(GLOBAL|SESSION).]var_name=XXX;SET@@GLOBAL.default_storage_engine=MyISAMSETdefault_storage_engine=MyISAM如果在设置系统变量的语句中省略作用域,则默认作用域为SESSIONclient改变了GLOBAL范围内的某个系统变量的值,不会影响当前连接的client上SESSION范围的系统变量的值,只会影响后续连接的SESSION范围的client的值。3.启动选项和系统变量的区别-大部分系统变量都可以作为启动选项传入-有些系统变量是程序运行过程中自动生成的,不能设置为启动选项,比如`auto_increment_offset`,`character_set_client`-有些启动选项不是系统变量,比如`defaults-file`4.状态变量为了让我们更好的了解服务器程序的运行状态,MySQL服务器程序维护了很多关于程序变量的运行状态。由于状态变量是用来显示服务器程序运行状态的,所以它们的值只能由服务器程序自己设置,我们程序员是没法设置的。如:Threads_connected