MySQL 服务器启动程序

MySQL 服务器启动程序

mysqld

MySQL 服务器。

MySQL 服务器启动时,它将监听来自客户端程序的网络连接,并代表这些客户端管理对数据库的访问。

查看帮助

shell> mysqld --verbose --help

mysqld_safe

MySQL 服务器启动脚本。

mysqld_safe 是推荐的启动程序,在 mysqld 基础上添加了一些安全功能,例如,在发生错误时重新启动服务器,以及将运行时信息记录到错误日志中。

mysqld_safe 如果遇到未知的选项,会将其传递给 myqld 。

mysqld_safe 会读取配置文件中 [mysqld]、[server] 和 [mysqld_safe] 区域。

如果使用 systemd 管理方式,mysqld_safe 不可用。

基础选项

  • –help
    • 帮助
  • –basedir=dir_name
    • 安装目录
  • –datadir=dir_name
    • 数据目录
  • –pid-file=file_name
    • pid文件
  • –timezone=timezone
    • 时区
  • –mysqld=prog_name
    • 要启动的服务器程序的名称,只能用于命令行
  • –plugin-dir=dir_name
    • 插件目录
  • –ledir=dir_name
    • 服务器路径,只能用于命令行
    • 如果使用 systemd 管理方式,这个值可以在 MYSQLD_OPTS 中指定。
  • –skip-kill-mysqld
    • 启动时不杀掉流离失所的 (暂时找不到一个合适的词描述) mysqld 进程

配置文件选项

  • –defaults-file=file_name
    • 默认配置文件,必须放到命令行中第一位
      mysql> mysqld_safe --defaults-file=file_name --port=port_num
      
  • –defaults-extra-file=file_name
    • 额外的配置文件,必须放到命令行中第一位
  • –no-defaults
    • 不读取默认配置文件

日志选项

  • –log-error=file_name
    • 错误日志
  • –mysqld-safe-log-timestamps
    • 日志记录的时间戳格式
    • 选项值
      • UTC
        • utc (默认)
      • SYSTEM
        • system
      • HYPHEN
        • hyphen YY-MM-DD h:mm:ss格式
      • LEGACY
        • legacy YYMMDD hh:mm:ss格式
  • –syslog

    已弃用,使用 log_syslog 系统变量代替。

    • 错误信息写入syslog
  • –skip-syslog

    已弃用,使用 log_syslog 系统变量代替。

    • 不要将错误消息写入syslog,而是写入错误日志文件
  • –syslog-tag=tag

    已弃用,使用 log_syslog_tag 系统变量代替。

    • 系统日志的标签后缀

连接选项

  • –user={user_name|user_id}
    • 用户
  • –port=port_num
    • 端口
  • –socket=path
    • socket 文件

资源限制选项

  • –core-file-size=size
    • 可以创建的核心文件大小,选项值将传递给 ulimit -c
  • –nice=priority
    • 服务器调度优先级
  • –open-files-limit=count
    • mysqld 打开文件数量,选项值传递给 ulimit -n

其它选项

  • –malloc-lib=[lib_name]
    • 用于 mysqld 的备用 malloc 库

    • 用于内存分配的库名称,而不是系统 malloc() 库

    • 选项值必须是以下目录 /usr/lib, /usr/lib64, /usr/lib/i386-linux-gnu, or /usr/lib/x86_64-linux-gnu

    • 可以使用自带的库,也可以指定其它库

      [mysqld_safe]
      malloc-lib=tcmalloc
      或
      [mysqld_safe]
      malloc-lib=/opt/lib/libtcmalloc_minimal.so
      
    • 如果使用 systemd 管理方式,这个值可以通过设置 LD_PRELOAD 指定。

  • –mysqld-version=suffix

    • 服务端程序名称的后缀,只能用于命令行

      如 –mysqld-version=debug ,启动时会启动 mysqld-debug 。

    • 如果使用 systemd 管理方式,这个值可以在 MYSQLD_OPTS 中指定。

mysqld.server

这是一个 mysqld_safe 的启动脚本,使用 sys-v 方式管理。

mysql.server 读取 [mysql.server]、[mysqld] 区域的选项。

调用方法

mysql.server {start|stop}

sys-v 配置方法

  • 复制文件
    cp mysql.server /etc/init.d/mysql
    chmod +x /etc/init.d/mysql
    
  • 设置开启启动
    chkconfig --add mysql
    或
    chkconfig --level 345 mysql on
    

配置文件选项

mysql.server 的选项必须在配置文件中指定,不能在命令行中指定。

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql
  • basedir=dir_name
  • datadir=dir_name
  • pid-file=file_name
  • service-startup-timeout=seconds
    • 服务启动超时时间,默认值为900 (秒)

mysqld_multi

mysqld_multi 用于管理多实例。

mysqld_muti 会读取 [mysqld_multi]、[mysqldN] 组 (N 是正整数,叫做组号,或 GNR ) 。

调用语法

mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]
  • 可以对指定的 GNR 操作,如果不指定 GNR ,对配置文件中的所有服务器执行操作

  • GNR 列表可以是组号,也可以是范围,如 10-13,也可以包含多个值,如 8,10-13,但是 GNR 列表中不能出现空格

    mysqld_multi stop 8,10-13
    

示例

# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir    = /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user       = unix_user1

[mysqld3]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir    = /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user       = unix_user2

[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /usr/local/mysql/data4/hostname.pid4
datadir    = /usr/local/mysql/data4
language   = /usr/local/mysql/share/mysql/estonia
user       = unix_user3

[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /usr/local/mysql/data6/hostname.pid6
datadir    = /usr/local/mysql/data6
language   = /usr/local/mysql/share/mysql/japanese
user       = unix_user4

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注