备份脚本
cd /myData/mysqlbackup
vim backup.sh
内容如下:
--------------------------
#!/bin/bash
#要备份的数据库名称
db_name='db1'
#备份文件存放目录
backup_dir='/myData/mysqlbackup/'
current_time=$(date +'%Y-%m-%d_%H%M%S')
filepath=$backup_dir$current_time'.sql.gz'
#gzip 压缩,压缩前800k,压缩后200k
echo '开始导出数据库...'
#-F刷新日志,-R备份存储过程
mysqldump --defaults-extra-file=/myData/mysqlbackup/login_info.cnf -F -R $db_name | gzip > $filepath
echo '导出成功,文件名为: '$filepath
--------------------------
vim login_info.cnf
内容如下:
--------------------------
[mysqldump]
#此处指定max_allowed_packet,需注释掉/etc/my.cnf中的max_allowed_packet
max_allowed_packet=200M
host=127.0.0.1
user=root
password='qif'
--------------------------
索引干什么的,如何理解
索引用于快速找出在某个列中有一特定值的行。不使用索引,会全表,扫表越大,花费的时间越多。 如果表中查询的列有一个索引,mysql能快速到达一个位置搜寻到数据 索引就像书的字典,数据犹如数的内容,而读者相当CPU
索引采用B+树
索引优缺点
查询效率快,维护效率低
设计原则
介绍
mysql服务器, 一般有两个线程来负责复制和被复制。
SpringBoot中解决跨越
方法上添加跨域
@RestController
public class HelloController {
@CrossOrigin(value = "http://XXX:8080")
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
生产环境CPU逐渐飙升到100%,导致项目卡顿,访问失败
通过top命令查看进程下各个线程的CPU使用情况
top -H -p PID
PID USE PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23658 qifly 20 0 1842m 136m 13m R 100.2 0.9 1:35.45 java
通过JDK的jstack命令查看线程的堆栈信息,找到出问题的代码
jstack PID|grep -A 20 TID
说明:PID为JAVA进程ID TID为16进制的线程ID -A 20为打印20行
经排查为特殊情况导致while死循环导致CPU飙升100%
或者通过jstack将堆栈信息保存至文件中
jstack PID > info.log
安装Docker及配置镜像
安装docker
yum -y install docker
docker --version
systemctl start docker
登录阿里云获取镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qifjlwgz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker