• 04-数据库连接启动流程mysql初始化配置文件配置多实例初始化配置文件使用


    一、mysql数据库连接

    1、自带的工具

    Linux 或 UNIX shell 提示符(终端窗口)

     shell> mysql [options]

    mysql + 选项

    选项:
    -u 用户名
    -p 密码
    -h mysql的地址
    -P 端口号
    -S socket文件
    -e 免交互执行mysql命令

    查看帮助信息:

    shell> mysql --help(或 -?)

    查看客户端程序的版本:

    shell> mysql --version(或 -V)

    连接mysql例:

    1、mysql [-uroot -p -S xxxx]
    只限定在没有设定任何密码是可以本地登录的方式
    2、mysql -uroot -pxxx [S XXXX]
    本地Socket连接
    3、mysql -uroot -p123 -h 10.0.0.51 -P 3306
    应用远程tcp/ip连接串模式

    2、应用连接数据库

    注意: 需要加载对应语言程序的API

    连接前注意:

    判断自己的mysql数据库可以对外提供服务

    1、netstat -lnp|grep 3306  或  ps -ef | grep mysqld

    2、通过 TCP/IP的方式测试连接

    mysql -uroot -p123 -h10.0.0.51

    连接成功就可以说明对外提供服务了

    二、数据库的启动流程与关闭介绍

    1、启动

    数据库启动的最终结果就是实例的启动,即守护进程mysqld启动,还有线程、预分配的内存结构

    我们说mysqld不是自主启动了,它是mysqld_safe这个脚本拉起来的

    mysql.server是我们更加方便管理服务的一个脚本(sys-V),程序加上start就可以启动了还可以设置开机自启等,方便,但是不能定制额外的控制,比如分配的内存大小等

    对于单机mysql来讲,建议使用mysql.server,方便管理

    对于多实例(一台机器多个实例)来讲,mysqld_safe更推荐

    2、关闭

    (这里的/etc/init.d/mysqld 是指 mysql解压目录下拷贝过去的文件cp support-files/mysql.server /etc/init.d/mysqld)

    启动:

    /etc/init.d/mysqld start  -------->                          mysqld_dafe                      ----------> mysqld

    关闭:

    /etc/init.d/mysqld stop  ---------> mysqladmin -uroot -p1 shutdown  

                                                       servive mysqld stop

                                                        kill -9 

    # 第三种为利用系统进程管理命令关闭Mysql
    – kill pid            #<== 这里的 pid 为数据库服务对应的进程号。
    – killall mysqld   #<== 这里的 mysqld 是数据库服务对应的进程名字。
    – pkill mysqld     #<== 这里的 mysqld 是数据库服务对应的进程名字。

    三、mysql初始化配置文件

    思考:

    1. 我要启动,我的程序在哪
    2. 我启动后去哪找数据
    3. 我启动时候的状态信息和错误信息放哪
    4. 启动的时候给了我多少内存
    5. ............
    6. 还有很多东西都是要在启动前告诉我的

    针对以上问题解决方案:

    1. 可通过预编译的选项  也就是cmake,硬编码到程序中
    2. 命令行选项 设置初始化配置
      1. --skip-grant-tables
      2. --skip-networking
      3. --socket=               socket文件生成到想要的位置  
    # 先关闭服务
    # 例: mysql_safe --socket =          /tmp/mysql.sock          &
    #  启动实例的一个脚本      实例启动socket写到tmp目录下    后台运行

    如果命令行和预编译是设置了相同参数,以命令行为准

    注意:

    更改完后登录会报错

    启动时人为干预了某些参数,在连接时要用到这些参数时

    # mysql -uroot -p1 -S /tmp/mysql.sock

    3. 初始化配置文件

      配置文件的读取顺序

    """
    /etc/my.cnf                 默认第一个读取
    
    /etc/mysql/my.cnf   
    
    $MYSQL_HOME/my.cnf  前提是在环境变量中定义了MYSQL_HOME变量
    
    defaults-extra-file=/tmp/a.txt  除了以上的配置文件中 额外加载外部的配置
    
    ~/.my.cnf     隐藏文件 家目录
    
    从上到下读取
    """

    mysqld_safe 的参数 --defaults-file

    如果使用 ./bin/mysqld_safe 守护进程启动 mysql 数据库时,使用了 --defaults-file=< 配置文件的绝对路径> > 参数,
    这时只会使用这个参数指定的配置文件,以上任何配置文件都不在读取了.

    # mysql_safe --defaults-file=/tmp/a.txt &

    思考:

    """
    cmake: socket=/appliscation/mysql/tmp/mysql.sock
    命令行:  --socket=/tmp/mysql.sock
    配置文件: /etc/my.cnf   socket=/opt/mysql.sock
    --defaults-file=/tmp/a.txt   socket=/tmp/test.sock
    """

    问:

    socket生成在哪?

    命令行 /tmp/mysql.sock

    结论: 

    命令行>配置文件(--defaults-file也是配置文件)>cmake

    用的最多的是配置文件,建议不要设置多个配置文件,一个就够了,多了乱

    四、配置多实例

    实例:后台守护进程+线程+预分配的内存结构

    实例要启动:

    • 软件
    • 数据(一个实例只能管理自己那一部分数据)

    多实例

    • 不需要多个软件
    • 需要多套后台进程+线程+内存结构
      • 多个进程意味着多个端口(3307,3308,3309)
        • 多个配置文件、多个日志文件,多个socket,多个server_id

    (1)准备多套配置文件

    mkdir -p /data/330{7..9}
    """
    /data/3307/my.cnf
    /data/3308/my.cnf
    /data/3309/my.cnf
    """
    vim /data/3307/my.cnf
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3307/data
    socket=/data/3307/mysql.sock
    log-error=/data/3307/mysql.log
    log-bin=/data/3307/mysql-bin
    server-id=7
    port=3307
    [client]
    socket=/data/3307/mysql.sock
    3307
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3308/data
    socket=/data/3308/mysql.sock
    log-error=/data/3308/mysql.log
    log-bin=/data/3308/mysql-bin
    server-id=8
    port=3308
    [client]
    socket=/data/3308/mysql.sock
    3308
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3309/data
    socket=/data/3309/mysql.sock
    log-error=/data/3309/mysql.log
    log-bin=/data/3309/mysql-bin
    server-id=9
    port=3309
    [client]
    socket=/data/3309/mysql.sock
    3309

    主从会用到现在没什么用

    (2)初始化多套数据

    /application/mysql/scripts/mysql_install_db --defaults-file=/data/3307/my.cnf --basedir=/application/mysql --datadir=/data/3307/data
    
    /application/mysql/scripts/mysql_install_db --defaults-file=/data/3308/my.cnf --basedir=/application/mysql --datadir=/data/3308/data
    
    /application/mysql/scripts/mysql_install_db --defaults-file=/data/3309/my.cnf --basedir=/application/mysql --datadir=/data/3309/data

    修改权限(如果忘记授权会报错,就要手动创建日志文件)

    chown -R mysql.mysql /data/330*

    (3)启动多个实例

    mysqld_safe --defaults-file=/data/3307/my.cnf &
    mysqld_safe --defaults-file=/data/3308/my.cnf &
    mysqld_safe --defaults-file=/data/3309/my.cnf &

    查看330*端口是否启动

    netstat -lnp|grep 330

    如果第一次启动,没成功,就不会再生产日志文件了,手动创建

    touch /data/3307/mysql.log
    touch /data/3308/mysql.log
    touch /data/3309/mysql.log
    
    chown -R mysql.mysql /data/330*

    最终效果:

    mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
    mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"
    mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"

    五、初始化配置文件使用

    会用到的

    /etc/my.cnf

    --defaults-file

    1、初始化配置文件能做什么

    (1)影响实例启动(最终影响mysqld)

    (2)影响客户端程序(例如mysql命令  可不可以把mysql链接时的 参数 添加到配置文件中方便以后登录,是可以的)

    2、如何配置初始化配置文件

    客户端:

    • 通过[client] 标签做一个总的概述,如果[mysql] 和 [mysqldump]相同
    • 通过[mysql] 和 [mysqldump] 单独指定标签中的内容

    服务器端:

    • 通过[server] 标签做一个总的概述,如果[mysqld] 和 [mysql_safe]相同
    • 通过[mysqld] 和 [mysqld_safe] 单独指定标签中的内容

    简单配置文件格式

    # 关于服务器
    [mysqld]
    basedir=/application/mysql  # 所有的程序文件都在这个目录
    datadir=/application/mysql/data
    socket=/tmp/mysql.sock
    log-error=/var/log/mysql.log # 日志文件 错误日志
    log-bin=/data/mysql/mysql-bin # 二进制的位置
    server-id=6 # server-id 唯一标识实例的id
    port=3306
    # 涉及到关于目录的,首先要有这个目录,创建目录
    
    # 关于客户端
    [client]
    socket=/tmp/mysql.sock
    mkdir -p /data/mysql
    chown -R mysql.mysql /data/mysql/
    /etc/init.d/mysqld start
  • 相关阅读:
    MapReduce案例
    Hive学习笔记九
    大数据技术之Hive
    Hive学习笔记八
    Hive学习笔记七
    Hive学习笔记六
    大数据应用技术课程实践--选题与实践方案
    15.手写数字识别-小数据集
    14.深度学习-卷积
    13.垃圾邮件分类2
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13763281.html
Copyright © 2020-2023  润新知