首页
留言
友链
架子鼓
更多
壁纸
直播
时光机
关于
Search
1
谷豆电视直播代理源码,谷豆代理原理解析
43,976 阅读
2
华为鸿蒙系统无法安装 xapk APP 闪退 ( youtube vanced ) 的解决办法
26,284 阅读
3
[转载]青龙面板+Ninja从零安装教程
18,923 阅读
4
docker 之 typecho 镜像-不推荐
12,863 阅读
5
typecho插件 - 在线下载主题到服务器 - addTheme 发布
8,663 阅读
技术
php
linux
mysql
redis
typecho
nginx
go
python
dnmp
工具
日记
理财日记
生活日记
生活
kindle 资源
公告
虚拟机
登录
Search
标签搜索
msyql
主从
华为
鸿蒙
xapk
闪退
APP 闪退
kindle
mobi
docker
pip
alpine
梦浪的小虾米
累计撰写
132
篇文章
累计收到
547
条评论
首页
栏目
技术
php
linux
mysql
redis
typecho
nginx
go
python
dnmp
工具
日记
理财日记
生活日记
生活
kindle 资源
公告
虚拟机
页面
留言
友链
架子鼓
壁纸
直播
时光机
关于
搜索到
5
篇与
的结果
2022-06-12
一个还没有完成工作的复盘(二)-上线篇
前言前一篇文章不是说有一个商城要上线吗?具体点击这里查看经历了放假+其他事情的干扰,这个项目终于上线了。所以这篇文章是上线后的问题复盘正文废话不多说,直接上正文项目上线后,遇到的问题有:1.因为开发时间极短,而项目极其庞大,导致了很多细小的极限值没有考虑到,最典型的就是 where条件没有写好.需求:查询当前用户在当天内是否下过订单()当时开发的时候写的wherewhere porderid =1 and cid = 2 and (addtime >= 2022-06-12 00:00:00 or addtime<=2022-06-12 23:59:59) 事后反馈了问题,然后的时候,才发现,忘了写订单状态,未付款订单,取消的订单都被加进去了后来改成了:#(这里不用考虑取消) where porderid =1 and cid = 2 and (addtime >= 2022-06-12 00:00:00 or addtime<=2022-06-12 23:59:59) and status != 5 2.服务器报各种 mysql 字段错误。错误描述:扣减金额的时候,金额已经不够扣了,但是接口没有处理,还是直接在数据库扣。并且也没有写事务和并发限制.解决方案:改成了事务+try catch + where。 where条件里面加 where amount>=need_amount(need_amount 为需要的金额数)3.服务器代码更新的时候,不要使用一键懒省事的更新,而是要通过提交日志确认自己要更新的文件。通过 svn/git 提交日志获取到自己修改的文件,然后把文件整理成更新命令并在服务器上更新这些命令。原因:我们会在服务器上修改一些生产的配置,如果使用一键更新的时候,同事可能会修改这个文件,并且不小心把这个文件给提交了4.因为失误,导致了一堆错误金额。比如返利判断写错了,给用户多发钱了,一定要仔细看自己的返利判断,不然写补救脚本的时候就难受了,因为补救脚本可没有人给你测试了,并且还要自负风险,所以一定要备份数据库。5.操作数据库前,一定要备份。不然会因为你的各种疏忽导致数据错乱的时候,你想恢复都恢复不了。6.尽量多手写一些查询 sql, 因为真的能锻炼自己的 sql 水准还有下一篇?不一定,如果还遇到问题的话,我会抽空更新,抽空复盘。这周7天,我上了7天班,通宵了三天,所以真不一定有时间更新,但是更新也是对自己的知识的一种复盘。
2022年06月12日
920 阅读
0 评论
0 点赞
2022-05-04
mysql 自动备份脚本
网上搞来的脚本,自己改改,自己用代码如下#!/bin/bash #存放目录 /root/mysqlbackup BackupDir= #数据库库名 blog DataBaseName= #用户名 root User= #密码 123456 Passwd= #host localhost Ip= #日期命名 %Y%m%d_%H%M DateTag=`date +%Y%m%d` #sql脚本名字 sqltag=$DataBaseName'_'$DateTag'.'sql #压缩文件名字 tartag=$sqltag'.'tar'.'gz #备份 mysqldump -h $Ip -u$User -p$Passwd --databases $DataBaseName > $BackupDir/$sqltag #进行压缩并删除原文件 cd $BackupDir tar -czf $tartag $sqltag rm -rf $sqltag #定时清除文件,以访长期堆积占用磁盘空间(删除5天以前带有tar.gz文件) find $BackupDir -mtime +5 -name '*.tar.gz' -exec rm -rf {} \; echo "Backup Succeed Date:" $(date +"%Y-%m-%d %H:%M:%S")如果需要使用,请修改上文中的下列几项值#!/bin/bash #存放目录 /root/mysqlbackup BackupDir= #数据库库名 blog DataBaseName= #用户名 root User= #密码 123456 Passwd= #host localhost Ip=# 注意脚本执行权限及修改脚本路径 crontab 00 02 * * * sh /root/scripts/mysql_backup.sh > /root/scripts/mysql_backup.log 2>&1参考https://xie.infoq.cn/article/5555c43bf82eb31ec19fb8fce
2022年05月04日
496 阅读
0 评论
0 点赞
2022-04-02
本周阅读 - mysql 专场
redolog的理解https://blog.51cto.com/u_15274085/2918514redolog的理解https://blog.51cto.com/MageByte/2934214?b=totalstatistic几种 mysql log 的总结https://www.cnblogs.com/wy123/p/8365234.html生产环境下 mysql 的配置https://blog.csdn.net/miyatang/article/details/60875194mysql char(n) 汉字的说明https://www.cnblogs.com/zhuyeshen/p/11642211.htmlmysql 汉字说明https://www.cnblogs.com/jelly12345/p/14987259.htmlmysql 为什么不建议使用 nullhttps://segmentfault.com/a/1190000039774659mysql 强制使用索引https://www.cnblogs.com/sdgf/p/5998423.html
2022年04月02日
563 阅读
0 评论
0 点赞
2022-03-27
初级 - mysql 的索引相关
如何查看 sql 的索引使用情况explain select * from xxx where xxx索引失效的情况索引选择性太差(搜索出来结果/总量> 1/4 )<>/not in 无法使用索引is null 会使用索引 is not null 不会使用索引where 子句跳过左侧索引列,直接查询右侧索引字段(联合索引时,一定要按从左到右的时候,没有按照从左到右的顺序)对索引使用计算或者使用函数--- 未完待续
2022年03月27日
1,487 阅读
1 评论
0 点赞
2021-12-16
mysql 主从笔记
工作有几年了,可是还是还是在写着简单的 curd,这不行,得搞一下 mysql 主从准备两台带有 mysql 的服务器(意思就是不管你是linux还是window,只要有 mysql 就行)两台服务器的 ip 地址为 192.168.123.57 和192.168.123.58其中 192.168.123.58为主数据库192.168.123.57为从数据库本文中,主从环境均为 linux 下的 ubuntu 环境(为了方便学习,本文是使用的 docker 搭建的 mysql 8.0)正文配置主数据库。找到 mysql 的配置 . 本文的配置文件名为 my.cnf打开配置文件,通过搜索找到 [mysqld],然后换行并添加如下配置:# 下文中 xxx 为文件目录,请自行替换. 推荐: /var/log/mysql server-id = 1 #mysql-bin 会自动生成 mysql-bin.000001 log-bin = 'xxxx/mysql-bin' # 错误日志 log-error= 'xxxx/mysql-error'; # 主从同步忽略的数据库 binlog-ignore = mysql # 主从同步需要同步的数据库 binlog-do-db = test给从数据库库授权 [ mysql 命令行中执行该命令]CREATE USER 'root'@'192.168.123.%' IDENTIFIED BY 'mytest'; GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.123.%';刷新授权,让授权生效- 可有可无 [ mysql 命令行中执行该命令]FLUSH PRIVILEGES;重启数据库服务# 网上推荐这个重启 mysql 服务。我为了让格式好看,自然也就写了这个,其实我是 docker,所以不存在这种启动方式,我直接重启容器 mysql.server restart查看 master 是否配置成功 [ mysql 命令行中执行该命令]show master status \G;查看 从数据库的信息 [ mysql 命令行中执行该命令]show master hosts \G;配置从数据库从数据库的配置,文件名字:mysql.cnf# 下文中 xxx 为文件目录,请自行替换. 推荐: /var/log/mysql server-id = 1 #mysql-bin 会自动生成 mysql-bin.000001 log-bin = 'xxxx/mysql-bin' # 错误日志 log-error= 'xxxx/mysql-error'; 需要同步的数据库 replicate-do-db=test从数据库也需要授权 [ mysql 命令行中执行该命令]change master to master_host='192.168.123.58', master_user='root', master_password='mytest', master_log_file='mybin-log.000001' , master_log_pos=323; # 以上是一个完整的一行命令, master_host 为主数据库的地址,master_user 为主数据库的账户,master_password 为主数据库的密码,master_log_file 为主数据库的二进制文件的名字,master_log_pos 为主数据库log文件里面的行号,可以通过 <code>show master status \G</code>获取对应的行号从数据库也需要重启数据库服务,和主服务器的一致在从服务器上开启同步进程 [ mysql 命令行中执行该命令]start slave;查看同步状态 [ mysql 命令行中执行该命令]show slave status; # 会得到如下结果-仅供参考 mysql> show slave status \G; *************************** 1. row *************************** Slave_IO_State: Waiting for source to send event Master_Host: 192.168.123.58 Master_User: root Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mybin-log.000001 Read_Master_Log_Pos: 632 Relay_Log_File: 044ebe077274-relay-bin.000004 Relay_Log_Pos: 633 Relay_Master_Log_File: mybin-log.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 632 Relay_Log_Space: 849 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: db775ba0-16f4-11ec-9463-0242ac150002 Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 row in set, 1 warning (0.00 sec) 此处需要注意:查看 Slave_IO_Running 和 Slave_SQL_Running 。必须让这两个值都为 yes 才算是成功。如果不是 yes。 可以查看 Last_io_Errno 上显示的错误,然后根据错误进行修改在主数据库进行写操作测试,查看从数据库是否有相同的数据。如下所示:隐藏内容,请前往内页查看详情
2021年12月16日
2,770 阅读
1 评论
0 点赞