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日志模板 |
CREATE TABLE `students` (`SID` int(10) unsigned NOT NULL AUTO_INCREMENT,`姓名` char(10) NOT NULL,`性别` enum('M','F') NOT NULL DEFAULT 'M',`年龄` tinyint(3) unsigned NOT NULL,`身份证号码` char(20) NOT NULL,`手机号码` char(15) NOT NULL,`期数` varchar(15) NOT NULL,`所选课程` char(4) NOT NULL DEFAULT '1',`入学时间` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,`就业薪资` decimal(8,2) unsigned NOT NULL DEFAULT '5000.00',PRIMARY KEY (`SID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql -e
INSERT INTO `students` (`姓名`, `年龄`, `身份证号码`, `手机号码`, `期数`, `所选课程`, `入学时间`, `就业薪资`) VALUES ('张飞', '30', '452701198855668899', '15055009900', '12期', '2', '2018-05-18 10:42:37', '12000')
DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程。。。例如 CREATE DROP ALTER SHOW DESC DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT DCL语句 数据库控制语言: 例如控制用户的访问权限 GRANT、REVOKE
MySQL表操作 DDL
========================================================
表 是数据库存储数据的基本单位,由若干个字段组成,主要用来存储数据记录。 表的操作包括创建表、查看表、修改表和删除表。 这些操作都是数据库管理中最基本,也是最重要的操作。本节内容包括:
创建表 create table 查看表结构 desc table , show create table(显示创建表的时候的SQL语句) 表完整性约束 修改表 alter table modify change drop add 复制表 create table ... 删除表 drop table
一、创建表(表的基本操作) -------------------------------------------------------------
表school.student1 字段 字段 字段 id name sex age 1 tom male 23 记录 2 jack male 21 记录 3 alice female 19 记录
语法:
create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ) [存储引擎 字符集];
==在同一张表中,字段名是不能相同 ==宽度和约束条件可选 ==字段名和类型是必须的
mysql> CREATE DATABASE school; //创建数据库school mysql> use school; mysql> create table student1(id int,name varchar(50), sex enum('m','f'),age int);
Query OK, 0 rows affected (0.03 sec)
mysql> show tables; //查看表(当前所在库) +------------------+ | Tables_in_school | +------------------+ | student1 | +------------------+ 1 row in set (0.00 sec)
mysql> select * from student1; //查询表中所有字段的值 Empty set (0.00 sec)
mysql> select name,age from student1; //查询表中指定字段的值 Empty set (0.00 sec)
二 、向表中插入内容 ------------------------------------------------------------
语法: insert into 表名(字段1,字段2...) values (值1,值2 ...);
先查看表结构 顺序插入 \ 只向指定的字段插入值
表school.student2 id id int 姓名 name varchar(50) 出生年份 born_year year 生日 birthday date 上课时间 class_time time 注册时间 reg_time datetime
mysql> create table student2( -> id int, -> name varchar(50), -> born_year year, -> birthday date, -> class_time time, -> reg_time datetime -> ); mysql> desc student2; mysql> insert into student2 values(1,'tom',now(),now(),now(),now()); mysql> insert into student2 values(2,'jack',1982,19821120,123000,20140415162545);
表school.student3 id id int 姓名 name varchar(50) 性别 sex enum('male','female') 爱好 hobby set('music','book','game','disc')
mysql> create table student3( id int,name varchar(50), sex enum('m','f'), hobby set('music','book','game','disc') );
mysql> desc student3; mysql> show create table student3\G mysql> insert into student3 values (1,'tom','male','book,game'); mysql> insert into student3 values (2,'jack','male','film'); mysql> select * from student3;
三、查看表结构 -------------------------------------------------------------
### show tables; #表名
DESCRIBE 查看表结构 ##查看表结构 DESCRIBE 表名; ### DESC 表名;
### mysql> show create table student3\G ##显示建表详情
*************************** 1. row *************************** Table: student3 Create Table: CREATE TABLE `student3` ( `name` varchar(50) default NULL, `sex` enum('m','f') default NULL, `hobby` set('music','book','game','disc') default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
### mysql> SHOW TABLE STATUS ; 查看表状态信息
表状态信息 解析 : Row_format: Dynamic, Fixed, Compressed, compact Rows: 表中的行数; Avg_row_length: 行的平均字节数; Data_length: 表的数据量,单位为字节; Max_data_length: 表的容量上限; Index_length: 索引数据量,单位字节; Data_free: 已经分配出去,但未存储数据的存储空间; Auto_increment: 具有自动增长属性的字段上,下一个自动增长的值; Create_time: 表的创建时间; Update_time: 数据最近一次的更新时间; Check_time: 使用CHECK命令最近一次检查表的时间;myisamchk; Checksum: 表的校验和; Create_options: 创建表时指定的其它选项; Comment: 对于MyISAM表,存储的是创建表时的comment表选项指定的信息; 对InnoDB表来讲,存储对应的表空间剩余的表空间信息;
四、表完整性约束 -------------------------------------------------------------
作用:用于保证数据的完整性和一致性 ============================================================== 约束条件 说明 PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录,不可以为空 UNIQUE + NOT NULL FOREIGN KEY (FK) 标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号,正数 ZEROFILL 使用0填充,例如0000001
说明: 1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值 2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值 sex enum('male','female') not null default 'male' age int unsigned NOT NULL default 20 必须为正值(无符号) 不允许为空 默认是20 3. 是否是key 主键 primary key 外键 forengn key 索引 (index,unique...) ==============================================================
书 出版社
五、修改表ALTER TABLE -------------------------------------------------------------
########### 修改字段 属性 ###################
语法:
1. 修改表名:---------------------------------------------------------------------
ALTER TABLE 表名 RENAME 新表名;
2. 增加字段:--------------------------------------------------------------------- ALTER TABLE 表名 ADD 字段名1 数据类型 [完整性约束条件…], ADD 字段名2 数据类型 [完整性约束条件…]; ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] FIRST; ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; 3. 删除字段:--------------------------------------------------------------------- ALTER TABLE 表名 DROP 字段名;
4. 修改字段:---------------------------------------------------------------------
ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…]; ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…]; ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
1. 修改表的存储引擎 mysql> alter table service engine=innodb; //engine=myisam|memore|....
2. 增加约束(针对已有的主键增加auto_increment) mysql> alter table student10 modify id int not null auto_increment; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
3. 增加复合主键 mysql> alter table service2 add primary key(host_ip,port);
4. 增加主键 mysql> alter table student1 add primary key(id);
5. 增加主键和自动增长 mysql> alter table student1 -> modify id int not null primary key auto_increment;
6. 删除主键[primary key auto_increment]
1) 先删除主键字段上的 自增约束, 使用 modify 。 2) 再 删除主键 mysql> alter table student10 drop primary key;
复制表:==========================================
复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service select * from service;
只复制表结构 mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记录
复制表结构,包括Key mysql> create table t4 like employees; | 新表 旧表
|