博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql的程序结构,实例, 及mysql的多实例
阅读量:4625 次
发布时间:2019-06-09

本文共 6068 字,大约阅读时间需要 20 分钟。

一.mysqld 的程序结构

1.连接层

         1)检验用户的合法性
         2)提供两种连接方式
                a)TCP/IP
                [root@db02 ~]# mysql -uroot -p123 -h10.0.0.51
                [root@db01 ~]# mysql -uroot -p123 -h127.0.0.1

                b)socket

                [root@db01 ~]# mysql -uroot -p123 -S /usr/local/mysql/tmp/mysql.sock
                [root@db01 ~]# mysql -uroot -p123 -hlocalhost
                [root@db01 ~]# mysql -uroot -p123
                3)建立一个与SQL层交互的线程
2.SQL层
1)接收连接层传来的SQL语句
2)检查语法
3)检查语义(检查它属于哪种SQL语句:DDL,DML,DCL,DQL)
4)解析器:解析SQL语句,生成多种执行计划
5)优化器:接收解析器传来的多种执行计划,选择最优化的一条方式去执行
6)执行器:执行优化器传来的最优方式的SQL语句
a)建立一个与存储引擎层交互的线程
b)接收存储引擎层,返回的结构化成表的数据
7)写缓存
8)记录日志

3.存储引擎层
1)接收SQL层传来的SQL语句
2)与磁盘交互,找到数据并结构化成表的形式,返回给SQL层
3)建立一个与SQL层交互的线程

二.什么是实例?

1.MySQL的后台进程+线程+预分配的内存结构。

2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内存结构供MySQL处理数据使用。

多实例:
1)多个进程
2)多个线程
3)多个预分配的内存结构

多套配置文件:
多个端口
多套数据目录(--datadir=/usr/local/mysql/data)
多个socket文件

[root@db01 ~]# mkdir -p /data/330{7..9}[root@db01 ~]# tree /data//data/├── 3307├── 3308└── 3309[root@db01 ~]# ll /data/total 0drwxr-xr-x. 2 root root 6 May  9 09:59 3307drwxr-xr-x. 2 root root 6 May  9 09:59 3308drwxr-xr-x. 2 root root 6 May  9 09:59 33092.编辑多个配置文件[root@db01 ~]# vim /data/3307/my.cnf[mysqld]basedir=/usr/local/mysqldatadir=/data/3307/dataport=3307socket=/data/3307/mysql.sockserver-id=7log_error=/data/3307/data/mysql.errpid=/data/3307/data/mysql.pid========================================[root@db01 ~]# vim /data/3308/my.cnfi=========================================[root@db01 ~]# vim /data/3309/my.cnf[mysqld]basedir=/usr/local/mysqldatadir=/data/3309/dataport=3309socket=/data/3309/mysql.sockserver-id=9log_error=/data/3309/data/mysql.errpid=/data/3309/data/mysql.pid2.进入初始化目录[root@db01 ~]# cd /usr/local/mysql/scripts/3.初始化多套数据目录[root@db01 scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data[root@db01 scripts]# ./mysql_install_db --defaults-file=/data/3308/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data[root@db01 scripts]# ./mysql_install_db --defaults-file=/data/3309/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3309/data[root@db01 scripts]# ll /data/330*/data/3307:total 4drwx------. 5 mysql mysql 127 May  9 10:11 data-rw-r--r--. 1 root  root  175 May  9 10:05 my.cnf/data/3308:total 4drwx------. 5 mysql mysql 127 May  9 10:12 data-rw-r--r--. 1 root  root  175 May  9 10:06 my.cnf/data/3309:total 4drwx------. 5 mysql mysql 127 May  9 10:12 data-rw-r--r--. 1 root  root  175 May  9 10:07 my.cnf4.授权[root@db01 scripts]# chown -R mysql.mysql /data/330*5.启动mysql[root@db01 scripts]# mysqld_safe --defaults-file=/data/3307/my.cnf &[root@db01 scripts]# mysqld_safe --defaults-file=/data/3308/my.cnf &[root@db01 scripts]# mysqld_safe --defaults-file=/data/3309/my.cnf &6.检查端口[root@db01 scripts]# netstat -lntup|grep 330tcp6       0      0 :::3306                 :::*                    LISTEN      41108/mysqld        tcp6       0      0 :::3307                 :::*                    LISTEN      42206/mysqld        tcp6       0      0 :::3308                 :::*                    LISTEN      42378/mysqld        tcp6       0      0 :::3309                 :::*                    LISTEN      42550/mysqld  7.检查进程[root@db01 scripts]# ps -ef|grep mysqldroot      40999      1  0 08:54 pts/0    00:00:00 /bin/sh /usr/local/mysql-5.6.40/bin/mysqld_safe --datadir=/usr/local/mysql-5.6.40/data --pid-file=/usr/local/mysql-5.6.40/data/db01.pidmysql     41108  40999  0 08:54 pts/0    00:00:03 /usr/local/mysql-5.6.40/bin/mysqld --basedir=/usr/local/mysql-5.6.40 --datadir=/usr/local/mysql-5.6.40/data --plugin-dir=/usr/local/mysql-5.6.40/lib/plugin --user=mysql --log-error=db01.err --pid-file=/usr/local/mysql-5.6.40/data/db01.pidroot      42056   7747  0 10:18 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnfmysql     42206  42056  0 10:18 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf --basedir=/usr/local/mysql --datadir=/data/3307/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3307/data/mysql.err --pid-file=db01.pid --socket=/data/3307/mysql.sock --port=3307root      42228   7747  0 10:18 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnfmysql     42378  42228  4 10:18 pts/0    00:00:03 /usr/local/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf --basedir=/usr/local/mysql --datadir=/data/3308/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3308/data/mysql.err --pid-file=db01.pid --socket=/data/3308/mysql.sock --port=3308root      42379   7747  0 10:18 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3309/my.cnfmysql     42550  42379  2 10:18 pts/0    00:00:02 /usr/local/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf --basedir=/usr/local/mysql --datadir=/data/3309/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3309/data/mysql.err --pid-file=db01.pid --socket=/data/3309/mysql.sock --port=3309root      42577   7747  0 10:20 pts/0    00:00:00 grep --color=auto mysqld8.多实例设置密码[root@db01 ~]# mysqladmin -uroot -p -S /data/3307/mysql.sock  password 3307[root@db01 ~]# mysqladmin -uroot -p -S /data/3308/mysql.sock  password 3308[root@db01 ~]# mysqladmin -uroot -p -S /data/3309/mysql.sock  password 33099.多实例连接[root@db01 ~]# mysql -uroot -p3307 -S /data/3307/mysql.sock[root@db01 ~]# mysql -uroot -p3308 -S /data/3308/mysql.sock[root@db01 ~]# mysql -uroot -p3309 -S /data/3309/mysql.sock10.连接技巧[root@db01 ~]#mysql -uroot -p3307 -S /data/3307/mysql.sock[root@db01 ~]# vim /usr/local/mysql/bin/mysql3308mysql -uroot -p3308 -S /data/3308/mysql.sock[root@db01 ~]# vim /usr/local/mysql/bin/mysql3309mysql -uroot -p3309 -S /data/3309/mysql.sock[root@db01 ~]# chmod +x /usr/local/mysql/bin/mysql330*11.停止mysql多实例[root@db01 ~]# mysqladmin -uroot -p3307 -S /data/3307/mysql.sock shutdown[root@db01 ~]# mysqladmin -uroot -p3308 -S /data/3308/mysql.sock shutdown[root@db01 ~]# mysqladmin -uroot -p3309 -S /data/3309/mysql.sock shutdown/

  

转载于:https://www.cnblogs.com/sudaguo/p/10840631.html

你可能感兴趣的文章
Maven私服配置Setting和Pom文件
查看>>
Xcode10 library not found for -lstdc++ 找不到问题
查看>>
Mysql 8.0.13如何重置密码
查看>>
发布功能完成
查看>>
excel 合并单元格
查看>>
How to Create Modifiers Using the API QP_MODIFIERS_PUB.PROCESS_MODIFIERS
查看>>
待飞笔记(第一天 )
查看>>
解惑好文:移动端H5页面高清多屏适配方案
查看>>
traefik添加多证书
查看>>
忽略UserInterfaceState.xcuserstate
查看>>
ReactNative--Flexbox布局
查看>>
java实现读取文件大全
查看>>
[Cordova] 无法显示Alert视窗
查看>>
借助过度区选择阈值
查看>>
评论列表显示及排序,个人中心显示
查看>>
JavaWeb学习笔记总结 目录篇
查看>>
C#根据html生成PDF
查看>>
Neutron SDN 手动实现手册
查看>>
linux下core文件调试方法
查看>>
20个创意404错误页面设计的启示
查看>>