生产环境踩坑记(一)---Mysql8.0 & Nginx

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 最近某项目第一个版本进入了生产环境部署阶段,在这次生产环境部署的过程中遇到了大家都会经常踩的坑,下面通过后端部署、前端部署两个方面跟大家分享一下,希望对大家有帮助!

解决Mysql 8.0大小写敏感配置问题

问题描述

Mysql数据库是我们自己部署的,默认是区分大小写,由于这个问题后端代码运行时报错,我们第一反应是修改lower_case_table_names = 1来设置不区分大小写,然后重启mysql,但是这个操作并没有生效,经过排查才知道是mysql版本的问题,那应该如何解决呢?

解决方案

通过查看资料发现,mysql8.0安装初始化之后是不能更改lower_case_table_names的,官方文档的原话:

In MySQL 8.0, the lower_case_table_names variable can only be configured when the MySQL server is initialized.

那只能在Mysql安装的时候初始化这个参数配置,像我们这种情况,就只能重新初始化数据库,步骤如下:

(1)在初始化之前,必须将数据库备份,备份,备份!!!

mysqldump --all-databases -h127.0.0.1 -uroot -ppass > allbackupfile.sql

(2)删除数据目录datadir=/usr/local/mysql/data

rm -rf /usr/local/mysql/data

(3)在配置文件中[mysqld]下添加lower_case_table_names = 1

vim /etc/my.cnf

[mysqld]

lower_case_table_names = 1

(4)执行初始化命令

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lower-case-table-names=1

(5)查看配置信息

show global variables like '%lower_case%'



解决Mysql账号问题导致无法连接的问题

问题描述

后端服务启动时报了本地IP无法连接数据,报错信息如下:

经过排查发现网络是通的,那就往账号方面去排查,执行select host,user from mysql.user;查看账号信息,结果如下:

发现fxcity的host是localhost,由于后端服务与mysql服务不在同一台机器,因此导致mysql连接失败。

解决方案

修改mysql账号的配置信息,步骤如下:

(1)修改fxcity账号的host信息

create user fxcity@'%' identified by 'password';

(2)修改fxcity账号的权限信息

grant all privileges on fx_city2.* to fxcity@'%' with grant option;

(3)重新加载权限表

flush privileges;

(4)查看账号信息

select host,user from mysql.user;

解决docker镜像查看所有挂载路径问题

问题描述

前端使用nginx的docker镜像部署,1期部署文档没有明确nginx镜像的挂载路径,这个时候部署的同学可以如何查看该镜像的所有挂在路径呢?

解决方案

可以通过docker inspect nginx | grep Mounts -A 20 命令查看所有挂载信息:

"Mounts": [

{

"Type": "bind",

"Source": "/etc/nginx",

"Destination": "/etc/nginx",

"Mode": "ro",

"RW": false,

"Propagation": "rprivate"

},

{

"Type": "bind",

"Source": "/var/www",

"Destination": "/usr/share/nginx/html",

"Mode": "ro",

"RW": false,

"Propagation": "rprivate"

}

以上信息可以清楚看到Source(宿主)和Destination(镜像)的挂在路径。

解决nginx报错:failed (13: Permission denied)

问题描述

每次替换前端dist包之后,重启nginx,浏览器访问都会报500错误,查看nginx日志(docker logs -f --tail=10 nginx)报错failed (13: Permission denied),经过排查是文件修改权限问题。

解决方案

使用以下命令给挂载目录添加权限:chmod -R 777 /var/www

给各位同学建议,当nginx报错的时候,不要瞎猜原因,赶紧去看日志,看日志,看日志。

总结

1、部署文档一定要写详细,包括每一步操作,细至堡垒机访问方式、生产环境所有资源的汇总、每一步部署操作、每一个遇到的问题等等,因为项目时间隔太久,下一位接手的人有可能因为堡垒机访问的问题也会耗费一天时间。

2、生产环境部署,遇到报错马上看日志,浪费时间瞎猜还不如根据日志信息去分析。

3、生产环境有客户提供的数据库尽量使用,研发人员自己安装可能会遇到很多坑,特别是新版本的数据库。

4、在对数据库做任何操作之前,都要记得提前备份,记住备份是不用花钱的,不备份把数据搞没了就麻烦了。

5、现场部署人员在部署过程中遇到问题不要慌,在项目紧急的时候越慌张越容易犯错,就算最终部署失败,也要相信TM和PD会有Plan B去处理的。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL8.0生产环境二进制标准安装
MySQL8.0生产环境二进制标准安装
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
113 0
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL5.7生产环境二进制标准安装
MySQL5.7生产环境二进制标准安装
|
5月前
|
NoSQL 关系型数据库 MySQL
linux服务器重启php,nginx,redis,mysql命令
linux服务器重启php,nginx,redis,mysql命令
118 1
|
5月前
|
NoSQL 关系型数据库 应用服务中间件
jdk1.8、mysql、redis、nginx centos云服务器安装配置
jdk1.8、mysql、redis、nginx centos云服务器安装配置
|
5月前
|
关系型数据库 应用服务中间件 nginx
docker基础,docker安装mysql,docker安装Nginx,docker安装mq,docker基础命令
docker基础,docker安装mysql,docker安装Nginx,docker安装mq,docker基础命令
|
11天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
26 1
下一篇
无影云桌面