Linux运维工程师工作手册.docx
- 文档编号:4717859
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:30
- 大小:26.07KB
Linux运维工程师工作手册.docx
《Linux运维工程师工作手册.docx》由会员分享,可在线阅读,更多相关《Linux运维工程师工作手册.docx(30页珍藏版)》请在冰豆网上搜索。
Linux运维工程师工作手册
Linux运维工程师工作手册
释放内存:
syncecho3>/proc/sys/vm/drop_caches
Linux查看Dell服务器型号命令:
dmidecode|grep"ProductName"
查看系统负载:
cat/proc/loadavg
1/28310904
意思是:
前三个是系统负载,1/283中,1代表此时运行队伍中的进程个数,而283是代表
此时的进程总数
10904到此为止,最后创建的一个进程
ID。
系统装好后,要做的事如下:
关闭防火墙Selinux:
vim/etc/selinux/config
把SELINUX=enforcing改成SELINUX=disabled
更改主机名:
vim/etc/sysconfig/network
修改主机名,不要用localhost
添加
hosts主机记录
vim
创建
0-9a-z目录
/etc/hosts中,在后面,添加自己的主机名
for
iin'seq09'{a..z};domkdir-p$i;done:
测试硬盘性能工具:
iozone
#占用内存大小前10的进程
ps-eocomm,size--sort
-size|
head
-10
#占用cpu使用前10的进程
ps-eocomm,pcpu--sort
-pcpu|
head
-10
、Apache服务优化:
2
1.配置cronolog进行日志轮询
2.错误页面优雅显示2
文件压缩功能3
缓存功能4
5.更改apache的默认用户5
模式,提升并发数(可以达到2000-5000)
7.屏蔽apache版本等敏感信息6
目录文件权限设置(root,
目录755,文件
644)
10
11
9.开启增加连接数6
10.apache防盗链功能
11.禁止目录Index8
12.禁止用户覆盖(重载)
13.关闭CGI9
14.避免使用.htaccess文件(分布式配置文件)
15.apache的安全模块916.正确途径取得源代码,勤打apache补丁日志授予root700权限1018.系统内核参数优化10
19.禁止PHP解析指定站点的目录1020.使用tmpfs文件系统替代频繁访问的目录
21尽可能减少HTTP请求数11
查看你的服务器网络连接状态
netstat-n|awk"tcp/{++S[$NF]}END{for(ainS)printa,S[a]}
♦CLOSED无连接是活动的或正在进行
♦LISTEN:
服务器在等待进入呼叫
♦SYN_REC:
V一个连接请求已经到达,等待确认♦SYN_SEN:
T应用已经开始,打开一个连接♦ESTABLISHED正常数据传输状态
♦FINWAIT1:
应用说它已经完成♦FINWAIT2:
另一边已同意释放
♦ITMEDWAIT等待所有分组死掉
♦CLOSING两边同时尝试关闭
♦TIME_WAIT另一边已初始化一个释放
♦LASTACK等待所有分组死掉
ESTABLISHE啲值其实也是当前的并发数,这个可重点关注下;另外,可关注下TIME――WAIT
这项的数值。
Linux下高并发的Squid服务器,TCPTIME_WAIT套接字数量经常达到两、
万,服务器很容易被拖死。
通过修改Linux
内核参数,可以减少Squid
服务器的TIME_WAIT
套接字数量。
#查看系统本地可用端口极限值
cat/proc/sys/net/ipv4/ip_local_port_range
寻找恶意IP并用iptables
禁止掉
netstat-an|grep:
80
|grep-v
|awk'{print$5
}'
|sort|awk
-F:
'{print$1,$4}'|
uniq-c|
awk'$1>50{print
$1,$2}'
备份单个数据库
mysqldump-u用户-p’密码'--default-character-set=latin1
数据库
名>备份文件名(数据库默认编码是latin1)
普通备份:
mysqldump-uroot
-p'oldboy123'
oldboy
>/server/bak/
压缩备份:
mysqldump-uroot
-p'oldboy123'
oldboy
|gzip>/server/bak/
设置字符集备份:
mysqldump-uroot
-p'oldboy123'
oldboy
--default-character-set=gbk
|gzip>
/server/bak/
[root@oldboy
~]#
ls
-l
/server/bak/
执行结果:
[root@oldboy
~]#
mkdir/server/bak
-p
[root@oldboy
~]#
mysqldump
-uroot
-p'oldboy123'
oldboy
>/server/ba
backup/bak/
[root@oldboy
~]#
mysqldump
-uroot
-p'oldboy123'
oldboy
>/server/bak/
[root@oldboy
~]#
mysqldump
-uroot
-p'oldboy123'
oldboy
|gzip>/server/
bak/
total8
-rw-r--r--
root
root
1991Apr
900:
51
-rw-r--r--
root
root
801Apr
900:
51
mysqldump在做啥
mysqldump实际上就是把数据从
mysql库里以逻辑的sql
语句的形式导出。
备份的数据过滤掉注释:
[root@oldboy~]#egrep-v
"\*卜-|人$"
/server/bak/
DROPTABLEIFEXISTS'test';
CREATETABLE'test'(
'id'int(4)NOTNULLAUTO_INCREMENT,
'name'char(20)NOTNULL,
PRIMARYKEY('id'))ENGINE=MyISAMAUTO_INCREMENT=12DEFAULTCHARSET=gbk;
LOCKTABLES'test'WRITE;
INSERTINTO'test'VALUES(1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),
鑰佺敺瀛),(11,'
(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'
鎴);<==这里是乱码,是因为导出时的格式没加字符集,而系统当前字符集又是格式,一
insert是批量插入的方式,
般恢复到数据库里会正常,只是系统外查看不正常而已。
另外这样在恢复时效率很高。
UNLOCKTABLES;
提示:
看到了吧,就是我们曾经插入的表和数据。
[root@oldboy
~]#mysqldump-uroot-p'oldboy123'oldboy--default-characte
r-set=gbk>
/server/bak/
[root@oldboy
~]#egrep-v"\*卜-|人$”
/server/bak/
DROPTABLE
IFEXISTS'test';
CREATETABLE'test'(
'id'int(4)NOTNULLAUTO_INCREMENT,
'name'char(20)NOTNULL,
PRIMARYKEY('id'))ENGINE=MyISAMAUTO_INCREMENT=12DEFAULTCHARSET=gbk;
LOCKTABLES'test'WRITE;
INSERTINTO'test'VALUES(1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),
老男孩'),(11,'
(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'
');<==。
其他乱码是当初插入时就有问题的。
UNLOCKTABLES;
备份多个库
[root@oldboy~]#mysqldump-uroot-p'oldboy123'
-Boldboymysql
--defau
lt-character-set=gbk
>/server/bak/
提示:
-B参数是关键,表示接多个库。
※※※※※(生产环境常用)
nce
ven.
-B,
in
All
--databases
usage;
db_
Todumpseveraldatabases.Notethe
nameargumentsare
name;'willbe
differe
Inthis
regarded
included
casenotables
aregi
as
in
databasenames.
'USE
theoutput.
USEdb_name和
参数说明:
该参数用于导出若干个数据库,在备份结果中会加入
CREATEDATABASE'db_name';
-B后的数据库列全
-B后的参数都将被作为数据库名。
该参数比较常用。
时同-A参数。
请看-A的说明。
备份单个表
mysqldump-u
用户名-p数据库名表名>备份的文件名
mysqldump-u
root
-poldboytest>
执行结果:
[root@oldboy
~]#
mysqldump-uroot-p'oldboy123'
oldboy
aracter-set=gbk
>
/server/bak/
提示:
无-B参数,库
oldboy后面就是test
表了。
test
--default-ch
[root@oldboy~]#
mysqldump-uroot
-p'oldboy123'
lt-character-set=gbk
>
/server/bak/
[root@oldboy~]#
egrep
-v"\*卜-|人$”
/server/bak/
DROPTABLEIF
EXISTS
'test';
CREATETABLE'test'(
备份多个表
oldboytest
'id'int(4)NOTNULLAUTO_INCREMENT,
ett--defau
'name'char(20)NOTNULL,
PRIMARYKEY('id')
)ENGINE=MyISAMAUTO_INCREMENT=12DEFAULTCHARSET=gbk;
LOCKTABLES'test'WRITE;
INSERTINTO'test'VALUES(1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),
(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'
老男孩'),(11,'我');
UNLOCKTABLES;
DROPTABLEIFEXISTS'ett';
CREATETABLE'ett'(
'id'int(11)DEFAULTNULL
)ENGINE=MyISAMDEFAULTCHARSET=gbk;
LOCKTABLES'ett'WRITE;
UNLOCKTABLES;
备份数据库结构(不包含数据)
mysqldump-uroot
-d-p'oldboy'oldboyoldboy>
-d只备份表结构
[root@oldboy~]#
mysqldump-uroot-p'oldboy123'
-doldboy>/tmp/
[root@oldboy~]#
egrep-v"\*卜-|人$”
/tmp/
DROPTABLEIFEXISTS'ett';
CREATETABLE'ett'(
'id'int(11)DEFAULTNULL)ENGINE=MyISAMDEFAULTCHARSET=gbk;
DROPTABLEIFEXISTS'test';
CREATETABLE'test'(
'id'int(4)NOTNULLAUTO_INCREMENT,
'name'char(20)NOTNULL,
PRIMARYKEY('id'))ENGINE=MyISAMAUTO_INCREMENT=12DEFAULTCHARSET=gbk;
更多用法可以执行mysqldump-help查询。
有关mysql和mysqidump同学们要详细
总结。
5恢复数据库
source命令恢复进入mysql数据库控制台,mysql-uroot-pmysql>use数据库
.sql)
然后使用source命令,后面参数为脚本文件(如这里用到的
mysql>source
#这个文件是系统路径。
[root@oldboy
bak]#mysql-uroot
-p'oldboy123'
Welcometo
theMySQLmonitor.
Commandsend
with
or\g.
...skip...
Type'help;'
or'\h'
for
help.
Type'\c'to
clearthecurrentinput
statement.
mysql>use
oldboy
Databasechangedmysql>showtables;
|Tables_in_oldboy||ett|test
2rowsinset
sec)
mysql>
droptables
test;
Query
OK,0rows
affected
sec)
mysql>
systemls
mysql>
source./
<==还是用第一版没加字符集的备份
Query
OK,0rows
affected
sec)
...skip...
Query
OK,0rows
affected
sec)
Q...skip.
..
Query
OK,0rows
affected
sec)
mysql>
select*fromtest;
++
+
|id
|name
|
++
+
|1
|zhaoyue
|
|2
|jesse
|
|4
|elain
|
|5
|wodi
|
|6
|yingsui
|
|7
|zhangyang
|
|8
|zaixiangpan|
|9
|
|
|10
|
|<==
乱码
|11
|
|
++
+
10rowsinset
sec)
mysql>
setnames
gbk;
,就是备份后查看乱码的备份。
mysql>select
from
test;
++|id|name
++
zhaoyuejesseelainwodiyingsuizhangyangzaixiangpan
10|老男孩
|<==仍然是正常的,就是说备份不加字符集导出,将来恢
复不会影响恢复的数据,但是备份后查看文件会乱码。
|11|我
++
10rowsinsetsec)
mysql命令恢复(标准)
mysql-uoldboy-p'oldboy'
oldboy<
mysql>systemmysql-uroot
-p'oldboy123'oldboy<<==导入
的是备份时加字符集的版本。
mysql>select
from
test;
++|id|name
++
zhaoyuejesseelainwodiyingsuizhangyang
8|zaixiangpan
10|老男孩
|<==因为上文source导入时已经setnamesgbk了,所
以此处不是乱码。
|11|我
++
10rowsinset
sec)
MylSAM引擎备份
加上读锁
由于MylSAM引擎为表级锁,因此,在备份时需要防止在备份期间数据写入而导致
不一致,所以,在备份时使用--lock-all-tables
mysqldump-A-F-B--lock-all-tables
|gzip>/data/backup/$(date
+%F).
特别提示:
有关MylSAM和InnoDB引擎的差别和在工作中如何选择,在前面的文章已经详细讲解过了,这里就不在讲了。
lnnoDB引擎备份
lnnoDB引擎为行锁,因此,备份时可以不对数据库加锁的操作,可以加选项
--single-transaction
进行备份:
mysqldump-A-F
-B--single-transaction
|gzip>/data/backup/$(date
+%F).
特别注意:
1)--single-transaction
仅适用于lnnoDB引擎。
生产环境mysqldump备份命令
mysqidump-u
root-p-S/data/3306/
-default-character-set=gbk
single-transaction
-F-Boldboy|gzip>
/server/backup/mysql_$(date
+%F).
:
注
-F:
刷新bin-log
参数,数据库备份完以后,会刷新
bin-log
增量备份:
更新bin-log:
mysqladmin-uroot-p-S/data/3306/flush-logs
如生成文件
把生成的最新文件,CP到/var/backup/
把二进制的日志生成sql语句:
mysqlbinlog>
如果有多个库,我们应该用-d来指定恢复单个库
mysqlbinlog
-doldboy>
(当然对于库也要分库备,否则恢复还是麻烦)
还原数据:
先还原全备,再还原增备
先还原全备:
mysql-uroot
还原增备:
mysql-uroot-p
<(恢复增备的时候,需要把误操作的语句删掉后,
再还原,否则,还原后,还是会和误操作后一样)
基于时间点的增量恢复
mysqlbinlog
-start-datetime=
2011-03-1902:
58:
54'—stop-datetime='2011-03-1903:
22:
44'-r
面语句将显示02:
58:
542011-03-19
03:
22:
44时间段的binlog,并输出到
拽定开始时间到文件结束
mysqlbinlog
-start-datetime=
2011-03-1902:
58:
54'-doldboy-r
这个语句只有开始时间,那么就是从2011-03-1902:
58:
54时刻到日志结尾,lodboy数据库的binlog输出到基于位置点的增量恢复
指定开始位置和结束位置
mysqlbinlog
-start-position=510
-stop-position=1312
输出初始位置510,结束位置1312的所有binlog日志到
注意:
结尾的日志点细弱特殊不会被包含。
即输出
1312pos以前的binlog。
指定开始位置到文件结束
mysqlbinlog
-start-position=510
输出初始位置
510,结束位置到文件结尾的所有binlog到。
当然,你也可以指定库名输出
binlog。
如:
mysqlbinlog
--start-position=510
-r-doldboy
从文件开头到指定结束位置
mysqlbinlog
--stop-position=954
-r
输出从文件开始位置,到
954位置截止的所有binlog
掌握和查找打开的文件
lsof(列出打开的文件)
实用程序会显示打开的文件名。
其选项仅显示某些进程,只有一个
进程的某些文件描述符,
或只有某些网络连接(网络连接使用文件描述符,就像普通文件一
样,lsof也显示这些)。
使用ps
ef确定了可疑进程后,输入以下命令:
#lsof-s-ppid
服务器最大设置的连接数:
151
mysql>showvariables
like'max_connections';
++
|Variable_name
Value|
++
|max_connections
151
++
1rowinset
sec)
服务器响应的最大连接数:
152
mysql>showglobalstatus
like
'Max_used_connections';
++
|Variable_name
Value|
++
|Max_used_connections
152
++
1rowinsetsec)
查看服务器key_buffer_size
数值:
4
mysql>showvariables
like'key_buffer_size';
|Variable_name
Value
|key_buffer_size|1rowinsetsec)
key_read_requests:
key-reads:
8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 工程师 工作手册