Linux运维工程师工作手册.docx

上传人:b****5 文档编号:29524399 上传时间:2023-07-24 格式:DOCX 页数:20 大小:34.04KB
下载 相关 举报
Linux运维工程师工作手册.docx_第1页
第1页 / 共20页
Linux运维工程师工作手册.docx_第2页
第2页 / 共20页
Linux运维工程师工作手册.docx_第3页
第3页 / 共20页
Linux运维工程师工作手册.docx_第4页
第4页 / 共20页
Linux运维工程师工作手册.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Linux运维工程师工作手册.docx

《Linux运维工程师工作手册.docx》由会员分享,可在线阅读,更多相关《Linux运维工程师工作手册.docx(20页珍藏版)》请在冰豆网上搜索。

Linux运维工程师工作手册.docx

Linux运维工程师工作手册

Linux运维工程师工作手册

释放内存:

sync

echo3>/proc/sys/vm/drop_caches

Linux查看Dell服务器型号

命令:

dmidecode|grep"ProductName"

查看系统负载:

cat/proc/loadavg

1/28310904

283是代表

意思是:

前三个是系统负载,1/283中,1代表此时运行队伍中的进程个数,而此时的进程总数

10904到此为止,最后创建的一个进程ID。

系统装好后,要做的事如下:

关闭防火墙Selinux:

vim/etc/selinux/config

把SELINUX=enforcing改成SELINUX=disabled

更改主机名:

vim/etc/sysconfig/network

修改主机名,不要用localhost

添加hosts主机记录

vim/etc/hosts中,在后面,添加自己的主机名

创建0-9a-z目录

foriin`seq09`{a..z};domkdir-p$i;done:

测试硬盘性能工具:

iozone

监视服务器每少上下文切换数次工具:

Nmon(很不错的性能监视工具)

#占用内存大小前10的进程ps-eocomm,size--sort-size|head-10#占用cpu使用前10的进程ps-eocomm,pcpu--sort-pcpu|head-10

一、Apache服务优化:

2

1.配置cronolog进行日志轮询22.错误页面优雅显示2文件压缩功能3缓存功能4

5.更改apache的默认用户5模式,提升并发数(可以达到2000-5000)5

7.屏蔽apache版本等敏感信息6目录文件权限设置(root,目录755,文件644)6

9.开启增加连接数6

10.apache防盗链功能8

11.禁止目录Index8

12.禁止用户覆盖(重载)8

13.关闭CGI9

14.避免使用.htaccess文件(分布式配置文件)9

15.apache的安全模块9

16.正确途径取得源代码,勤打apache补丁10日志授予root700权限10

18.系统内核参数优化10

19.禁止PHP解析指定站点的目录10

20.使用tmpfs文件系统替代频繁访问的目录11

21尽可能减少HTTP请求数11

22使用CDN做网站加速12

查看你的服务器网络连接状态netstat-n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'

◆CLOSED:

无连接是活动的或正在进行

◆LISTEN:

服务器在等待进入呼叫

◆SYN_RECV:

一个连接请求已经到达,等待确认

◆SYN_SENT:

应用已经开始,打开一个连接

◆ESTABLISHED:

正常数据传输状态

◆FIN_WAIT1:

应用说它已经完成

◆FIN_WAIT2:

另一边已同意释放

◆ITMED_WAIT:

等待所有分组死掉

◆CLOSING:

两边同时尝试关闭

◆TIME_WAIT:

另一边已初始化一个释放

◆LAST_ACK:

等待所有分组死掉

ESTABLISHED的值其实也是当前的并发数,这个可重点关注下;另外,可关注下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'{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~]#mkdir/server/bak-p[root@oldboy~]#mysqldump-uroot-p'oldboy123'oldboy>/server/babackup/bak/

[root@oldboy~]#mysqldump-uroot-p'oldboy123'oldboy>/server/bak/[root@oldboy~]#mysqldump-uroot-p'oldboy123'oldboy|gzip>/server/bak/[root@oldboy~]#ls-l/server/bak/

total8

-rw-r--r--1rootroot1991Apr900:

51

-rw-r--r--1rootroot801Apr900:

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'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'钥佺敺瀛),(11,'鎴);<==这里是乱码,是因为导出时的格式没加字符集,而系统当前字符集又是格式,一般恢复到数据库里会正常,只是系统外查看不正常而已。

另外insert是批量插入的方式,这样在恢复时效率很高。

UNLOCKTABLES;

提示:

看到了吧,就是我们曾经插入的表和数据。

[root@oldboy~]#mysqldump-uroot-p'oldboy123'oldboy--default-character-set=gbk>/server/bak/[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'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'老男孩'),(11,'我');<==。

其他乱码是当初插入时就有问题的。

UNLOCKTABLES;

备份多个库

[root@oldboy~]#mysqldump-uroot-p'oldboy123'-Boldboymysql--default-character-set=gbk>/server/bak/

提示:

-B参数是关键,表示接多个库。

※※※※※(生产环境常用)

-B,--databasesTodumpseveraldatabases.Notethedifferenceinusage;

Inthiscasenotablesaregiven.Allnameargumentsareregardedasdatabasenames.'USEdb_name;'willbeincludedintheoutput.

参数说明:

该参数用于导出若干个数据库,在备份结果中会加入USEdb_name和

CREATEDATABASE`db_name`;

-B后的参数都将被作为数据库名。

该参数比较常用。

当-B后的数据库列全时同-A参数。

看-A的说明。

备份单个表

mysqldump-u用户名-p数据库名表名>备份的文件名

mysqldump-uroot-poldboytest>

执行结果:

[root@oldboy~]#mysqldump-uroot-p'oldboy123'oldboytest--default-character-set=gbk>/server/bak/

提示:

无-B参数,库oldboy后面就是test表了。

备份多个表

[root@oldboy~]#mysqldump-uroot-p'oldboy123'oldboytestett--default-character-set=gbk>/server/bak/

[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'),(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和mysqldump同学们要详细总结。

5恢复数据库source命令恢复

进入mysql数据库控制台,mysql-uroot-p

mysql>use数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)mysql>source#这个文件是系统路径。

[root@oldboybak]#mysql-uroot-p'oldboy123'WelcometotheMySQLmonitor.Commandsendwith;or\g.

...skip...

Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.

mysql>useoldboy

Databasechangedmysql>showtables;

++

|Tables_in_oldboy|

++

|ett|

|test|

++

2rowsinsetsec)

mysql>droptablestest;

QueryOK,0rowsaffectedsec)

mysql>systemls.

mysql>source./<==还是用第一版没加字符集的备份,就是备份后查看乱码的备份。

QueryOK,0rowsaffectedsec)

...skip...

QueryOK,0rowsaffectedsec)

Q...skip...

QueryOK,0rowsaffectedsec)mysql>select*fromtest;

+++

|id|name|

+++

|1|zhaoyue|

|2|jesse|

|4|elain|

|5|wodi|

|6|yingsui|

|7|zhangyang|

|8|zaixiangpan|

|9||

|10||<==乱码

|11||

+++

10rowsinsetsec)

mysql>setnamesgbk;

QueryOK,0rowsaffectedsec)

mysql>select*fromtest;

+++

|id|name|

+++

|1|zhaoyue|

|2|jesse|

|4|elain|

|5|wodi|

|6|yingsui|

|7|zhangyang|

|8|zaixiangpan|

|9||

|10|老男孩|<==仍然是正常的,就是说备份不加字符集导出,将来恢复不会影响恢复的数据,但是备份后查看文件会乱码。

|11|我|

+++

10rowsinsetsec)

mysql命令恢复(标准)

mysql-uoldboy-p'oldboy'oldboysystemmysql-uroot-p'oldboy123'oldboy<<==导入的是备份时加字符集的版本。

mysql>select*fromtest;

+++

|id|name|

+++

|1|zhaoyue|

|2|jesse|

|4|elain|

|5|wodi|

|6|yingsui|

|7|zhangyang|

|8|zaixiangpan|

|9||

|10|老男孩|<==因为上文source导入时已经setnamesgbk了,所以此处不是乱码。

|11|我|

+++

10rowsinsetsec)

引擎备份

由于MyISAM引擎为表级锁,因此,在备份时需要防止在备份期间数据写入而导致不一致,所以,在备份时使用--lock-all-tables加上读锁

mysqldump-A-F-B--lock-all-tables|gzip>/data/backup/$(date+%F).

特别提示:

有关MyISAM和InnoDB引擎的差别和在工作中如何选择,在前面的文章已经详细讲解过了,这里就不在讲了。

引擎备份

InnoDB引擎为行锁,因此,备份时可以不对数据库加锁的操作,可以加选项--single-transaction进行备份:

mysqldump-A-F-B--single-transaction|gzip>/data/backup/$(date+%F).

特别注意:

1)--single-transaction仅适用于InnoDB引擎。

生产环境mysqldump备份命令

mysqldump–uroot–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–p<

还原增备:

mysql–uroot–p<(恢复增备的时候,需要把误操作的语句删掉后,再还原,否则,还原后,还是会和误操作后一样)

基于时间点的增量恢复mysqlbinlog–start-datetime='2011-03-1902:

58:

54'—stop-datetime='20-0131-1903:

22:

44'r–

上面语句将显示02:

58:

542011-03-1903:

22:

44时间段的binlog,并输出到

拽定开始时间到文件结束

mysqlbinlog–start-datetime='2011-03-1902:

58:

54'd–oldboy–r这个语句只有开始时间,那么就是从2011-03-1902:

58:

54时刻到日志结尾,lodboy数据

库的binlog输出到

基于位置点的增量恢复指定开始位置和结束位置

mysqlbinlog–start-position=510–stop-position=1312–r输出初始位置510,结束位置1312的所有binlog日志到注意:

结尾的日志点细弱特殊不会被包含。

即输出1312pos以前的binlog。

指定开始位置到文件结束

mysqlbinlog–start-position=510–r

输出初始位置510,结束位置到文件结尾的所有binlog到。

当然,你也可以指定库名输出binlog。

如:

mysqlbinlog--start-position=510–r–doldboy从文件开头到指定结束位置

mysqlbinlog--stop-position=954-r输出从文件开始位置,到954位置截止的所有binlog掌握和查找打开的文件lsof(列出打开的文件)实用程序会显示打开的文件名。

其选项仅显示某些进程,只有一个进程的某些文件描述符,或只有某些网络连接(网络连接使用文件描述符,就像普通文件一样,lsof也显示这些)。

使用ps–ef确定了可疑进程后,输入以下命令:

#lsof-s-ppid服务器最大设置的连接数:

151mysql>showvariableslike'max_connections';

+++

|Variable_name|Value|

+++

|max_connections|151|

+++

1rowinsetsec)服务器响应的最大连接数:

152mysql>showglobalstatuslike'Max_used_connections';

+++

|Variable_name|Value|+++

|Max_used_connections|152|+++

1rowinsetsec)查看服务器key_buffer_size数值:

4mysql>showvariableslike'key_buffer_size';

+++

|Variable_name|Value|+++

|key_buffer_size|4|

+++

1rowinsetsec)

查看服务器现在使用的key_buffer_size使用情况:

key_read_requests:

4

key-reads:

830525mysql>showglobalstatuslike'key_read%';

+++

|Variable_name|Value|+++

|Key_read_requests|4||Key_reads|830525|+++

2rowsinsetsec)计算索引未命中的概率:

key_cache_miss_rate=key_reads/key_read_requests*100%

key_cache_miss_rae

达到%以下(即每1000个请求有一个直接读硬盘)以下都很好,如果在%以下的话,则说明key_buffer_size分配得过多,可以适当减少。

Key_blocks_unused表示未使用的缓存簇数,Key_blocks_used表示曾经用到的最大的blocks数,比如这台服务器,所有的缓存都用到了,要么增加key_buffer_size,要么就是过度索引,把缓存占满了。

比较理想的设置是:

key_blocks_used/(key_blocks_unused+key_blocks_used)*100%=80%

mysql>showglobalstatuslike'key_blocks_u%';

+++

|Variable_name|Value|

+++

|Key_blocks_unused|317003|

|Key_blocks_used|6439|

+++

2rowsinsetsec)

临时表:

当执行语句时,关于已经被创造了的隐含临时表的数量,我们可以用如下命令查询其具体情况:

mysql>showglobalstatuslike'created_tmp%';

+++

|Variable_name|Value|

+++

|Created_tmp_disk_tables|343326|

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1