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日志模板 |
===浮点数 与 定点数 :===================
### 浮点数 ############################################# 用于存储用户的身高、体重、薪水等,不具备超高精度要求的数据
浮点数是用来表示实数的一种方法,它用 M(尾数) * B( 基数)的E(指数)次方来表示实数,相对于定点数来说, 在长度一定的情况下,具有表示数据范围大的特点。 但同时也存在误差问题。如果希望保证值比较准确,推荐使用定点数数据类型。 MySql中的浮点类型有float,double。他们定义方式为:FLOAT(M,D) 、 DOUBLE (M,D)。 M表示十进制数字总的个数,D 表示 其中 小数点后面数字的位数, M 和 D又称为精度和标度 “(M,D)”表示该值一共显示M位整数,其中D位 位于小数点后面。 例如,定义为 FLOAT(7,4) 的一个列可以显示为 -999.9999。 999.9999 MySQL保存值时进行四舍五入,因此如果在 FLOAT(7,4) 列内插入999.00009,近似结果是 999.0001。 FLOAT 和 DOUBLE中的 M 和 D 的取值默认都为 0,即除了最大最小值,不限制位数。 M、D范围如下: M取值范围为0~255。FLOAT只保证 6位 有效数字的准确性,所以 FLOAT(M,D)中,M<=6时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。 D取值范围为0~30,同时必须 <=M。double只保证 16位 有效数字的准确性,所以DOUBLE(M,D)中,M<=16时,数字通常是准确的。 如果M和D都有明确定义,其超出范围后的处理同decimal。 FLOAT和DOUBLE中,若 M 的定义分别超出 7和 17 ,则多出的有效数字部分,取值是不定的,通常数值上会发生错误。 因为浮点数是不准确的,所以我们要避免使用“=”来判断两个数是否相等。
### 优先满足小数位,少补,多 四舍五入
========== 测试 ======================
mysql> create table test4(float_test float(5,2)); //一共5位,小数占2位 000.00 -- 999.99 Query OK, 0 rows affected (0.00 sec)
mysql> desc test4; +------------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------------+------+-----+---------+-------+ | float_test | float(5,2) | YES | | NULL | | +------------+------------+------+-----+---------+-------+ 1 row in set (0.00 sec)
mysql> insert into test4 values (10.2 ), (70.243), (70.246); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from test4; +------------+ | float_test | +------------+ | 10.20 | | 70.24 | | 70.25 | +------------+ 3 rows in set (0.00 sec)
mysql> insert into test4 values (1111.20); ### 优先满足小数位,少补,多 四舍五入 ERROR 1264 (22003): Out of range value for column 'float_test' at row 1
### 定点数DECIMAL ####################################### 定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。 DECIMAL用于保存必须为确切精度的值。 使用方式如下: salary DECIMAL(5,2) 接受: 500.01 下面的介绍将基于上面这个例子。 我们看到其中有两个参数,即DECIMAL(M,D),其中 M表示十进制数字总的个数,D表示小数点后面数字的位数, M 和 D又称为精度和标度 上例中的取值范围为 - 999 . 99 ~ 999 . 99。 不带符号 000.00 ~ 999.99 如果存储时,整数部分超出了范围(如上面的例子中,添加数值为1000.01),MySql就会报错,不允许存这样的值。
如果存储时,小数点部分若超出范围,就分以下情况: 若四舍五入后,整数部分没有超出范围,则只警告,但能成功操作并四舍五入删除多余的小数位后保存。如999.994实际被保存为999.99。 999.996 若四舍五入后,整数部分超出范围,则MySql报错,并拒绝处理。如999.995和-999.995都会报错。 M的默认取值为 10,D默认取值为 0。如果创建表时,某字段定义为 decimal类型不带任何参数,等同于 decimal(10,0)。带一个参数时,D取默认值。 M的取值范围为1~65,取0时会被设为默认值,超出范围会报错。 D的取值范围为0~30,而且必须<=M,超出范围会报错。 所以,很显然,当M=65,D=0时,可以取得最大和最小值。 decimal (65,0) decimal (65,30)
定点数decimal测试:------------------------------------------------
mysql> create table test5(decimal_test decimal(5,2));
mysql> insert into test5 values (70.245); Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> show warnings; ##显示系统的警告信息。 +-------+------+---------------------------------------------------+ | Level | Code | Message | +-------+------+---------------------------------------------------+ | Note | 1265 | Data truncated for column 'decimal_test' at row 1 | +-------+------+---------------------------------------------------+ 1 row in set (0.00 sec)
mysql> select * from test5; +-------+ | num | +-------+ | 70.25 | | 70.25 | +-------+
2000.00 1500000.00
数据定义 : ==================================
float(M,S) M为全长,S为小数点后长度。float 不精准的例子如下:
mysql> create table t1(c1 float(10,2), c3 decimal(10,2));
Query OK, 0 rows affected (0.02 sec) mysql> insert into t1 values(9876543.21, 9876543.12); Query OK, 1 row affected (0.00 sec)
总结对比:========================================
定点数 decimal (M,D) :不存在精度偏差。 取值 65 小数最大支持 30位,
浮点数:在一定范围内能保证精确,超出的范围,可能会出现存取的偏差。 float(M,D) M 小于等于 6 ,能保证精确 double(M,D) M 小于等于 16 ,能保证精确 占用空间: float 4字节 double 8字节 decimal (M,D) M+2 个字节。
对小数部分的处理机制一样: 优先处理小数部分内容(不够小数位,则补0 ,超出的小数位,则按照四舍五入自动截断。)
(5,2) 1234.5 插入不成功 ,补0,超过总数 1234.50 (5,2) 999.996 插入不成功, 自动截断小数位,四舍五入加一 , 得到 10000.00 超出范围
Mysql 的严格模式 ,5.5 默认关闭,5.6 5.7 默认开启。===========================
vim /etc/my.cnf
[mysqld] #添加 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
|