当前位置: 首页 > news >正文

linux的数据库与web服务器

数据库:高级的Excel,键值对。

在linux中安装数据库,并完成初始化

# dnf search mysql       【查找数据库软件包】

# dnf install mysql-server.x86_64 -y        【安装】

# systemctl enable --now mysqld.service      【开火墙】

# systemctl status mysqld.service          【查看开启情况】

# mysql           【还没设置密码,可以直接访问数据库】

mysql> SHOW DATABASES;         【查看数据库】

mysql> QUIT                    【退出数据库】

# mysql_secure_installation           【安全初始化命令

再次登录就需要密码了

库名称查看

mysql> CREATE DATABASE timinglee;        【添加库名称】

Mysql> SHOW DATABASES;      【查看添加的可以】

mysql> USE timinglee                    【使用库】

mysql> SHOW TABLES;                         【显示库中的表】

库中的表和信息管理

mysql> CREATE TABLE userlist ( username varchar(10) not null, passwd varchar(50) not null );

【建立userlist表】             

mysql> INSERT INTO userlist VALUES ('user1','123');               【插入信息】

mysql> INSERT INTO userlist VALUES ('user3','333'),('user2','222');   【插入多条信息】

mysql> SELECT * FROM userlist;          【查询所有数据】

mysql> SELECT username FROM userlist WHERE passwd='333';

【查询username字段中passwd字段等于333的信息】

表名称修改

mysql> ALTER TABLE userlist RENAME user_list;      【将userlist 改为 user_list

mysql> SHOW TABLES;   【查看】

添加与删除列

mysql> ALTER TABLE user_list ADD age varchar(4) AFTER username; 【在username后添加列】

mysql> ALTER TABLE user_list DROP age;     【删除age列】

更新列

mysql> UPDATE user_list SET age='20';    【age列数值改为20】

删除行数据

mysql> UPDATE user_list SET age='15' WHERE username='user3';    【删除有user3的行】

#删除表     【要先备份】

mysql> DROP TABLE user_list;

#删除库

mysql> DROP DATABASE timinglee;

数据库备份

备份所有数据

# mysqldump -uroot -p12345678 -A > /mnt/all.sql

备份数据库结构,但不备份数据

# mysqldump -uroot -p12345678 -A --no-data >/mnt/all-nodata.sql

备份库

# mysqldump -uroot -p12345678 timinglee > /mnt/timinglee.sql

恢复库

# mysql -uroot -p12345678 -e "create database timinglee;"

# mysql -uroot -p12345678 timinglee < /mnt/timinglee.sql   【指定恢复的 timinglee库】

Apache

# dnf install httpd -y            【下载】

# firewall-cmd --list-all        【查看默认区域】

开启火墙

# firewall-cmd --permanent --add-service=http

# firewall-cmd --permanent --add-service=https

# systemctl enable --now httpd                【开启服务】

# echo 172.25.254.100 > /var/www/html/index.html    【生成默认测试页,放入内容】

Apache基本信息

/etc/httpd/conf            # apache的配置目录

/etc/http/conf.d            #子配置目录

/etc/httpd/conf/httpd.conf            #主配置文件

/lib/systemd/system/htpd.service            #启动文件

:80                       # 默认端口

/var/www/html            # 默认发布目录

index.html            # 默认发布文件

基本配置信息

端口修改

# vim /etc/httpd/conf/httpd.conf    【修改主配置文件】

# systemctl reload httpd     【重启服务】

# firewall-cmd --permanent --add-port=8080/tcp    【设定火墙发行】

# firewall-cmd --reload            【火墙服务重启】

# netstat -antlupe | grep httpd        【检测端口】

# curl 172.25.254.100:8080 运行结果:

默认发布目录

# mkdir /web/html -p         【建立新的默认发布目录】

# vim /etc/httpd/conf/httpd.conf    【修改主配置文件,建立新配置】

# systemctl restart httpd       【重启】

# echo "/web/html's page" > /web/html/index.html       【放入内容】

# curl 172.25.254.100:8080 运行结果:

默认发布文件   【注意:有报错可以 # setenforce 0 暂时修改selinux值

# echo "/web/html/lee's page" > /web/html/lee.html       【放入内容】

# curl 172.25.254.100:8080/lee.html 运行结果:

# vim /etc/httpd/conf/httpd.conf    【修改主配置文件】

# systemctl restart httpd       【重启】

# curl 172.25.254.100:8080 运行结果:

https

# dnf install mod_ssl -y      【下载https包】

# mkdir /etc/httpd/certs      【建立证书和key文件目录】

# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/httpd/certs/timinglee.org.key -x509 -days 365 -out /etc/httpd/certs/timinglee.org.crt            【生成证书】

# ls /etc/httpd/certs/       【查看目录,证书出现】

# vim /etc/httpd/conf.d/ssl.conf      【配置文件,格式化之前的,选择新的证书文件】

# systemctl restart httpd     【重启httpd服务,reload 不行】

# netstat -antlupe | grep httpd

# curl -k https://172.25.254.100     【-k强制访问,检测浏览器访问】

apache的虚拟主机

# mkdir -p /var/www/virtual/timiniglee.org/news    【创建子网页文件】

# mkdir -p /var/www/virtual/timiniglee.org/bbs

子网页文件放入内容

# echo new.timinglee.org > /var/www/virtual/timiniglee.org/news/index.html

# echo bbs.timinglee.org > /var/www/virtual/timiniglee.org/bbs/index.html

# vim /etc/httpd/conf.d/vhosts.conf    【创建新文件,配置网页设置】

<VirtualHost _default_:80>

    DocumentRoot /var/www/html    #文件目录

</VirtualHost>

<VirtualHost *:80>

    ServerName bbs.timinglee.org    #文件名称

    DocumentRoot /var/www/virtual/timinglee.org/bbs/

</VirtualHost>

<VirtualHost *:80>

    ServerName news.timinglee.org

    DocumentRoot /var/www/virtual/timinglee.org/news/

</VirtualHost>

# systemctl reload httpd    【刷新http】

# vim /etc/hosts          【配置浏览器文件,添加内容,加入虚拟主机解析域名】

172.25.254.100 mariadb.timinglee.org www.timinglee.org news.timinglee.org bbs.timinglee.org

# curl www.timinglee.org

# curl bbs.timinglee.org

# curl news.timinglee.org

附加内容:

缓存雪崩、缓存穿透,缓存击穿

        Redis是一个完全开源免费的高性能非关系型(NOSQL)的key-value数据库。
Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设置过期时间,并采用的是惰性删除+定期删除两种策略对过期键删除。

缓存雪崩:

【Redis对过期键的策略+持久化】
如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了。这就会导致在这段时间内,这些缓存同时失效,全部请求到数据库中。

        Redis中缓存的数据大面积同时失效,或者Redis宕机,从而会导致大量请求直接到数据库,压垮数据库缓存雪崩如果发生了,很可能就把我们的数据库搞垮,导致整个服务瘫痪!

解决方法:

        在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。对于“Redis挂掉了,请求全部走数据库”这种情况,我们可以有以下的思路:

        事发前:实现Redis的高可用(主从架构+Sentinel 或者Redis Cluster),尽量避免Redis挂掉这种情况发生。

        事发中:万一Redis真的挂了,我们可以设置本地缓存+限流,尽量避免我们的
数据库被干掉(起码能保证我们的服务还是能正常工作的)

        事发后:redis持久化,重启后自动从磁盘上加载数据,快速恢复缓存数据。

缓存穿透:

        缓存穿透是指查询一个一定不存在的数据。由于缓存不命中,并且出于容错考虑,如果从数据库查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,失去了缓存的意义,请求的数据在缓存大量不命中,导致请求走数据,也可能压垮数据库,导致整个服务瘫痪!

如何解决缓存穿透

      由于请求的参数是不合法的(每次都请求不存在的参数),于是我们可以使用布隆过滤器(BloomFilter)提前拦截,不合法就不让这个请求到数据库层!
当我们从数据库找不到的时候,我们也将这个空对象设置到缓存里边去。下次再请求的时候,就可以从缓存里边获取了。
这种情况我们一般会将空对象设置一个较短的过期时间。

缓存击穿

        Redis中一个热点key在失效的同时,大量的请求过来,从而会全部到达数据库,压垮数据库。
这里要注意的是这是某一个热点key过期失效,和缓存雪崩是有区别的。比如淘宝双十一,对于某个特价热门的商品信息,缓存在Redis中,刚好0点,这个商品信息在Redis中过期查不到了,这时候大量的用户又同时正好访问这个商品,就会造成大量的请求同时到达数据库。

解决办法

        设置热点数据"永不过期" 或者定时更新,加上互斥锁:上面的现象是多个线程同时去查询数据库的这条数据,我们可以在第一个查询数据的请求上使用一个互斥锁来锁住它 其他的线程走到这一步拿不到锁就等着,等一个线程查询到了数据,然后将数据放到redis缓存起来。
后面的线程进来发现已经有缓存了,就直接走缓存。


文章转载自:
http://amg.bdypl.cn
http://aitch.bdypl.cn
http://banbury.bdypl.cn
http://boron.bdypl.cn
http://argental.bdypl.cn
http://beemaster.bdypl.cn
http://cherrystone.bdypl.cn
http://axilemma.bdypl.cn
http://althorn.bdypl.cn
http://capitulaitonist.bdypl.cn
http://appeaser.bdypl.cn
http://airwash.bdypl.cn
http://aphasia.bdypl.cn
http://brewer.bdypl.cn
http://banefully.bdypl.cn
http://blasphemy.bdypl.cn
http://aliment.bdypl.cn
http://array.bdypl.cn
http://carlism.bdypl.cn
http://bastile.bdypl.cn
http://cantonese.bdypl.cn
http://aseity.bdypl.cn
http://chinch.bdypl.cn
http://backpaddle.bdypl.cn
http://betrayer.bdypl.cn
http://believable.bdypl.cn
http://carbamide.bdypl.cn
http://akin.bdypl.cn
http://adoption.bdypl.cn
http://bushmanoid.bdypl.cn
http://www.dtcms.com/a/281386.html

相关文章:

  • LSTM入门案例(时间序列预测)
  • 平升智慧水务整体解决方案,大数据驱动的智慧水务,让城市供水更智能
  • 康谋分享 | 破解数据瓶颈:智能汽车合成数据架构与应用实践
  • 改进_开源证券_VCF_多尺度量价背离检测因子!
  • 【从0-1的JavaScript】第1篇:JavaScript的引入方式和基础语法
  • 第五章 管道工程 5.2 燃气管道
  • 数据库第三次作业
  • 脚手架新建Vue2/Vue3项目时,项目文件内容的区别
  • yolo-world环境配置
  • 【PCIe 总线及设备入门学习专栏 5.1.1 -- PCIe PERST# 信号的作用】
  • 关于实习的经验贴
  • eSearch识屏 · 搜索 v14.3.0
  • Redis集群搭建(主从、哨兵、读写分离)
  • netstat -tlnp | grep 5000
  • 3.创建表-demo
  • 进程的内存映像,只读区,可读写区,堆,共享库,栈详解
  • 23.将整数转换为罗马数字
  • 磁悬浮轴承的“眼睛”:位移测量核心技术深度解析
  • 【监控实战】Grafana自动登录如何实现
  • 关于tresos Studio(EB)的MCAL配置之FEE
  • dataLoader是不是一次性的
  • 文心一言4.5企业级部署实战:多模态能力与Docker容器化测评
  • 告别手动迁移:使用 PowerShell 一键导出 IIS 配置,让服务器迁移更轻松
  • LSA链路状态通告
  • QT——文件选择对话框 QFileDialog
  • Transformer是什么 - 李沐论文《Attention Is All You Need》精读
  • 内网穿透实例:在 NAT 环境下通过 FRP 配置 ThinLinc 远程桌面 实现外网登录
  • zynq串口的例子
  • 自己训练大模型?MiniMind 全流程解析 (一) 预训练
  • 如何科学做好企业软件许可优化?