叶测试 发布的文章
线上服务器硬盘安装LVM
LVM安装及使用:https://www.r1989.com/linux-1222.html
线上服务器硬盘由标准分区转为LVM
- 使用宝塔备份数据库
- 停止
nginx
mysql
php
等 mkdir /{web_bak,mysql_bak,backup_bak}
- 转移/web目录文件到/web_bak;转移/mysql目录到/mysql_bak;转移/backup目录到/backup_bak
执行转移命令:
rsync -avzh /mysql/* /mysql_bak/
rsync -avzh /backup/* /backup_bak/rsync -avzh /web/shell /web_bak/
rsync -avzh /web/source /web_bak/
rsync -avzh /web/upgrade /web_bak/
rsync -avzh /web/www /web_bak/建议同时进行4个拷贝:
rsync -avzh /web/oa/t0* /web_bak/oa/
......
LVM安装流程:
安装lvm并将vdc转为逻辑分区
yum install lvm2
lsblk
vim /etc/fstab 注释vdc硬盘挂载- 检查三个分区数据是否均已转换完成
卸载
umount /backup
umount /mysql
umount /web转lvm
fdisk /dev/vdc
[n -> p -> ...] t -> {1,2,3} -> 8e ->w
fdisk -lupvcreate /dev/vdc{1,2,3}
vgcreate lv /dev/vdc1 默认PE为4M( -s 32M lvm1默认lv最多只能包含65536个PE,最大支持256G;lvm2不再限制PE数量)
vgextend lv /dev/vdc2
vgextend lv /dev/vdc3lvcreate -L 80G -n mysql lv
lvcreate -L 20G -n backup lv
vgdisplay
lvcreate -l 100%FREE -n web lvmkfs -t ext4 /dev/lv/backup
mkfs -t ext4 /dev/lv/mysql
mkfs -t ext4 /dev/lv/web;resize2fs /dev/lv/backup
;resize2fs /dev/lv/mysql
;resize2fs /dev/lv/web;mount /dev/lv/backup /backup
;mount /dev/lv/mysql /mysql
;mount /dev/lv/web /webvim /etc/fstab
/dev/lv/mysql /mysql ext4 defaults 0 0
/dev/lv/backup /backup ext4 defaults 0 0
/dev/lv/web /web ext4 defaults 0 0mount -a
数据还原
rsync -avzh /backup_bak/* /backup/
rsync -avzh /mysql_bak/* /mysql/rsync -avzh /web_bak/shell /web/
rsync -avzh /web_bak/source /web/
rsync -avzh /web_bak/upgrade /web/
rsync -avzh /web_bak/www /web/具体依据实际情况转移:
rsync -avzh /web_bak/oa/t0* /web/oa/
......
转移100个系统用时:约40分钟
测试backup分区
`lvreduce -L -4G -r /dev/lv/backup`
`lvextend -L +4G -r /dev/lv/backup`
- 检查数据是否完整转移
- reboot
- 启动各服务
LVM安装及使用
解决服务器数据盘随使用时间容量不足问题,故需搭建服务器时安装lvm以便后期新增硬盘可随时调整网站系统所在分区容量等。
【安装】
yum install lvm2
- 格式化硬盘或分区格式为
8e
:fdisk /dev/vdb
n -> p -> 1 -> t -> 8e -> w
- 使用
pvcreate
创建物理卷PVpvcreate /dev/vdb{1,2,3,...}
mysql数据库中查询一个字段相同,另一个字段不相同的数据的数据
如查询所有跨律所的律师数据:SELECT DISTINCT x.lawyer_id,x.lawfirm_id FROM
answer as x,
answer as y WHERE x.id<1000 and x.lawyer_id=y.lawyer_id and x.lawfirm_id!=y.lawfirm_id
注:性能有限,大数据量不建议使用
解决双屏分辨率不同导致微信无法截图问题
应用程序右键点击属性-兼容性-更改高DPI设置-替代高DPI缩放行为打钩
云锁安装 及 自编译nginx防护模块
【安装云锁】
cd /usr/local/src
- 下载安装包:
wget http://download.yunsuo.qianxin.com/v3/yunsuo_agent_64bit.tar.gz
- 解压:
tar zxvf yunsuo_agent_64bit.tar.gz
- 添加可执行权限:
chmod +x yunsuo_install/install
- 安装:
yunsuo_install/install
- 添加到云中心:
/usr/local/yunsuo_agent/agent_smart_tool.sh -u cloud_user -p cloud_passwd
- 查看是否运行:
ps -ef | grep yunsuo_agent
- 操作指令:
service yunsuo start/stop/restart/status
- 卸载:
/usr/local/yunsuo_agent/uninstall
批量获取或更新数据库中的业务数据脚本
mysql_bat.php
用于获取线上数据库中的数据或批量更新数据库中的数据。
<?php
//演示脚本 用于查询线上系统数据库问题
$dbs = ['x001', 'x002', 'x003'];
file_put_contents('mysql_bat.txt', '');
foreach ($dbs as $v) {
$mysql_conf = array('host' => 'localhost', 'db' => $v, 'db_user' => 'xxx', 'db_pwd' => 'xxx');
$mysqli = new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);
$mysqli->query("set names 'utf8';");//编码转化
$select_db = mysqli_select_db($mysqli, $mysql_conf['db']);
if ($select_db) {
//查询律所部门名称
$deptName = $configName = '';
$sql1 = "select name from {$v}.lawfirm_dept where id=1;";
$res1 = $mysqli->query($sql1);
while ($row = $res1->fetch_assoc()) {
$deptName = $row['name'];
}
file_put_contents('mysql_bat.txt', '[new] '.$deptName.PHP_EOL, FILE_APPEND);
$res1->free();
$mysqli->close();
}else{
file_put_contents('mysql_bat.txt', '[connect error] '.$v.PHP_EOL, FILE_APPEND);
continue;
}
// sleep(1);
}
清空系统日志、文件脚本
clear_log.sh
批量清空系统日志文件
#!/bin/bash
#---------------------------------------
# 清空访问日志及错误日志(清理前务必保存6个月以上数据)
# author: SenSen 1050575278
# date: 2022/04/14
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
#所在目录
cd /www/wwwlogs/
sysDir=`ls /web/oa`
for f in ${sysDir}
do
echo > ${f}".speaklaw.cn.log"
echo > ${f}".speaklaw.cn.error.log"
echo "${f} done"
done
`clear_file.sh` 批量删除系统中的垃圾文件
#!/bin/bash
#---------------------------------------
# 清理指定文件
# author: SenSen 1050575278
# date: 2021/11/30
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
read -p "Warning! Enter 'y' to continue : " input
#判断是否存在参数,不存在则取消
if [ "$input" == 'y' ] || [ "$input" == 'Y' ]; then
#所在目录
dir='/web/oa/'
#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /web/oa`
#排除目录
excluded=()
for f in ${sysDir}
do
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
#排除指定目录
if [[ ${excluded[@]/${f}/} != ${excluded[@]} ]]; then
echo "jump"
continue
fi
#进入目录
cd ${dir}${f}
#执行对应操作 务必将要删除的文件路径填写准确
rm -rf public/tmp/*
rm -rf runtime/*
echo "${curtime} ${f} done"
done
else
echo "Error: invalid input"
fi