MySQL 服务器简介

打印 上一主题 下一主题

主题 790|帖子 790|积分 2370

通常所说的 MySQL 服务器指的是mysqld程序,当运⾏mysqld后对外提供MySQL 服务,这个专题的内容涵盖了以下关于MySQL 服务器以及相干配置的内容,包括:   

  • 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选项。
  • 服务器系统变量。反映了启动选项的当前状态和值,其中⼀些变量可以在服务器运⾏时修改。
  • 服务器状态变量。这些变量包罗了有关运⾏时操纵的计数器和统计信息。
  • 服务器怎样管理客⼾端连接。
  • 配置和使⽤时区⽀持。
  • 服务器端帮助功能。
服务器配置和默认值

   mysqld 有很多选项和系统变量可以在启动时进⾏配置,要查察服务器的默认选项和系统变量值,可以执⾏以下命令:   
  1. mysqld --verbose --help
复制代码
  1. # 查看所有mysqld 选项和可配置的系统变量列表及默认值
  2. root@hcss-ecs-9734:/var/lib/mysql# mysqld --verbose --help
  3. # 内容看起来像这样
  4. abort-slave-event-count 0
  5. allow-suspicious-udfs FALSE
  6. archive ON
  7. auto-increment-increment 1
  8. ... 省略
  9. transaction-read-only FALSE
  10. transaction-write-set-extraction XXHASH64
  11. updatable-views-with-limit YES
复制代码
    查察服务器在运⾏时系统变量的值,连接到MySQL并执⾏以下语句:      
  1. show variables [like ...];
复制代码
  其中可以跟 like 语句和通配符查找某些具体的系统变量,比方:
   

       查察服务器在运⾏时的⼀些统计和状态指⽰器,连接到MySQL并执⾏以下语句:         
  1. show status like [...];
复制代码
         其中可以跟 like 语句和通配符查找某些具体的    统计和状态指⽰器,比方:         
               系统变量和状态信息也可以使⽤ mysqladmin命令来查察:            
  1. mysqladmin variables
  2. mysqladmin extended status
复制代码
          关于服务器的选项、系统变量、状态变量参考以下官⽹列                https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.html                系统变量和选项

             当通过mysqld启动数据库服务器时,可以通过选项⽂件或命令⾏中提供选项,但是,在⼤多数环境下,为确保服务器每次运⾏时都使⽤相同的选项,最好的⽅法是在选项⽂件中指定相应的选项,                   mysqld从选项⽂件中的        [mysqld]        和        [server]        组(节点)中读取选项内容。                         mysqld接受的选项可以通过        mysqld --verbose --help        查察,列表中的有些项⽬是可以在服务器启动时设置的系统变量,系统变量可以在连接MySQL后使⽤        SHOW VARIABLES        语句查察,但有些内容只在        --help        中存在,使⽤        SHOW VARIABLES        时并没有显⽰,这是由于它们只是选项⽽不是系统变量。                   注意:选项值可以通过命令⾏和选项⽂件设置,部分系统变量可以通过SET语句动态设置值。                      常⽤选项如下:        
选项系統变量说明
--character-set-servercharacter-set-server服务器的默认字符集,默认 utf8mb4,如果设置了这个变量,还应该设置 collation_server 来指定字符集的排序规则。
--collation-servercollation_server                         服务器的默认排序,默认utf8mb4_0900_ai_ci            
--port                         port                                      MySQL服务启动后监听的端⼝号            
                         --datadir                                      datadir                                      MySQL服务器的数据⽬录            
                         --default-storage-engine                                      default_storag                                      e_engine                                      表的默认存储引擎            
--log-output                         log_output                                      ⼀般查询⽇志和慢速查询⽇志输出的⽬的地,值可以是 TABLE ,              FILE              和              NONE              ,可以同时指定多个值,              NONE 的优先级最⾼            
                         --general-log                                      general_log                                                                   是否启⽤⼀般查询⽇志。值为                0                (或                OFF                )禁⽤⽇志,为 1 (或                ON                )来启⽤⽇志。⽇志输出⽬录由                log_output                系统变量控制                                       
--general-log-file                         general_log_file                                      ⼀般查询⽇志⽂件的名称。默认值是             host_name             .log            
                         --slow-query-log                                      slow_query_log                                      是否启⽤慢查询⽇志。值为              0              (或              OFF              )禁⽤⽇志,为 1 (或              ON              )来启⽤⽇志。⽇志输出⽬录由              log_output              系统变量控制            
--slow-query-log-file                         slow_query_log_file                                      慢查询⽇志⽂件的名称。默认值是             host_name             -slow.log            
                         --long-query-time                                      long_query_time                                      如果查询耗费的时间超过这个数秒,服务器将增加Slow_queries状态变量,如果慢速查询⽇志开启,查询将被记载到慢速查询⽇志⽂件中,默认值为10,单位为秒            
                         --log-error                                      log_error                                      默认的错误⽇志⽬标。如果⽬标是控制台值为              stderr              ,⽬标是⼀个⽂件,值为具体的⽂件名            
                         --log-bin             指定⽤于⼆进制⽇志⽂件的根本名称
                                       --server-id                          server_id该变量指定服务器ID,默认为 1 。
                         --max-connections             max_connections                                                      允许客⼾端同时连接的最⼤数                                       
                                                使⽤系统变量

           

  • 当使⽤选项设置⼀个数值的变量时,可以带有后缀 K 、 M 或 G (⼤⼩写不限)表⽰ 1024 、1024^2 或 1024^3 ;从MySQL 8.0.14 开始,后缀也可以⽤ T 、 P 和 E 来表⽰ 1024^4 、1024^5 或 1024^6 .⽰例:为服务器指定 256 KB 的排序缓冲区⼤⼩和 1 GB 的最⼤数据包⼤⼩
         
  1. # 在命令⾏的指定
  2. mysqld --sort-buffer-size=256K --max-allowed-packet=1G
  3. # 在选项⽂件中指定
  4. [mysqld]
  5. sort_buffer_size=256k
  6. max_allowed_packet=1g
复制代码
         

  • 系统变量有两个作⽤域,分别是 Global (全局)和 Session (会话), Global 全局变量影响服务器的整体操纵, Session 会话变量影响各个客⼾端连接的操纵。给定的系统变量可以同时具有 全局值和会话值,它们的关系如下:服务器启动时,会将每个全局变量初始化并设置默认值,具体的值可以通过命令⾏或选项⽂件更改;服务器为每个客⼾端维护⼀组 Session 变量,在客⼾端连接时使⽤相应全局变量的当前值进⾏初始化。
  • ⼤部分系统变量是动态的,在服务器运⾏时,可以连接 mysql 使⽤ SET 语句设置系统变量,必要指定作⽤域(也可以在前⾯加上@@ 修饰符),然后指定系统变量的名称,如下所⽰:
           1.设置全局系统变量最⼤连接数为1000:
         
  1. set global max_connections = 1000;
  2. set @@global.max_connections = 1000;
复制代码
          2.将全局系统变量持久化到 mysqld-auto.cnf ⽂件(同时设置运⾏时值):
         
  1. # PERSIST 表⽰持久化的同时设置全局变量的值
  2. set persist max_connections = 1000;
  3. set @@persist.max_connections = 1000;
复制代码
          下表为MySQL的配置文件,配置优先级往下逐级递增,其中 mysqld-auto.cnf ⽂件为配置优先级最高的文件,默认不存在该文件,只有使用 set persist 语句时才天生该文件。
           
⽂件名说明
%WINDIR%\my.ini , %WINDIR%\my.cnf
全局,%WINDIR%是一个环境变量,它代表Windows操纵系统的安装目次,通常等于C:\Windows
C:\my.ini , C:\my.cnf
全局
BASEDIR\my.ini , BASEDIR\my.cnf
全局,其中BASEDIR指mysql的安装路径,这是最常用的配置文件
defaults-extra-file
如果存在其他选项⽂件可以通过 --defaults-extra-file 选项指定
%APPDATA%\MySQL\.mylogin.cnf 登录路径选项(仅限客⼾端),%APPDATA% 表⽰应⽤程序数据的⽬录,如C:\Users\[用户名]\AppData\Roaming
DATADIR\mysqld-auto.cnf
系统变量 (仅限服务器)
                                           而                         mysqld-auto.cnf 文件位于 /var/lib/mysql 路径下,其内容如下                                 
  1. root@hcss-ecs-9734:/var/lib/mysql# cat mysqld-auto.cnf
  2. {"Version": 2, "mysql_dynamic_parse_early_variables": {"max_connections": {"Value": "1000", "Metadata": {"Host": "localhost", "User": "root", "Timestamp": 1735369777874841}}}}
复制代码
           在mysql中也可以看到 max_connections 已经被设置为1000
            

                         3.将全局系统变量持久化到              mysqld-auto.cnf              ⽂件(不设置运⾏时值):                                    
  1. # PERSIST 表⽰持久化的同时设置全局变量的值
  2. set persist_only max_connections = 1000;
  3. set @@persist_only.max_connections = 1000;
复制代码
                                                  删除持久化的系统变量可以使⽤语句                                       
  1. reset persist if exits system_var_name;
复制代码
                            4.设置                Session                系统变量,时区为"+8:00":                                          
  1. set session time_zone = '+8:00';
  2. set @@session.time_zone = '+8:00';
  3. set @@time_zone = '+8:00';
复制代码
                                                                                          

  • 对于数值型的系统变量,⽤带有后缀的值指定时,只适⽤于选项⽅式,⽽不能⽤在 SET ⽅式中;SET ⽅式可以使⽤表达式为系统变量指定值,⽽在选项⽅式中不允许,如下所⽰:
      
  1. # 选项形式
  2. mysqld --max_allowed_packet=16M # 允许
  3. mysqld --max_allowed_packet=16*1024*1024 # 不允许
  4. # 运⾏时SET形式
  5. set global max_allowed_packet=16M; # 不允许
  6. set global max_allowed_packet=16*1024*1024; # 允许
复制代码
      ⽰例:服务器常⽤配置

               Linux系统下编辑 /etc/mysql/my.cnf                       Windows系统下打开MySQL Server程序安装路径/my.ini,比方我电脑上为D:\mysql\MySQL Server 8.0\my.ini                      注意:               

  • 编辑前先备份原始⽂件
  • 如果要修改数据⽬录选项发起先停⽌MySQL服务,并把原data⽬录整体复制到新路径,配置完成后重启服务
               在         [mysqld]         节点下添加以下内容                     
  1. # MySQL 服务节点
  2. [mysqld]
  3. # MySQL 服务启动后监听的端⼝号
  4. port=3306
  5. # 数据⽬录的路径,这⾥演⽰的是windows下的配置,注意分隔符⽤/,如果是\则需要转义为\\.
  6. # 把原data⽬录整体复制到新路径
  7. datadir=D:/database/MySQL/data8.0
  8. # MySQL 服务器的字符集与排序规则
  9. character-set-server=utf8mb4
  10. collation-server=utf8mb4_general_ci
  11. # 新建表时使⽤的存储引擎,windows下已默认配置
  12. default-storage-engine=INNODB
  13. #注意要多敲一个回车键,即光标要在最后一行配置信息的下一行
复制代码
      

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表