1 实训二前期LNMP简易架构 1.1 php server安装 |
1.2 安装初始化数据库 |
2 Mysql数据库 |
2.1 Mysql5.7安装 |
2.1.1 rpm安装 |
2.1.2 yum安装 |
2.1.3 源码安装 |
2.1.4 编译好的非rpm包安装 |
2.1.5 my.cnf常见选项 |
2.2 Mysql基础 |
2.2.1 MySql数据库操作 |
2.2.2 MySql数据类型 |
2.2.2.1 整型 |
2.2.2.2 浮点数和定数 |
2.2.2.3 字符串类型 |
2.2.2.4 日期和时间类型 |
2.2.2.5 字段修饰和约束 |
2.2.2.6 业务建表练习 |
2.2.3 MySql表操作 |
2.2.4 MySql体系结构 |
2.2.5 MySql存储引擎 |
2.3 MySql操作 |
2.3.1 MySql数据操作 |
2.3.2 MySql单表查询 |
2.3.3 MySql多表查询 |
2.3.4 MySql存储过程与函数 |
2.4 MySql操作-2 |
2.4.1 MySql安全机制 |
2.4.2 MySql日志管理 |
2.4.3 MySql复制概述 |
2.4.4 主从同步 |
2.5 最基本sql语句及主从架构 |
2.6 MyCat中间件 |
2.6.1 部署Mycat |
2.6.2 配置读写分离 |
2.6.2.1 安全的读写分离 |
2.6.3 XML语法格式 |
2.6.4 mycat 分表分库 |
2.7 Mysql MHA |
2.7.1 MHA-部署 |
2.7.2 MHA-故障切换VIP透明 |
2.7.2.1 VIP切换脚本内容 |
2.7.2.2 VIP-手动在线切换脚本 |
2.7.3 MHA+Mycat高可用Mysql读写分离 |
2.7.4 MHA+VIP+Mycat |
2.7.5 MHA-故障切换邮件报警 |
2.7.6 自动配置Slave主机 |
3 实验 |
3.1 mysql授权问题 |
3.2 1.单节点数据库 |
3.3 2.主从同步 |
3.4 3.实验(高可用) |
3.4.1 高可用keepalived |
3.4.1.1 keepalived install |
3.5 4.实验(高可用+大并发) |
3.5.1 HAproxy代理 |
3.6 4.实验(mycat-读写分离) |
3.6.1 mycat安装部署 |
3.6.2 读写分离高可用 |
3.6.3 mycat管理端口命令 |
3.7 5.双主双从-读写分离-高可用 |
3.8 6.mycat分库操作 |
3.9 7.mycat分表 |
3.10 8.mycat分库分表之下实现读写分离 |
4 Shell脚本编程 |
5 Zabbix监控 |
5.1 zabbix设置邮件报警--自定义报警媒介 |
5.2 zabbix解决中文界面乱码问题 |
5.3 ziabbix自带的template Linux OS |
5.4 zabbix-agent自定义收集数据 |
5.5 zabbix监控Nginx性能 |
5.6 综合配置 |
5.7 实验:监控nginx端口实现告警 |
6 ELK日志分析 |
6.1 PS |
6.2 es-head插件安装 |
6.3 安装filebeat nginx日志模板 |
NULL not null 空与非空 约束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql中的null不是数据,也不是类型,只是标志属性。 用户说明 某个字段是否是null(null表示什么都不存)NULL采用 关键字NULL表示!(不是字符串) 是:NULL,而不是:' NULL' 注意引号
null 表示可以为空 not null 表示这个字段不能是空
表中,所有记录里面,尽量不要出现 “空值” ,大量空值会影响表的 读取和索引效率。
| name password |手机 | 身份证
完善个人资料。 ====== 客户没有填写的字段, default x ==⇒ 字段。
unsigned 无符号位 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
无符号一般作用于数值类型
添加无符号 1)在创建表的时候添加 CREATE TABLE t_user(user_id INT(10) UNSIGNED);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) UNSIGNED;
删除无符号 ALTER TABLE t_user MODIFY user_id INT(10);
default ,默认属性,默认值约束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
采用default关键字,在该字段没有赋值的时候设置默认值; 如果一个字段没有默认值就为 null 默认值存在一些特殊的关键字 default,也可以在值 中使用 函数, 例如 :
auto_increment 自动增长 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用于主键并且是一个字段的 主键 ,才能使用 auto_increment 可以使字段从数字1开始的数逐一递增的,由系统自行管理,不需要人工干涉,可以保证 唯一性 ;
默认自动增长从1 开始,还可以给 int 、unsigned ; 如果后面对自动增长再赋值的话就按照赋值之后的继续自动增长;
CREATE TABLE XXX (ID INT(5) PRIMARY KEY AUTO_INCREMENT) AUTO_INCREMENT=100;
ALTER TABLE XXX AUTO_INCREMENT=100; 修改自增值,但是要大于目前表中的 的自增值。
注:There can be only one auto column and it must be defined as a key. 一张表只能有一个自增长列,并且该列必须定义了约束 (可以是主键约束,也可以是唯一约束,也可以是外键约束,但是不可以是非空和检查约束) 不过自增长一般配合主键使用,并且只能在数字类型中使用
primary key 主键约束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(一般都会配合 auto_increment 出现)
主键可以保证记录的唯一,主键 域 自动为 NOT NULL(非空);
主键常常与外键构成参照完整性约束,防止出现数据不一致。 数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
但主键和唯一键又不是同一个概念; • 主键一定是唯一性索引,唯一性索引并不一定就是主键。 • 一个表中可以有多个唯一性索引,但只能有一个主键。 • 主键列不允许空值,而唯一性索引列允许空值。
典型的就是在创建表的时候主动添加一个 无关的 无符号整型的数,充当主键; 比如说学生名字,性别,生日都可以冲突,我们可以指派一个无关序号作为学生的唯一标识,
主键 自动增长的特性,一般使用纯数字作为主键,不要用字符串,会导致检索速度减慢
唯一性,有序性。
主键 ======================================================================= ID 姓名 性别 年龄 监护人 住址 籍贯 身份证号码 考分 入学时间 处分记录 1 2 小明 4527301548945 450 3 4 5
### 建立主键约束1
1、字段后补充说明 create table stu_inform(id int,name varchar(20), grade double, primary key(id) ); 2、紧跟着字段定义后指定 create table stu_inform(id int primary key,name varchar(20), grade double );
create table stu_inform(id int,name varchar(20),grade double, primary key(id,name) ); ## 联合主键
insert into stu_inform values(1,'张三',100.00) , (1,'李四',100.00); 可以插入 insert into stu_inform values(1,'张三',100.00),(1,'张三',100.00); //Error
主键A+主键B = 结果C 结果C 不同,就能接收。 观察 mysql.user 表中, host user 做成了联合主键
| =========== | | root server1 zhang3 server1 zhang3 server2 这是因为这是一个联合主键,它的作用是id不能重复 且 姓名也不能重复,注意是且。
### 删除主键
因为主键也属于表结构的一部分,所以对主键操作就是操作表结构;
ALTER TABLE t_user DROP PRIMARY KEY; ## DELETE 仅用于删除数据记录
注:主键约束相当于 (唯一约束+非空约束)
( 多个主键 VS 联合主键 ) 一张表中最多有一个主键约束(单独字段,联合字段),如果设置多个主键,就会出现如下提示: Multiple primary key defined !!! 删除主键约束前,如果有自增长属性 ,则 需要先删除自增长属性 , 如果不删除自增长就无法删除主键约束
删除auto-increment 语法如下:
## id 字段原先已经具备 auto-increment 属性。 alter table aaa modify id int(11);
#这里用的modify,只改变数据类型,也可以用change,改变列名的同时输入新的数据类型。 然后再实行 删除主键动作即可
unique key 唯一键 约束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
添加唯一约束,则该列的值不能出现重复值, 而且唯一键的列,允许有 空值 , 主键不允许出现空值。 允许出现多个唯一键。
ID 用户名 邮箱 主键 唯一键 唯一键
建表时直接添加 CREATE TABLE t_user(user_id INT(10), UNIQUE KEY(user_id));
通过修改方式添加
删除唯一约束 ALTER TABLE t_user DROP unique key user_id; 删除列的索引,相当于删除了唯一键属性。
FOREIGN KEY 外键约束 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
主表 对应的字段(被参照字段)只能是 主键 或者 唯一约束修饰的字段
首先创建两张表:class , students
主表:------------------------------------------------------------------
CREATE TABLE class( cla_id INT AUTO_INCREMENT PRIMARY KEY, cla_name VARCHAR(30) NOT NULL UNIQUE );
课程表:
cla_id cla_name -------------------------- 1 主机 2 运维 3 开发 4 oracle 5 H5 6 java
从表:------------------------------------------------------------------
CREATE TABLE students( stu_id INT(10) AUTO_INCREMENT PRIMARY KEY, stu_name CHAR(10) NOT NULL, stu_score FLOAT(5,2) DEFAULT 0.0, classid TINYINT, CONSTRAINT fk_classid FOREIGN KEY(classid) REFERENCES class(cla_id) #添加外键约束 );
stu_id stu_name classid 1 zhang3 1 2 li4 1 3 wang5 1 4 zhao6 5 5 小王 6
fk_classid 外键名称 REFERENCES 参考对象,形成 主从 级联关系。
修改的方式添加外键:
ALTER TABLE students ADD CONSTRAINT fk_classid FOREIGN KEY(classid) REFERENCES class(cla_id);
#外键中的级联关系有以下几种情况: #ON DELETE CASCADE 删除主表中的数据时,从表中的数据随之删除: 同步删除 #ON UPDATE CASCADE 更新主表中的数据时,从表中的数据随之更新: 同步更新 #ON DELETE SET NULL 删除主表中的数据时,从表中的数据置为空: 删除置空 #默认 删除主表中的数据前需先删除从表中的数据,否则主表数据不会被删除 : 删除前检测从表
CREATE TABLE students( stu_id INT(10) AUTO_INCREMENT PRIMARY KEY, stu_name VARCHAR(30) NOT NULL, stu_score FLOAT(5,2) DEFAULT 0.0, classid INT(10), CONSTRAINT fk_classid FOREIGN KEY(classid) REFERENCES class(cla_id) ON DELETE CASCADE );
删除外键约束 ALTER TABLE students DROP FOREIGN KEY fk_classid ;
1、外键 两个 参照 字段的 字段类型,要求必须是一致的 2 、 被参照字段,必须是一个 主键,或者是 唯一键。 3、 注意 空值的影响。
注:插入数据时,先插入主表中的数据,再插入从表中的数据。 删除数据时,先删除从表中的数据,再删除主表中的数据。
Comment 字段注释描述 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
create table type_com( id int comment "这里是注释", sn varchar(255) );
ZEROFILL (零填充) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
零填充会将 有效位以外的位用零来显示,比如某字段数据类型为INT(5),而插入的值为2,那么零填充会显示00002 但是,这个效果在Navicat for MySQL中显示不出来,只有在DOS窗口下才能显示
添加零填充 1)在创建表的时候添加 CREATE TABLE t_user(user_id INT(10) ZEROFILL);
2)通过ALTER语句 ALTER TABLE t_user MODIFY user_id INT(10) ZEROFILL; ALTER TABLE t_user CHANGE user_id user_id INT(10) ZEROFILL;
删除零填充 ALTER TABLE t_user MODIFY user_id INT(10); ALTER TABLE t_user CHANGE user_id user_id INT(10);
0001 0002 0003 0025 9999
入场券,抽奖券: No.000000045
null not null unsigned unique key primary key foreign key auto_increment comment zerofill default
|