![夜间备份和服务器性能](https://linux22.com/image/572427/%E5%A4%9C%E9%97%B4%E5%A4%87%E4%BB%BD%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%80%A7%E8%83%BD.png)
在某个时间我们运行一些备份脚本来备份:
- 代码/文件
- 数据库
- 服务器上的其他重要文件
在此期间,服务器上的网站陷入停滞状态,出现超时和数据库连接问题。
所以,我想我做错了。在不影响服务器上网站性能的情况下执行夜间备份的最佳方法是什么?
操作系统:Centos 应用程序:MySQL、Rsync
备份到远程服务器。
答案1
由于备份操作,磁盘和 CPU 以及网络资源可能存在争用,因此您的网站没有响应。为了避免这种情况,您必须降低备份操作的 io 和 CPU 优先级,以便您的网站可以正常运行。
您可以在调用备份脚本之前使用它。
root@x:~# bash
root@x:~# echo $BASHPID
6576
BASHID 变量是当前 bash 会话的 PID
root@x:~# ionice -c 2 -n 7 -p $BASHPID
这会降低当前 shell 的磁盘 io 优先级
-c = 类别(0 无、1 实时、2 尽力而为、3 空闲)
-n = 优先级(0-7,0 为最高优先级)
root@x:~# renice +10 -p $BASHPID
这将降低当前 shell 的 CPU 调度优先级(-19 为最高优先级,20 为最低优先级)
root@x:~# ./backup-script
现在您可以从这里调用您的备份脚本。由于子进程从父进程继承了 CPU 和 IO 优先级,因此您的备份脚本进程将以较低的 IO、CPU 优先级运行,因此您的服务器进程优先于备份。
如果您正在使用 cron 作业,您可以将所有上述命令放在一个文件中,chmod 获得 x 权限,然后将该文件添加到 cron。
如果网络出现瓶颈,您可能必须使用“tc”对备份流量进行分类并对其进行速率限制。您可以在此处阅读有关速率限制的信息。 http://wiki.openvz.org/Traffic_shaping_with_tc
答案2
如果不知道涉及什么操作系统、应用程序、文件系统和备份媒体,就很难回答。
在没有任何可用信息的情况下,我的答案是:rsync