Mysql体系结构和Mysql常用操作命令介绍

  • Mysql安装

CentOS7环境下安装
获取mysql:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
查看可安装的mysql版本:
yum repolist enabled|grep mysql
安装命令:
yum install mysql-community-server
systemctl enable mysqld
systemctl start mysqld
mysqladmin -u root password passwd
mysql -uroot -p
root账户登录Mysql

  • Mysql体系结构
  1. MySQL登录方式
    TCP/IP方式(最常用):

    mysql -uuser -ppasswd -h IP -P 3306

    Socket方式(本地):

    mysql -uuser -ppasswd -S /tmp/mysql.sock -P 3306
  2. mysqld程序运行原理
    2.1 mysqld程序结构
    Mysql体系结构和Mysql常用操作命令介绍
    2.2 sql语句执行过程
    如上图在连接层中:
    1)、提供连接,TCP/IP建立连接或本地Socket连接;
    2)、身份验证;
    3)、接受用户SQL;
    SQL层:
    Mysql体系结构和Mysql常用操作命令介绍
    1)、接受上层传递的SQL
    2)、语法验证,验证SQL语法是否满足
    3)、语义检查,判断SQL语句类型,DDL、DML、DQL等
    4)、权限检查
    5)、解析器,对语句执行前的预处理,生成解析树(就是执行计划)
    6)、优化器,根据解析器的多种执行计划,判断选择最优计划执行。会消耗系统资源
    7)、执行器,真正执行优化后的执行计划,就是执行SQL,返回产生结果,在磁盘上有改变
    8)、提供查询缓存,默认情况不开启,实际场景会使用redis、memcache等缓存替代查询缓存功能
    9)、日志记录,需要开启binlog功能
    存储层:
    1)、根据SQL层的执行结果,磁盘读取数据
    2)、将16进制的磁盘数据,由SQL结构化成表
    3)、连接层专用线程返回给用户

3.数据物理存储结构
Mysql体系结构和Mysql常用操作命令介绍
1)、库物理存储结构
OS系统的文件系统目录存储。
2)、表的物理存储结构,MySQL存储引擎
InnoDB是mysql的一种存储引擎,除了innodb还有其它的,例如isam,myisam等。
InnoDB是其中的一种存储引擎,它的特性是支持事务,并且采用多版本并发控制的方式来提高并发度。特色在于支持并发与表间引用。主要是事务表,当一个事务全部完成,才会执行update。mysql5.5后的版本,默认都支持InnoDB。

InnoDB引擎的表:

-rw-rw---- 1 mysql mysql       8895 4月  12 2018 default.frm
-rw-rw---- 1 mysql mysql     114688 4月  12 2018 default.ibd

default.frm:存储列相关信息
default.ibd:数据行+索引

Myisam引擎的表

-rw-r----- 1 mysql mysql   10816 Apr 18 11:37 user.frm
-rw-r----- 1 mysql mysql     396 Apr 18 12:20  user.MYD
-rw-r----- 1 mysql mysql    4096 Apr 18 14:48 user.MYI

user.frm:存储列相关信息
user.MYD:数据行
user.MYI:索引
3)、表的段、区、页
表:一个表就是一个段,可包含多个区;
区:64个连续的页,默认1M
页:最小的存储单元,默认16K

  • Mysql基础管理
  1. 用户管理
    查询数据库中所有用户:

    SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
    select host,user,password from mysql.user \G

    查询数据库中某个用户权限:

    show grants for 'user'@'%';
  2. 权限
    grant赋予权限,常用权限有All、Select、update、insert等。

    grant all on ku.* to 'user'@localhost identified by 'passwd';
    grant all on ku.* to 'user1'@'%' identified by 'passwd';
    grant select,update,insert on ku.* to 'user2'@'%' identified by 'passwd';

    其中“%”表示远程权限。
    revoke表示撤销权限,用法如

    revoke all on ku.* from 'user'@'%';
    revoke delete,insert on ku.* from 'user1'@'%';
  3. 命令常用参数
    mysql 常用参数:
    -u 用户
    -p 密码
    -h IP
    -P 端口
    -S socket文件
    -e 免交互执行命令
    < 导入SQL脚本

  4. 本地管理员root密码忘记处理

    # mysqld_safe --skip-grant-tables --skip-networking &
    mysql> flush privileges;
    mysql>  alter user root@'localhost' identified by '123456';
    # pkill mysqld
    # systemctl start  mysqld
  5. 库备份与恢复
    mysqldump命令进行数据库的备份
    5.1 库操作:
    1).导出一个库结构:(-d:--no-data)
    mysqldump  -d dbname -u root -p > dbname.sql

    导出多个库结构:

    mysqldump  -d -B  db1 db2  -u root -p > dbname.sql

    2).导出一个库数据:

    mysqldump  -t  dbname -u root -p > dbname.sql

    导出多个库数据:

    mysqldump  -t -B  db1 db2  -u root -p > dbname.sql

    3).导出一个库结构和数据:

    mysqldump  dbname -u root -p > dbname.sql

    导出多个库结构和数据:

    mysqldump  -B  db1 db2  -u root -p > dbname.sql

5.2 表操作:
1).导出一张表数据:

mysqldump  -t dbname  table1 -u root -p > dbname.sql

导出多张表数据:

mysqldump  -d  -B  dbname --tables  table1 table2 -u root -p > dbname.sql

2).导出一张表数据和结构:

mysqldump  dbname  table1  -u root -p > dbname.sql

导出多张表数据和结构:

mysqldump -B dbname --tables  table1 table2  -u root -p > dbname.sql

5.3 存储过程和函数操作:
1). 只导出存储过程和函数

mysqldump -uroot -p -ntd -R --set-gtid-purged=OFF  dbname   >  dbname.sql

--set-gtid-purged=OFF 这个选项控制是否要用gtids来恢复,默认开启的
-ntd 不导出结构和数据
-R 导出函数及存储过程。
-n:--no-create-db
-d:--no-data
-n:--no-create-info
-R:functions and procedures
2). 导出所有,导出数据、数据结构、存储过程、函数

mysqldump -uroot   -R  dbname  -p  >  dbname.sql

存储过程:

show procedure status;
show create procedure pro_create_exo_order;

5.4 导入恢复:

mysql -u root -ppasswd ku < /root/ku.sql

mysqldump -uroot -p -B -F -R -x --master-data=2 ops|gzip >/opt/backup/ops_$(date +%F).sql.gz

参数说明:
-B:--databases,导出数据库列表,单库可省略
-F:刷新日志
-R:--routines导出存储过程及自定义函数
-x:锁表
-t:--no-create-info只导出数据,而不添加create table语句
-n:--no-create-db只导出数据,而不添加create database语句
-d:--no-data不导出任何数据,只导出库表结构
--tables 表列表(单个表时可省略)
①同时导出结构以及数据时可同时省略-d和-t
②同时不导出结构和数据可使用-ntd
③只导出存储过程和函数可使用-R -ntd
④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
⑤只导出结构&函数&事件&触发器使用 -R -E -d
--master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点pos信息

猜你喜欢

转载自blog.51cto.com/10874766/2428606
今日推荐