LAMP快速部署及LAMP组合深入讲解-2

 

lamp

SQL

  • 数据管理模型:层次模型、网状模型、关系模型
    数据分类:结构化数据、半结构化数据、非结构化数据

    • 关系模型

      • 数据库:一个方案、一个项目
      • 二维关系:

        • 表:row, column
          索引:index
          视图:view
      • SQL接口:Structured Query Language;类似于OS的shell接口;也提供编程功能;

        • ANSI: SQL标准,SQL-86, SQL-89, SQL-92, SQL-99, SQL-03, …
          PL-SQL,T-SQL,…
        • DDL:Data Defined Language
          CREATE, ALTER, DROP、SHOW
        • DML: Data Manapulating Language
          INSERT, DELETE, UPDATE, SELECT
        • 编程接口:选择、循环;
        • SQL代码:
          • 存储过程:procedure
            存储函数:function
            触发器:trigger
            事件调度器:event scheduler
        • 用户和权限:
          用户:用户名和密码;
          权限:管理类、程序类、数据库、表、字段
      • DBMS:DataBase Management System
        RDBMS:Relational DataBase Management System
  • 事务(Transaction):组织多个操作为一个整体,要么全部都成功执行,要么失败回滚;
    “回滚”, rollback

    • 一个存储系统是否支持事务,测试标准:
      ACID:

      • A:原子性;
        C:一致性;
        I:隔离性;
        D:持久性;
    • SQL接口:分析器和优化器
      存储引擎
  • 补充材料:RDMBS设计范式基础概念

  • 数据库:数据集合

    • 表:为了满足范式设计要求,将一个数据集分拆为多个;

    • 约束:constraint,向数据表插入的数据要遵守的限制规则;

      • 主键:一个或多个字段的组合,填入主键中的数据,必须不同于已存在的数据;而且不能为空;一个表只能有一个Primary KEY;
      • 外键:一个表中某字段中能插入的数据,取决于另外一张表的主键中的数据;
      • 惟一键:一个或多个字段的组合,填入惟一键中的数据,必须不同于已存在的数据;可以为空;一个表可存在多个Unique Key;
      • 检查性约束:取决于表达式的要求;
    • 索引:将表中的某一个或某些字段抽取出来,单独将其组织一个独特的数据结构中;

      • 常用的索引类型:
        • B+ Tree:Balance Tree
          hash

      注意:有助于读请求,但不利于写请求;

    • 关系运算:

      • 选择:挑选出符合条件的行;
        投影:挑选出符合需要的列;
        连接:将多张表关联起来;
    • 数据抽象:
      • 物理层:决定数据的存储格式,即如何将数据组织成为物理文件;
        逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系;
        视图层:描述DB中的部分数据;
    • 关系模型的分类:
      • 关系模型
        实体-关系模型
        基于对象的关系模型
        半结构化关系模型

MariaDB

  • 可用版本:
    • MySQL:
      • MariaDB
        Percona-Server
        AliSQL
        TiDB
  • MariaDB的特性:

    • 插件式存储引擎:存储管理器有多种实现版本,彼此间的功能和特性可能略有区别;用户可根据需要灵活选择;

    • 存储引擎也称为“表类型”;

      1. 更多的存储引擎;
        MyISAM:不支持事务,表级锁,崩溃后不保证安全恢复;
        MyISAM –> Aria
        InnoDB –> XtraDB :支持事务,行级锁,外键,热备;
      2. 诸多扩展和新特性;
      3. 提供了较多的测试组件;
      4. truly open source;
  • 安装和使用MariaDB:

    1. rpm包;
      (a) 由OS的发行商提供;
      (b) 程序官方提供;
    2. 源码包;
    3. 通用二进制格式的程序包;
  • MariaDB程序的组成:C/S

    • MariaDB:主要有两类程序文件

      • Client: mysql, mysqldump, mysqladmin
        Server:mysqld, mysqld_safe, mysqld_multi
    • C:Client –> mysql protocol –> Server
      mysql:CLI交互式客户端程序;
      mysqldump:备份工具;
      mysqladmin:管理工具;
      mysqlbinlog:

    • S:Server
      mysqld
      mysqld_safe:建议运行服务端程序;
      mysqld_multi:多实例;

      • 三类套接字地址:
        • IPv4|IPv6, 3306/tcp
        • Unix Sock:/var/lib/mysql/mysql.sock, /tmp/mysql.sock
    • 配置文件:ini风格,用一个文件为多个程序提供配置;

      • [mysql]:配置客户端
        [mysqld]:配置服务端
        [mysqld_safe]:
        [server]
        [client]
        [mysqldump]

      • mysql的各类程序启动都读取不止一个配置文件,按顺序读取,且最后读取的为最终生效;

命令行交互式客户端程序:mysql


  • mysql [OPTIONS] [database]

    • 常用选项:

      • -u, –user=username:用户名,默认为root;
        -h, –host=hostname:远程主机(即mysql服务器)地址,默认为localhost; 客户端连接服务端,服务器会反解客户的IP为主机名,关闭此功能(skip_name_resolve=ON);
        -p, –password[=PASSWORD]:USERNAME所表示的用户的密码; 默认为空;

        -P, –port=#:mysql服务器监听的端口;默认为3306/tcp;
        -S, –socket=/PATH/TO/mysql.sock:套按字文件路径;
        -D, –database=DB_name:指定连接到服务器端之后,其指明的数据库为默认数据库;
        -e, –execute=’SQL STATEMENT’:连接至服务器并让其执行此命令后直接返回;

    • 命令:

      • 客户端命令:本地执行
      • 服务端命令:通过mysql连接发往服务器执行并取回结果(SQL语句);
        DDL, DML, DCL
        注意:每个语句必须有语句结束符,默认为分号(;)
    • 数据类型:

      • 表:行和列
        创建表:定义表中的字段;

      • 定义字段时,关键的一步即为确定其数据类型;
        用于确定:数据存储格式、能参与运算种类、可表示的有效的数据范围;

      • 字符型:字符集
        码表:在字符和二进制数字之间建立映射关系;

      • 种类:
        • 字符型:
          定长字符型:

          变长字符型:

          对象存储:

          内置类型:

        • 数值型:
          精确数值型:

          近似数值型:

        • 日期时间型:

      • 字段数据修饰符:

服务器端命令


  • DDL:数据定义语言,主要用于管理数据库组件,例如数据库、表、索引、视图、用户、存储过程
    CREATE、ALTER、DROP
  • DML:数据操纵语言,主要用管理表中的数据,实现数据的增、删、改、查;
    INSERT, DELETE, UPDATE, SELECT

  • 获取命令帮助:

  • 数据库管理(DDL):

    • 创建:

    • 修改:

    • 删除:

    • 查看:

  • 表管理:

    • 创建:

      • 查看数据库支持的所有存储引擎类型:
      • 查看某表的状态信息:
    • 修改:

      • 查看表上的索引的信息:
    • 删除:
    • 表的引用方式:
    • 第二种创建方式:

    • 第三种创建方式:

  • 索引管理:
    索引是特殊的数据结构;

    • 索引:要有索引名称;

    • 创建:

    • 删除:

  • DML:INSERT, DELETE, UPDATE, SELECT

    • INSERT INTO:

      注意:字符型:引号;数值型:不能用引号;

    • SELECT:

      1. SELECT * FROM tbl_name[, tbl_name_2];
        返回指定表的所有数据;慎用;
      2. SELECT col1, col2, … FROM tbl_name;
        显示时,字段可以显示为别名;
        col_name AS col_alias
      3. SELECT col1, … FROM tbl_name WHERE clause;

      4. SELECT col1, … FROM tbl_name [WHERE clause] ORDER BY col_name, col_name2, … [ASC|DESC];
        ASC: 升序;
        DESC: 降序;

      5. 分组:
        GROUP BY,为了聚合;

        HAVING:对聚合的结果做条件过滤;

    • DELETE:删除行;

    • UPDATE:

  • 用户账号及权限管理:

    • 用户账号:’username’@’host’

      • host:此用户访问当前mysql服务器时,允许其通过哪些主机远程创建连接;
        表示方式:IP,网络地址、主机名、通配符(%和_);

      • 禁止检查主机名:my.cnf

    • 创建用户账号:

    • 删除用户账号:

    • 授权:
      权限级别:管理权限、数据库、表、字段、存储例程;

      • 查看指定用户所获得的授权:

      • 回收权限:

      • 注意:MariaDB服务进程启动时,会读取mysql库的所有授权表至内存中;
        1. GRANT或REVOKE命令等执行的权限操作会保存于表中,MariaDB此时一般会自动重读授权表,权限修改会立即生效;
        2. 其它方式实现的权限修改,要想生效,必须手动运行FLUSH PRIVILEGES命令方可;
  • 加固mysql服务器,在安装完成后,运行mysql_secure_installation命令;

  • 图形管理组件:
    phpMyAdmin;运行于lamp;
    Navicat
    Mysql-Front
    ToadForMySQL
    SQLyog

httpd+php结合的方式:php-fpm

  • module: php
    fastcgi : php-fpm

  • php-fpm:

    • CentOS 6:
      PHP-5.3.2-:默认不支持fpm机制;需要自行打补丁并编译安装;
      httpd-2.2:默认不支持fcgi协议,需要自行编译此模块;

      • 解决方案:编译安装httpd-2.4, php-5.3.3+;
    • CentOS 7:
      httpd-2.4:rpm包默认编译支持了fcgi模块;
      php-fpm包:专用于将php运行于fpm模式;

      配置文件:

      • 服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
      • php环境配置文件:/etc/php.ini, /etc/php.d/*.ini

      • 连接池:
        pm = static|dynamic

        • static:固定数量的子进程;pm.max_children;
        • dynamic:子进程数据以动态模式管理;
      • 创建session目录,并确保运行php-fpm进程的用户对此目录有读写权限;
      • 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件,内容类似:
      • 虚拟主机配置

        • 假设fpm的status页面输出URL为/pmstatus,测试接口的输出位置为/ping
          ProxyPassMatch ^/(ping|pmstatus)$ fcgi://127.0.0.1:9000/$1

 

原创文章,作者:s,如若转载,请注明出处:/77508

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达注册  万达娱乐  万达娱乐招商QQ  万达娱乐主管  测试  guoqibee.com  万达娱乐注册  万达娱乐主管QQ  万达娱乐主管QQ