mysql 程序实例_mysql的程序结构,实例, 及mysql的多实例

一.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 0

drwxr-xr-x. 2 root root 6 May 9 09:59 3307

drwxr-xr-x. 2 root root 6 May 9 09:59 3308

drwxr-xr-x. 2 root root 6 May 9 09:59 3309

2.编辑多个配置文件

[root@db01 ~]# vim /data/3307/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/data/3307/data

port=3307

socket=/data/3307/mysql.sock

server-id=7

log_error=/data/3307/data/mysql.err

pid=/data/3307/data/mysql.pid

========================================

[root@db01 ~]# vim /data/3308/my.cnf

i

=========================================

[root@db01 ~]# vim /data/3309/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/data/3309/data

port=3309

socket=/data/3309/mysql.sock

server-id=9

log_error=/data/3309/data/mysql.err

pid=/data/3309/data/mysql.pid

2.进入初始化目录

[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 4

drwx------. 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 4

drwx------. 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 4

drwx------. 5 mysql mysql 127 May 9 10:12 data

-rw-r--r--. 1 root root 175 May 9 10:07 my.cnf

4.授权

[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 330

tcp6 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 mysqld

root 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.pid

mysql 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.pid

root 42056 7747 0 10:18 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf

mysql 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=3307

root 42228 7747 0 10:18 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnf

mysql 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=3308

root 42379 7747 0 10:18 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3309/my.cnf

mysql 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=3309

root 42577 7747 0 10:20 pts/0 00:00:00 grep --color=auto mysqld

8.多实例设置密码

[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 3309

9.多实例连接

[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.sock

10.连接技巧

[root@db01 ~]#

mysql -uroot -p3307 -S /data/3307/mysql.sock

[root@db01 ~]# vim /usr/local/mysql/bin/mysql3308

mysql -uroot -p3308 -S /data/3308/mysql.sock

[root@db01 ~]# vim /usr/local/mysql/bin/mysql3309

mysql -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

/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值