MySQL 的启动选项和系统变量实例详解

2022-05-16 0 350
目录
  • 启动选项
    • 命令行
      • 参数的长形式和短形式
    • 配置文件
      • 配置组
  • 系统变量
    • 查看
      • 设置
        • 通过启动项设置
        • 服务器程序运行过程中设置
      • 作用域
      • 状态变量
        • 查看

        本文实例讲述了MySQL 的启动选项和系统变量。分享给大家供大家参考,具体如下:

        MySQL的配置信息可以通过两种方式实现,一种是命令行形式,在启动MySQL服务时后边带上相关配置参数,此种方式会在MySQL重启后失效。另外一种是通过写入配置文件,如my.cnf,启动或者重启MySQL服务都会生效,此种方式是永久生效。

        启动选项

        命令行

        在MySQL服务命令启动时,带上配置参数

        启动方式可参考这篇:MySQL 的启动和连接方式

        命令格式:
        启动命令 --启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]
        例如:
        mysqld --default-storage-engine=MyISAM //设置默认存储引擎
        错误例子:
        mysqld --default-storage-engine = MyISAM //设置默认存储引擎
        原因:
        因为启动项和值之间的等号不能有空格

        参数的长形式和短形式

        配置参数有长形式和短形式之分,有些作用是一样的,只是写法不同而已

        --host => -h //主机
        --port => -P // 端口
        --user => -u //用户
        --password => -p //密码
        --version => -V //版本
        ......
        例子:
        mysqld --port=3306
        mysqld -P3306
        mysqld -P 3306
        注意:
        密码不能有空格
        mysqld -proot

        配置文件

        配置文件my.cnf的位置,有可能是以下的几种,如MySQL服务启动时未指定配置文件时,会从以下地方查找读取并初始化。

        * /etc/my.cnf 
        * /etc/mysql/my.cnf
        * defaults-extra-file //指定的额外配置文件路径
        * SYSCONFDIR/my.cnf //cmake编译安装情况
        * $MYSQL_HOME/my.cnf //设置环境变量,默认安装路径
        * ~/.my.cnf //用户特定选项,家目录
        * ~/.mylogin.cnf //用户特定的登录路径选项(仅限客户端),mysql_config_editor修改,不是纯文件

        注意

        1. 在配置文件中指定的启动选项不允许加–前缀,并且每行只指定一个选项,而且=周围可以有空白字符
        2. 如果我们在多个配置文件中设置了相同的启动选项,那以最后一个配置文件中的为准
        3. 如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么以命令行中的启动选项为准
        4. mysqld –defaults-file=/tmp/myconfig.txt 
        //在程序启动的时候将只在/tmp/myconfig.txt路径下搜索配置文件。如果文件不存在或无法访问,则会发生错误

        配置组

        配置文件一共可以以下这些组别:mysqld、mysqld_safe、mysql.server、mysql、mysqladmin、mysqldump,可以针对不同组别进行配置

        MySQL 的启动选项和系统变量实例详解

        内容格式
        [server]
        (具体的启动选项...)
        [mysqld]
        (具体的启动选项...)
        [mysqld_safe]
        (具体的启动选项...)
        [client]
        (具体的启动选项...)
        [mysql]
        (具体的启动选项...)
        [mysqladmin]
        (具体的启动选项...)
        例子:
        [mysqld]
        pid-file  = /var/run/mysqld/mysqld.pid
        socket  = /var/run/mysqld/mysqld.sock
        datadir  = /var/lib/mysql
        log-error = /var/log/mysql/error.log
        # 优化配置
        wait_timeout=10
        back_log=600
        key_buffer_size = 2048M
        read_buffer_size = 100M
        max_allowed_packet = 1000M
        thread_stack  = 192K
        thread_cache_size = 4
        myisam-recover-options = BACKUP
        max_connections = 4000
        max_user_connections = 0
        max_connect_errors = 65535
        open_files_limit = 10240
        ......

        注意
        1. [server]组下边的启动选项将作用于所有的服务器程序,如mysqld、mysqld_safe、mysql.server
        2. [client]组下边的启动选项将作用于所有的客户端程序,如mysql、mysqladmin、mysqldump
        3. 同一个配置文件中多个组的优先级,将以最后一个出现的组中的启动选项为准

        系统变量

        MySQL服务器程序运行过程中会用到许多影响程序行为的变量,它们被称为MySQL系统变量。

        例如:
        1. 允许同时连入的客户端数量用系统变量max_connections表示
        2. 表的默认存储引擎用系统变量default_storage_engine表示
        3. 查询缓存的大小用系统变量query_cache_size表示
        ……

        查看

        格式:
        SHOW VARIABLES [LIKE 匹配的模式];
        例如:
        SHOW VARIABLES LIKE 'default_storage_engine';

        MySQL 的启动选项和系统变量实例详解

        设置

        通过启动项设置

        命令行设置
        mysqld --default-storage-engine=MyISAM --max-connections=10
        配置文件设置
        [mysqld]
        default-storage-engine = MyISAM
        max-connections = 10
        ......

        注意:
        对于启动选项来说,如果启动选项名由多个单词组成,各个单词之间用短划线-或者下划线_连接起来都可以,但是它对应的系统变量的单词之间必须使用下划线_连接起来(即通过show查看或set设置时)

        服务器程序运行过程中设置

        系统变量比较牛逼的一点就是,对于大部分系统变量来说,它们的值可以在服务器程序运行过程中进行动态修改而无需停止并重启服务器

        不过系统变量有全局和当前会话作用域之分

        作用域

        GLOBAL:全局变量,影响服务器的整体操作。
        SESSION:会话变量,影响某个客户端连接的操作。(别名叫LOCAL)
        格式:
        1. SET [GLOBAL|SESSION] 系统变量名 = 值;
        2. SET [@@(GLOBAL|SESSION).]var_name = XXX;
        global
        例如:
        1. SET GLOBAL default_storage_engine = InnoDB;
        2. SET @@GLOBAL.default_storage_engine = InnoDB;
        session
        例如:
        1. SET SESSION default_storage_engine = InnoDB;
        2. SET @@SESSION.default_storage_engine = InnoDB;
        3. SET default_storage_engine = InnoDB;//默认 session
        查看
        格式:SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
        1. SHOW SESSION VARIABLES LIKE 'default_storage_engine';
        2. SHOW GLOBAL VARIABLES LIKE 'default_storage_engine';

        注意:

        如果某个客户端改变了某个系统变量在
        GLOBAL作用范围的值,并不会影响该系统变量在当前已经连接的客户端作用范围为
        SESSION的值,只会影响后续连入的客户端在作用范围为
        SESSION的值。

        补充说明
        并不是所有系统变量都具有GLOBAL和SESSION的作用范围

        * 有一些系统变量只具有GLOBAL作用范围,比方说max_connections,表示服务器程序支持同时最多有多少个客户端程序进行连接
        * 有一些系统变量只具有SESSION作用范围,比如insert_id,表示在对某个包含AUTO_INCREMENT列的表进行插入时,该列初始的值
        * 有一些系统变量的值既具有GLOBAL作用范围,也具有SESSION作用范围,比如我们前边用到的default_storage_engine,而且其实大部分的系统变量都是这样的

        有些系统变量是只读的,并不能设置值

        比方说version,表示当前MySQL的版本,我们客户端是不能设置它的值的,只能在SHOW VARIABLES语句里查看。

        启动选项与系统变量的关系

        启动选项是在程序启动时我们程序员传递的一些参数,而系统变量是影响服务器程序运行行为的变量

        * 大部分的系统变量都可以被当作启动选项传入
        * 有些系统变量是在程序运行过程中自动生成的,是不可以当作启动选项来设置,比如auto_increment_offset、character_set_client啥的
        * 有些启动选项也不是系统变量,比如defaults-file

        状态变量

        为了让我们更好的了解服务器程序的运行情况,MySQL服务器程序中维护了好多关于程序运行状态的变量,它们被称为状态变量。

        比方说Threads_connected表示当前有多少客户端与服务器建立了连接,Handler_update表示已经更新了多少行记录

        由于状态变量是用来显示服务器程序运行状况的,所以它们的值只能由服务器程序自己来设置,我们程序员是不能设置的

        查看

        格式:
        SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];
        例如:
        SHOW STATUS LIKE 'thread%';

        MySQL 的启动选项和系统变量实例详解

        更多关于MySQL相关内容感兴趣的读者可查看本站专题

        免责声明:
        1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

        2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
        如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
        如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

        NICE源码网 MySql MySQL 的启动选项和系统变量实例详解 https://www.niceym.com/40686.html