环境说明:centos7 , jdk1.8 , tomcat8 , mysql5.7
192.168.1.252 为需要备份数据的远程服务器
参考文章:
CentOS之间rsync做文件增量(备份)同步 - silianpan的个人空间 - OSCHINA - 中文开源技术交流社区
一、调优
1.tomcat调优

2.mysql调优
修改/etc/my.cnf 添加如下内容(链接数量什么的没改,100用户的小项目,原则是真的不够再加)
wait_timeout=600 #链接保持时间10分钟,看有得文章设置的比较小,取中了下。默认是8小时
interactive_timeout=600
#要同时设置interactive_timeout和wait_timeout才会生效。
max_allowed_packet=100M #一次提交入库的大小,默认是4M
innodb_buffer_pool_size=1000M #缓冲池大小,默认是128M
show variables like "%timeout%";
show processlist;
二、备份
2.1、异地备份整体说明
1.在192.168.1.252上定时备份本地数据库。
2.在备份服务器上通过rsync定时把252上的附件和数据库备份文件,同步到备份服务器。
2.2、自动备份数据库(252上执行)
1.编写数据库备份脚本 vi /home/mysql_backup.sh #可自定义路径文件名
#!/bin/bash
db_user="root"
db_passwd="password"
db_name="rxisip_db"
#备份目录
backup_dir="/home/backup/bakmysql"
cd $backup_dir
#时间格式
time=$(date +"%Y-%m-%d")
#mysql 备份的命令,注意有空格和没有空格
mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"-"$time.sql"
echo "your database backup successfully completed"
#这里将7天之前的备份文件删掉
SevenDays=$(date -d -7day +"%Y-%m-%d")
if [ -f /home/backup/bakmysql/$db_name-$SevenDays.sql ]
then
rm -rf /home/backup/bakmysql/$db_name-$SevenDays.sql
echo "you have delete 7days ago bak sql file "
else
echo "7days ago bak sql file not exist "
echo "bash complete"
fi
2.授权 chmod 777 /home/mysql_backup.sh
3.创建备份文件夹 mkdir /home/backup/bakmysql
3.尝试运行 ./ mysql_backup.sh #查看有没有执行成功 -在home 目录下执行
若提是找不到mysqldump命令,需要做个软链接
find / -name mysqldump -print //找到文件名称为mysql的文件
ln -fs /usr/local/mysql/bin/mysqldump /usr/bin //填写上面命令找到的路径
2.3、在备份服务器,设置免密登录远程服务器
192.168.1.252为远程服务器地址
ssh-keygen -t rsa #一路回车
ssh-copy-id root@192.168.1.252 #yes 输入远程服务的链接密码
ssh root@192.168.1.252 #尝试免密登录远程服务器
exit #退出链接
2.3.1 配置失败的情况
记录一个免密配置失败的情况,服务器是甲方网管给的虚机,用户是osadmin,但有root权限,登录后whoami 显示是root. su - osadmin 切换不了用户(这里体现出自己对Linux的设置不熟了),用chowm osadmin:osadmin 也修改不了.ssh文件夹的所有者。生成密钥对呢也是生成在/root/.ssh下面
执行如下命令:
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub osadmin@[IP]
ssh osadmin@[ip]
#提示要输入密码
百度了N久,最后定位归结到strictModes这个配置项,默认是yes,意思是必需保证存放公钥的文件夹的拥有与登陆用户名是相同的。“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。
这个情况很符合,正常来说需要是yes状态,但改不过来,只好修改这个配置项了。
在被连接的服务器上 vi /etc/ssh/sshd_config 修改:
#StrictModes yes 为 StrictModes no
重启ssh service sshd restart
重试免密登录就可以了!
2.4、在备份服务器,配置远程同步文件
yum -y install rsync
两台服务器上都需要安装 rsync
1.创建一个备份文件夹 mkdir /home/backup/ #可自定义路径文件名
2.创建日志文件 vi /home/rsync.log #可自定义路径文件名
3.创建数据库通报日志文件 vi /home/rsync_sql.log #可自定义路径文件名
4.编写备份脚本 vi /home/auto_rsync.sh #可自定义路径文件名
rsync -vzrtopg --progress --delete -e 'ssh -p 22' root@192.168.1.252:/opt/upload_files /home/backup/ 1> /home/rsync.log 2>&1
rsync -vzrtopg --progress --delete -e 'ssh -p 22' root@192.168.1.252:/home/backup/bakmysql /home/backup/ 1> /home/rsync_sql.log 2>&1
5.chmod 777 /home/auto_rsync.sh #授权,赋予个执行权限就够了,不用777
6.尝试运行 ./auto_rsync.sh #在备份脚本同一目录执行,验证备份脚本有没有成功
7.若没有成功查看相应log文件即可,有些是权限问题。
2.5、设置定时执行
crontab -e #以vi文本编辑的方式编辑定时任务
在252上,数据库每天晚上23点30分执行备份
30 23 * * * cd /home/ && ./mysql_backup.sh
在备份服务器每天晚上23点45分同步文件
45 23 * * * cd /home/ && ./auto_rsync.sh
三、其他有用的指令
top 查看进程 , 按大写的M 可以查看固定内存使用高的进程(不会动来董去) 小写的q 退出。
free -m 查看内存使用情况
tar -zcvf file.tar.gz filepath/ //压缩
tar -zxvf file.tar.gz //解压tar.gz