zoukankan      html  css  js  c++  java
  • MySQL 启动流程及配置管理

    MySQL 启动关闭流程

    启动数据库

    # 启动数据库时,具体流程
    1. systemctl start mysql
    2. /etc/init.d/mysqld start
    3. mysqld_safe --defaults-file=/etc/my.cnf
    4. mysqld --defaults-file=/etc/my.cnf
    
    # 最终都是 mysqld_safe 启动,mysqld 守护进程在后台
    

    关闭数据库

    # 正常关闭数据
    1.systemctl stop mysql
    2./etc/init.d/mysqld stop
    3.mysqldadmin -uroot -p123 shutdown
    
    # 不正常关闭数据库
    1.kill -9 mysqlpid
    2.killall mysqld
    3.pkill mysqld
    # 后果:
    1.如果业务量很大,数据库不会立刻关闭,只是停止服务,pid文件和socket文件还存在
    2.如果业务量很大,会丢失数据
    

    MySQL 配置管理

    预编译阶段

    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.20 
    -DMYSQL_DATADIR=/usr/local/mysql-5.6.20/data 
    -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.20/tmp/mysql.sock 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DWITH_EXTRA_CHARSETS=all 
    -DWITH_INNOBASE_STORAGE_ENGINE=1 
    -DWITH_FEDERATED_STORAGE_ENGINE=1 
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
    -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
    -DWITH_ZLIB=bundled 
    -DWITH_SSL=system 
    -DENABLED_LOCAL_INFILE=1 
    -DWITH_EMBEDDED_SERVER=1 
    -DENABLE_DOWNLOADS=1 
    -DWITH_DEBUG=0 
    

    配置文件

    # 配置文件位置(按读取顺序正序排列,优先级倒序排列)
    ①. /etc/my.cnf            # 优先级 4
    ②. /etc/mysql/my.cnf      # 优先级 3
    ③. $basedir/my.cnf        # 优先级 2
    ④. ~/my.cnf               # 优先级 1
          
    # defaults-extra-file 配置在上述的配置文件中,记录其他子配置文件路径,优先级由上述的配置文件决定 (类似 include)
    
    
    vim /etc/my.cnf
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    socket=/tmp/mysql.sock 
    

    命令行

    mysqld_safe
    --skip-grant-tables 
    --skip-networking
    --datadir=/usr/local/mysql/data
    --basedir=/usr/local/mysql/mysql
    --defaults-file=/etc/my,cnf
    --pid-file=/usr/local/mysql/data/db01.pid
    --socket=/usr/local/mysql/data/mysql.sock
    --user=mysql
    --port=3306
    --log-error=/usr/local/mysql/data/db01.err
    

    MySQL 配置文件

    配置文件的位置和优先级

    ①. /etc/my.cnf            # 优先级 4
    ②. /etc/mysql/my.cnf      # 优先级 3
    ③. $basedir/my.cnf        # 优先级 2
    ④. ~/my.cnf               # 优先级 1
          
    # defaults-extra-file 配置在上述的配置文件中,记录其他子配置文件路径,优先级由上述的配置文件决定 (类似 include)
    

    配置文件的优先级测试

    # 配置~/.my.cnf
    [root@db03 ~]# vim ~/.my.cnf
    [mysqld]
    server_id=1
    
    # 配置$basedir/my.cnf
    [root@db03 ~]# vim /service/mysql/my.cnf 
    [mysqld]
    server_id=2
    
    # 配置/etc/mysql/my.cnf
    [root@db03 ~]# vim /etc/mysql/my.cnf
    [mysqld]
    server_id=3
    
    # 配置/etc/my.cnf
    [root@db03 ~]# vim /etc/my.cnf
    server_id=4
    
    # 重启数据库
    [root@db03 ~]# /etc/init.d/mysqld start
    
    # 查看 server_id 测试
    [root@db03 ~]# mysql -uroot -p123 -e 'show variables like "server_id"'
    Warning: Using a password on the command line interface can be insecure.
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 4     |
    +---------------+-------+
    

    配置文件的生效顺序

    # 1.预编译制定socket文件
    cmake . -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.46/tmp/mysql.sock
    
    # 2.配置文件制定
    [root@db02 ~]# vim /etc/my.cnf
    [mysqld]
    socket=/tmp/mysql.sock
    
    # 3.配置a.txt
    [root@db02 ~]# vim a.txt
    [mysqld]
    socket=/opt/mysql.sock
    
    # 4.命令行
    --socket=/tmp/commond.sock
    
    # 5.分别使用以下命令测试生效的配置
    [root@db02 ~]# mysqld_safe --defaults-file=a.txt --socket=/tmp/commond.sock &
    [root@db02 ~]# mysqld_safe --defaults-file=a.txt
    [root@db02 ~]# mysqld_safe
    
    # 6.查看socket文件位置判断优先级
    

    配置文件的优先级总结

    # 优先级从高到低
    --socket=/tmp/mysql.sock > --defaults-file=/xxx/my.cnf > ~/my.cnf > $basedir/my.cnf > /etc/mysql/my.cnf > /etc/my.cnf > 初始化 > 预编译
    

    MySQL 配置文件的作用

    影响客户端的连接

    [root@db02 ~]# vim /etc/my.cnf
    [mysqld]
    socket=/tmp/mysql.sock
    [mysql]
    socket=/tmp/mysql.sock
    user=root
    password=123
    
    # 不需要重启,直接 mysql 就可以连接数据库
    

    影响服务端启动

    [root@db02 ~]# vim /etc/my.cnf
    [mysqld]
    socket=/tmp/mysql.sock
    server_id=1
    
    # 配置 server_id,必须要重启,查看才生效
    

    总结

    1.客户端也受配置文件影响		[mysql]     [client]
    2.客户端配置以后可以不重启
    3.服务端配置以后必须重启		[mysqld]    [server]
    4.企业一般配置
    
    [root@db02 ~]# vim /etc/my.cnf
    [mysqld]
    socket=/tmp/mysql.sock
    server_id=1
    [mysql]
    socket=/tmp/mysql.sock
    
  • 相关阅读:
    常用的汇编指令与技巧
    汇编调用c函数为什么要设置栈
    lp2356
    String函数的总结
    2019-5-22训练
    STL——substr
    STL 反转函数 (reverse() )
    2019-5-15训练——深搜
    高精度加法
    八皇后题解
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/13295000.html
Copyright © 2011-2022 走看看