商务服务
第六周作业
2024-10-31 21:15

目录

第六周作业

1.完成将server和client端的mysql配置默认字符集为utf8mb4

2.掌握如何获取SQL命令的帮助,基于帮助完成添加testdb数据库字符集utf8,排序集合utf8_bin 

3.总结mysql常见的数据类型 

4. 创建一个主机表host,放在testdb中,要求字段 1) id  tinyint 无符号 自增 主键 。2) hostname可变字符长度256,可为空。3)ip 可变字符长度256,可为空。4)账号,可变字符长度256,可为空。5)密码,可变字符长度256,可为空。6)创建时间,时间类型,非空。7)更新时间,时间类型,默认当前时间。8)区域,只能在华南,华北,华东,三个区域之一。9)端口,无符号整数,可为空。10)外网地址,可变字符长度256,可为空。11)内网地址,可变字符长度256,可为空。

5.给test.host表中添加多条数据 

6.根据表扩展出几个语句,完成总结DDL DML 的用法,并配上示例。

(1)总结DDL用法

 (2)总结DML用法

7.导入hellodb库,总结DQL,alias,where,group by,order by,limit,having用法示例

8.基于hellodb库,总结子查询,联合查询,交叉连接,内连接,左连接,右连接,完全连接,自连接。 

9.总结select语句处理顺序

10-11总结mysql事件管理,用户管理,权限管理,搭建wordpress站点

 12.总结mysql架构原理

13. 总结myisam和innodb存储引擎的区别

14.总结mysql索引作用,同时总结哪些查询不会使用到索引

15.总结事务ACID事务特性 

16.总结事务日志工作原理 

17.总结mysql日志类型,并说明如何启动日志

18.总结二进制日志的不同格式的使用场景

19.总结mysql备份类型,并基于mysqldump,xtrabackup完成数据库备份以恢复验证。 

20.编写crontab,每天按表备份所有mysql数据,将备份数据放在以天为时间的目录下

 21.编写crontab,基于xtrabackup,每周1,周5进行完全备份,周2到周4进行增量备份。

22.总结mysql主从复制原理 

23.实现主从复制,主主复制,半同步复制,过滤复制

24.总结GTID复制原理,并完成GTID复制集群

25.总结主从复制不一致的原因,如何解决不一致,如何避免不一致 

26.总结数据库垂直拆分和水平拆分

27.基于mycat实现读写分离 

28.总结mysql高可用方案及高可用级别。搭建MHA集群和galera cluster,尝试搭建TIDB集群

29.总结mysql配置最佳实践 

1.基础规范

2.命名规范

3.表设计规范

4.字段设计规范

5.索引设计规范

6.SQL使用规范

30.总结openvpn原理,并完成1键安装不同版本vpn脚本,可以适配rocky,ubuntu,centos主机,同时支持添加账号,注销账号 

(1)利用阿里云搭建openvpn


mysql 8.0和mariabd 10.6版本默认就是utf8mb4字符集。所以不需要更改

(1)如何获取帮助

(1)总结DDL用法

 (2)总结DML用法

(1)子查询:子查询 subquery 即SQL语句调用另一个SELECT子句,可以是对同一张表,也可以是对不同表

(2)联合查询 Union 实现的条件,多个表的字段数量相同,字段名和数据类型可以不同,但一般数据类型是相同 的.

(3)交叉连接:CROSS JOIN 

(4)内连接:INNER JOIN

(5左连接:LEFT OUTER JOIN

(6右连接:RIGHT OUTER JOIN

(7)完全连接:FULL OUTER JOIN(union左连接+右连接

(8)自连接:即表自身连接自身

 在c盘/windows/system32/drivers/etc/hosts 添加条目 10.0.0.20 blog.zybstu.com 

 

 (1)mysql索引作用更快的定位所要查询的内容。

 (2)总结不会用到的索引查询在LIKE语句中,以%号或者以"_"开头的查询内容不会用到索引

Aatomicity 原子性;整个事务中的所有操作要么全部成功执行,要么全部失败后回滚

Cconsistency一致性;数据库总是从一个一致性状态转换为另一个一致性状态。

IIsolation隔离性;一个事务所做出的操作在提交之前,是不能为其它事务所见;隔离有多种隔离 级别,实现并发

Ddurability持久性;一旦事务提交,其所做的修改会永久保存于数据库中

事务日志 transation log 事务日志的写入类型为"追加",因此其操作为"顺序IO",通常也被称为预写式日志。

 0模式数据拷贝快,安全性差(断电将会丢失数据

1模式安全性高,IO占比高,性能差。

2模式数据拷贝快,安全性比0模式好一些(因为系统不容易崩溃

根据生产情况,可以进行更改模式来优化性能

事务型存储引擎自行管理和使用,建议和数据文件分开存放。

(1)事务日志

事务日志文件

事务日志相关配置

 事务日志性能优化

(2)错误日志

错误文件路径

也可以重新指定错误日志的路径,在配置文件中修改。和事务日志修改方法一致。

(3)通用日志

(4)慢查询日志

(5)二进制日志(数据还原

二进制日志记录三种格式

基于"语句"记录:statement,记录语句,默认模式( MariaDB 10.2.3 版本以下 ,日志量较少。

基于"行"记录:row,记录数据,日志量较大,更加安全,建议使用的格式,

基于混合模式:mixed, 让系统自行判定该基于哪种方式进行,默认模式

(1)总结mysql备份类型

完全备份整个数据集

部分备份只备份数据子集,如部分库或表 完全备份、

增量备份仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快, 还原复杂

差异备份仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单

注意:二进制日志文件不应该与数据文件放在同一磁盘

冷备读、写操作均不可进行,数据库停止服务

温备读操作可执行;但写操作不可执行

热备读、写操作均可执行

MyISAM:温备,不支持热备

InnoDB:都支持

还原要点

做还原测试,用于测试备份的可用性

还原演练,写成规范的技术文档

(2基于mysqldump和xtrabackup完成数据库备份以恢复验证。

主从复制相关线程

(1)主节点

dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events

(2)从节点

I/O Thread:向Master请求二进制日志事件,并保存于中继日志中

SQL Thread:从中继日志中读取日志事件,在本地完成重放

主从复制优势

(1)避免数据库单点失败问题

(2)实现读写分离,负载均衡。

建议数据库版本要一致。如果不一致,从节点的版本要高。

(1)主从复制

(2)主主复制在主从复制的基础上进行一些修改即可

修改数据时,只在一台主服务器上操作。这样能够避免同时写数据造成的冲突。

出现冲突怎么解决

#系统变量,指定跳过复制事件的个数

SET GLOBAL sql_slave_skip_counter = N

#服务器选项,只读系统变量,指定跳过事件的ID

[mysqld]

slave_skip_errors=编号 | ALL  

重新启动服务

(3)半同步复制:在主从复制的基础上进行一些修改即可

(4)过滤同步:在主从复制的基础上进行一些修改即可

(1)复制原理
利用 GTID复制不像传统的复制方式(异步复制、半同步复制)需要找到binlog文件名和位置点,只需知道master的IP、端口、账号、密码即可。开启GTID后,执行change master to master_auto_postion=1即可,它会自动寻找到相应的位置开始同步

(2)完成GTID复制集群

(1)不一致的原因和避免

#主库binlog格式为Statement(语句型,同步到从库执行后可能造成主从不一致。应该设置为Row(行型

#主节点服务器上的二进制日志功能没有及时打开,导致主从数据不一致。应该及时打开二进制日志功能(sql_log_bin和log_bin都为1)

#主从数据库版本不一致,特别是高版本是主,低版本为从的情况下,主数据库上面支持的功能,从数据库可能不支持该功能。应该选择同一版本,或者主低从高配置。

#主库或从库意外宕机,宕机可能会造成binlog或者relaylog文件出现损坏,导致主从不一致。

#主从sql_mode 不一致。应该设置为一致

#从节点未设置只读,误操作写入数据。应该从节点设置为只读read-only

#MySQL自身bug导致。

(2)如何解决

#手动重建不一致的表

#使用percona-toolkit工具辅助

(1)垂直拆分一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面。但是会造成部分业务表无法 join,只能通过接口方式解决,提高了系统复杂度。

(2)水平拆分水平拆分是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。数据多次扩展难度跟维护量极大

(1)高可用方案及级别

MHAMaster High Availability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提 升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主 多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台 充当master,一台充当备用master,另外一台充当从库。

MHA工作原理

1. MHA利用 SELECT 1 As Value 指令判断master服务器的健康性,一旦master 宕机,MHA 从宕机崩溃 的master保存二进制日志事件(binlog events

2. 识别含有最新更新的slave 3. 应用差异的中继日志(relay log)到其他的slave 4. 应用从master保存的二进制日志事件(binlog events)到所有slave节点

5. 提升一个slave为新的master 6. 使其他的slave连接新的master进行复制

7. 故障服务器自动被剔除集群(masterha_conf_host),将配置信息去掉

8.旧master的VIP(虚拟IP地址)漂移到新的master上,用户应用就可以访问新的master

9. MHA是一次性的高可用性解决方案,Manager会自动退出

(2)搭建MHA集群

 

MHA主要解决的是mysql的主从,主节点挂掉以后单点失败问题。MHA会自动提升从节点为新主,但是还是存在数据丢失的风险,这个风险主要来自于服务器是物理原因导致的宕机,因为如果只是mysql服务宕机了,二进制日志还可以通过ssh协议来传输到其他从节点。

(2)搭建Percona Xtradb Cluster(PXC 5.7版的Galera Cluster集群

集群中节点的数量:整个集群中节点数量应该控制在最少3个、最多8个的范围内。3个以上节点是为了防止出现脑裂现场,少于8个是为了提高性能。因为节点数越多,输入的数据在每个节点上要校验的次数就变多,导致性能变差。

1.基础规范

(1)必须使用InnoDB存储引擎

解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高

(2)使用UTF8MB4字符集

解读:万国码,无需转码,无乱码风险,节省空间,支持表情包及生僻字

(3)数据表、数据字段必须加入中文注释

解读:N年后谁知道这个r1,r2,r3字段是干嘛的

(4)禁止使用存储过程、视图、触发器、Event

解读:高并发大数据的互联网业务,架构设计思路是"解放数据库CPU,将计算转移到服务层",并发量 大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现"增 机器就加性能"。数据库擅长存储与索引,CPU计算还是上移吧

(5)禁止存储大文件或者大照片

解读:为何要让数据库做它不擅长的事情?大文件和照片存储在文件系统,数据库里存URI多好。

2.命名规范

(1)只允许使用内网域名,而不是ip连接数据库

(2)线上环境、开发环境、测试环境数据库内网域名遵循命名规范

业务名称:xxx

线上环境:xxx.db

开发环境:xxx.rdb

测试环境:xxx.tdb

从库在名称后加-s标识,备库在名称后加-ss标识 线上从库:xxx-s.db

线上备库:xxx-sss.db

(3)库名、表名、字段名:小写,下划线风格,不超过32个字符,必须见名知意,禁止拼音英文混用

(4)库名与应用名称尽量一致,表名:t_业务名称_表的作用,主键名:pk_xxx,非唯一索引名:idx_xxx,唯 一键索引名:uk_xxx

3.表设计规范

(1)单实例表数目必须小于500,单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。

说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表

(2)单表列数目必须小于30

(3)表必须有主键,例如自增主键

a)主键递增,数据行写入可以提高插入性能,可以避免page分裂,减少表碎片提升空间和内存的使用

b)主键要选择较短的数据类型, Innodb引擎普通索引都会保存主键的值,较短的数据类型可以有效的减 少索引的磁盘空间,提高索引的缓存效率

c) 无主键的表删除,在row模式的主从架构,会导致备库夯住

(4)禁止使用外键,如果有外键完整性约束,需要应用程序控制

解读:外键会导致表与表之间耦合,update与delete操作都会涉及相关联的表,十分影响sql 的性能, 甚至会造成死锁。高并发情况下容易造成数据库性能,大数据高并发业务场景数据库使用以性能优先

4.字段设计规范

(1)必须把字段定义为NOT NULL并且提供默认值

a)null的列使索引/索引统计/值比较都更加复杂,对MySQL来说更难优化

b)null 这种类型MySQL内部需要进行特殊处理,增加数据库处理记录的复杂性;同等条件下,表中有较多 空字段的时候,数据库的处理性能会降低很多

c)null值需要更多的存储空,无论是表还是索引中每行中的null的列都需要额外的空间来标识

d)对null 的处理时候,只能采用is null或is not null,而不能采用=、in、、<>、!=、not in这些操作符 号。如:where name!='shenjian',如果存在name为null值的记录,查询结果就不会包含name为null值的记录

(2)禁止使用TEXT、BLOB类型

解读:会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据,导致内存命中率急 剧降低,影响数据库性能

(3)禁止使用小数存储货币

解读:使用整数吧,小数容易导致钱对不上

(4)必须使用varchar(20)存储手机号

a)涉及到区号或者国家代号,可能出现+-() b)手机号会去做数学运算么? c)varchar可以支持模糊查询,例如:like"138%" (18)禁止使用ENUM,可使用TINYINT代替 解读

a)增加新的ENUM值要做DDL操作

b)ENUM的内部实际存储就是整数,你以为自己定义的是字符串?

5.索引设计规范

(1)单表索引建议控制在5个以内

(2)单索引字段数不允许超过5个

解读:字段超过5个时,实际已经起不到有效过滤数据的作用了

(3)禁止在更新十分频繁、区分度不高的属性上建立索引

a)更新会变更B+树,更新频繁的字段建立索引会大大降低数据库性能

b)"性别"这种区分度不大的属性,建立索引是没有什么意义的,不能有效过滤数据,性能与全表扫描类 似

(4)建立组合索引,必须把区分度高的字段放在前面

解读:能够更加有效的过滤数据

6.SQL使用规范

(1)禁止使用SELECT *,只获取必要的字段,需要显示说明列属性

a)读取不需要的列会增加CPU、IO、NET消耗

b)不能有效的利用覆盖索引

c)使用SELECT *容易在增加或者删除字段后出现程序BUG

(2)禁止使用INSERT INTO t_xxx VALUES(xxx),必须显示指定插入的列属性

解读:容易在增加或者删除字段后出现程序BUG

(3)禁止使用属性隐式转换

解读:SELECT uid FROM t_user WHERe phone=13812345678 会导致全表扫描,而不能命中phone索 引,猜猜为什么?(这个线上问题不止出现过一次)

(4)禁止在WHERe条件的属性上使用函数或者表达式

解读:SELECt uid FROM t_user WHERe from_unixtime(day)>='2017-02-15' 会导致全表扫描 正确的写法是:SELECt uid FROM t_user WHERe day>= unix_timestamp('2017-02-15 00:00:00')

(5)禁止负向查询,以及%开头的模糊查询

a)负向查询条件:NOT、!=、<>、!、!>、NOT IN、NOT LIKE等,会导致全表扫描

b)%开头的模糊查询,会导致全表扫描

(6)禁止大表使用JOIN查询,禁止大表使用子查询

解读:会产生临时表,消耗较多内存与CPU,极大影响数据库性能

(7)禁止使用OR条件,必须改为IN查询

解读:旧版本Mysql的OR查询是不能命中索引的,即使能命中索引,为何要让数据库耗费更多的CPU帮 助实施查询优化呢? (30)应用程序必须捕获SQL异常,并有相应处理

(1)利用阿里云搭建openvpn

(2)打开openvpn软件以后连接,出现绿色为已建立连接。

(3)在window客户端中,用cmd命令行输入ipconfig 会看到一个从openvpn服务器给客户端的一个虚拟10.8.0.6的IP地址。 

 (4)现在openvpn也有一个虚拟的10.8.0.1的IP地址

(5)windows客户端也能直接连接openvpn服务器的私网地址172.30.0.1了,但是不能连接openvpn服务器后面的web1服务器。

(6)打开openvpn服务器的forword功能且生效。不过只实现了客户端到web1的单向通信,没有实现有去有回。因为从web1回去的数据报文没有经过openvpn,而是经过了阿里云给分配的路由器,但是客户端的10.8.0.6地址是openvpn给的虚拟地址,所以就不能到达客户端。

(7)可以添加路由,但是阿里云禁止添加和修改路由。所以只能修改openvpn服务器的iptable规则,用SNAT转换

(8)到现在,客户端可以直接ping通web1和web2了。当然也可直接登录到web1和web2服务器了

(9)给新用户颁发证书(脚本实现

(10)吊销用户证书(脚本实现

(11)启用安全增强功能(基于秘钥登录

(12)阿里云释放实例

    以上就是本篇文章【第六周作业】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/2903.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多   
最新新闻
云南网络营销软件哪个好?权威推荐助您快速选择
在数字化时代,网络营销软件成为了许多企业实现营销目标的重要工具。然而,市面上网络营销软件琳琅满目,选择一个适合自己的并不
宫崎骏的时代结束了
在《你想活出怎样的人生》之前,宫崎骏一直是著名的退休诈骗犯。七次退休又七次复出,年过八旬,创作欲还是旺盛到令人害怕。然而
个人大数据信用查询平台哪个更准确一些?蘑菇画像个人大数据信用报告查询平台更好用
个人大数据信用查询平台哪个更准确一些?蘑菇画像个人大数据信用报告查询平台更好用,个人大数据信用查询平台市面上还是比较多的
小红书关键词热度查询!国风大潮下,品牌怎么玩出花样、玩出水平?
国风,是当下年轻人钟爱的潮流。汉服穿搭、文物手办、国潮仿妆……频频出圈。“民族的就是世界的”,国风的影响力可谓深远,一说
app推广接单发布平台哪个好?怎么领取任务赚钱?
最近几年,随着互联网的快速发展,利用网络兼职的赚钱方式也呈现越来越火,非常受大众欢迎的趋势。而且其种类也非常多:微商、社
【可打印】文学常识常考100题汇总,初中生练一练!(部编版初中语文)
关注本公众号,私信发送数字:2493,领取电子打印版文学常识1、成语“万事俱备,只欠东风”是根据《三国演义》________ (战役)
“迎旅发大会 游美丽望城”望城首届文旅短视频大赛,最高3万奖励等你来拿!
湘江水浩浩奔腾,流淌沧桑巨变。铜官窑静穆肃然,在这里诉说着望城的厚重历史,流传着“君生我未生,我生君已老”凄美爱情故事;落日
mysql导入大txt文件怎么打开_mysql怎么导入txt文件?
有时候我们在使用mysql数据库的时候,想导入txt文本文档,要怎么操作呢?下面本篇文章就来给大家介绍一下方法
寸头抖音短视频教程_人开始衰老的迹象是什么
岁月不饶人,我才50出头,可是许多衰老迹象已经越来越明显,惹得中医闺蜜笑话这样的我。1、觉得右后背和肩膀疼,出现“五十肩”
什么是网站页脚:以及最佳页脚设计示例
主体内容外,网站还包括页眉和页脚,用于帮助访问者的特定目的。由于我们认为网站页脚设计同样重要,我们整理了10个最佳免费网站
本企业新闻

点击拨打: