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

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

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

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

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

Linux运维工程师工作手册

Linux运维工程师工作手册

释放内存:

sync

echo?

3?

>?

/proc/sys/vm/drop_caches

?

Linux查看Dell服务器型号

命令:

dmidecode?

|?

grep?

"Product?

Name"

查看系统负载:

cat?

/proc/loadavg

0.0?

?

0.00?

0.00?

1/283?

10904

意思是:

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

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

?

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

关闭防火墙Selinux:

vim?

/etc/selinux/config

把SELINUX=enforcing改成SELINUX=disabled

更改主机名:

vim?

/etc/sysconfig/network

修改主机名,不要用localhost

添加hosts主机记录

vim?

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

?

创建0-9?

a-z目录

for?

i?

in?

`seq?

0?

9`?

{a..z};do?

mkdir?

-p?

$i;done:

?

测试硬盘性能工具:

iozone

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

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

?

#占用内存大小前10的进程

ps?

-eo?

comm,size?

--sort?

-size?

|?

head?

-10?

#占用cpu使用前10的进程

ps?

-eo?

comm,pcpu?

--sort?

-pcpu?

|?

head?

-10?

?

?

一、Apache服务优化:

?

2

1.配置cronolog进行日志轮询?

2

2.错误页面优雅显示?

2

3.mod_deflate文件压缩功能?

3

4.mod_expires缓存功能?

4

5.更改apache的默认用户?

5

6.worker模式,提升并发数(可以达到2000-5000)?

5

7.屏蔽apache版本等敏感信息?

6

8.apache目录文件权限设置(root,目录755,文件644)?

6

9.开启httpd-mpm.conf?

增加连接数?

6

10.?

apache防盗链功能?

8

11.禁止目录Index?

8

12.?

禁止用户覆盖(重载)?

8

13.关闭CGI?

9

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

9

15.?

apache的安全模块?

9

16.正确途径取得源代码,勤打apache补丁?

10

17.apache日志授予root?

700权限?

10

18.系统内核参数优化?

10

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

10

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

11

21尽可能减少?

HTTP?

请求数?

11

22使用CDN做网站加速?

12

?

?

查看你的服务器网络连接状态

netstat?

-n?

|?

awk?

'/^tcp/?

{++S[$NF]}?

END?

{for(a?

in?

S)?

print?

a,?

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服务器,TCP?

TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。

通过修改Linux内核参数,可以减少Squid服务器的TIME_WAIT套接字数量。

?

#查看系统本地可用端口极限值

cat?

/proc/sys/net/ipv4/ip_local_port_range

?

寻找恶意IP并用iptables禁止掉

?

?

4.5备份单个数据库

mysqldump?

-u?

用户?

–p’密码’?

--default-character-set=latin1?

数据库名?

>?

备份文件名(数据库默认编码是latin1)

普通备份:

mysqldump?

-uroot?

-p'oldboy123'?

oldboy?

>?

/server/bak/oldboy.sql

压缩备份:

设置字符集备份:

执行结果:

[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/oldboy.sql

[root@oldboy?

~]#?

ls?

-l?

/server/bak/

total?

8

-rw-r--r--?

1?

root?

root?

1991?

Apr?

?

9?

00:

51?

oldboy.sql

4.6?

mysqldump在做啥?

mysqldump实际上就是把数据从mysql库里以逻辑的sql语句的形式导出。

备份的数据过滤掉注释:

[root@oldboy?

~]#?

egrep?

-v?

"\*|--|^$"?

/server/bak/oldboy.sql

DROP?

TABLE?

IF?

EXISTS?

`test`;

CREATE?

TABLE?

`test`?

?

?

`id`?

int(4)?

NOT?

NULL?

AUTO_INCREMENT,

?

?

`name`?

char(20)?

NOT?

NULL,

?

?

PRIMARY?

KEY?

(`id`)

)?

ENGINE=MyISAM?

AUTO_INCREMENT=12?

DEFAULT?

CHARSET=gbk;

LOCK?

TABLES?

`test`?

WRITE;

INSERT?

INTO?

`test`?

VALUES?

(1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'钥佺敺瀛),(11,'鎴);?

<==这里是乱码,是因为导出时的格式没加字符集,而系统当前字符集又是zh_cn.gb18030格式,一般恢复到数据库里会正常,只是系统外查看不正常而已。

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

UNLOCK?

TABLES;

提示:

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

[root@oldboy?

~]#?

mysqldump?

-uroot?

-p'oldboy123'?

oldboy?

--default-character-set=gbk?

>?

/server/bak/oldboy-gbk.sql

[root@oldboy?

~]#?

egrep?

-v?

"\*|--|^$"?

/server/bak/oldboy-gbk.sql

DROP?

TABLE?

IF?

EXISTS?

`test`;

CREATE?

TABLE?

`test`?

?

?

`id`?

int(4)?

NOT?

NULL?

AUTO_INCREMENT,

?

?

`name`?

char(20)?

NOT?

NULL,

?

?

PRIMARY?

KEY?

(`id`)

)?

ENGINE=MyISAM?

AUTO_INCREMENT=12?

DEFAULT?

CHARSET=gbk;

LOCK?

TABLES?

`test`?

WRITE;

INSERT?

INTO?

`test`?

VALUES?

(1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'老男孩'),(11,'我');?

<==。

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

UNLOCK?

TABLES;

4.7备份多个库

[root@oldboy?

~]#?

mysqldump?

-uroot?

-p'oldboy123'?

-B?

oldboy?

mysql?

--default-character-set=gbk?

>?

/server/bak/oldboy-gbk-muli.sql

提示:

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

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

?

?

-B,?

--databases?

?

?

?

?

To?

dump?

several?

databases.?

Note?

the?

difference?

in?

usage;

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

In?

this?

case?

no?

tables?

are?

given.?

All?

name?

arguments?

are

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

regarded?

as?

databasenames.?

'USE?

db_name;'?

will?

be

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

included?

in?

the?

output.

参数说明:

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

db_name和CREATE?

DATABASE?

`db_name`;

?

?

?

?

?

?

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

该参数比较常用。

当-B后的数据库列全时?

同?

-A参数。

请看-A的说明。

4.8备份单个表

mysqldump?

-u?

用户名?

-p?

数据库名?

表名>?

备份的文件名

mysqldump?

-u?

root?

-p?

oldboy?

test>?

oldboy_oldboy.sql

执行结果:

[root@oldboy?

~]#?

mysqldump?

-uroot?

-p'oldboy123'?

oldboy?

test?

--default-character-set=gbk?

>?

/server/bak/oldboy-gbk-single.sql

提示:

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

4.9备份多个表

[root@oldboy?

~]#?

mysqldump?

-uroot?

-p'oldboy123'?

oldboy?

test?

ett?

--default-character-set=gbk?

>?

/server/bak/oldboy-gbk-muti-tables.sql

[root@oldboy?

~]#?

egrep?

-v?

"\*|--|^$"?

/server/bak/oldboy-gbk-muti-tables.sql

DROP?

TABLE?

IF?

EXISTS?

`test`;

CREATE?

TABLE?

`test`?

?

?

`id`?

int(4)?

NOT?

NULL?

AUTO_INCREMENT,

?

?

`name`?

char(20)?

NOT?

NULL,

?

?

PRIMARY?

KEY?

(`id`)

)?

ENGINE=MyISAM?

AUTO_INCREMENT=12?

DEFAULT?

CHARSET=gbk;

LOCK?

TABLES?

`test`?

WRITE;

INSERT?

INTO?

`test`?

VALUES?

(1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,''),(10,'老男孩'),(11,'我');

UNLOCK?

TABLES;

DROP?

TABLE?

IF?

EXISTS?

`ett`;

CREATE?

TABLE?

`ett`?

?

`id`?

int(11)?

DEFAULT?

NULL

)?

ENGINE=MyISAM?

DEFAULT?

CHARSET=gbk;

LOCK?

TABLES?

`ett`?

WRITE;

UNLOCK?

TABLES;

4.10备份数据库结构(不包含数据)

mysqldump?

-uroot?

-d?

-p'oldboy'?

oldboy?

oldboy>?

oldboy_oldboy.sql

-d?

只备份表结构

[root@oldboy?

~]#?

mysqldump?

-uroot?

-p'oldboy123'?

-d?

oldboy?

>/tmp/desc.sql?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

[root@oldboy?

~]#?

egrep?

-v?

"\*|--|^$"?

/tmp/desc.sql?

?

?

?

?

?

?

?

?

?

?

?

DROP?

TABLE?

IF?

EXISTS?

`ett`;

CREATE?

TABLE?

`ett`?

?

?

`id`?

int(11)?

DEFAULT?

NULL

)?

ENGINE=MyISAM?

DEFAULT?

CHARSET=gbk;

DROP?

TABLE?

IF?

EXISTS?

`test`;

CREATE?

TABLE?

`test`?

?

?

`id`?

int(4)?

NOT?

NULL?

AUTO_INCREMENT,

?

?

`name`?

char(20)?

NOT?

NULL,

?

?

PRIMARY?

KEY?

(`id`)

)?

ENGINE=MyISAM?

AUTO_INCREMENT=12?

DEFAULT?

CHARSET=gbk;

更多用法可以?

执行?

mysqldump?

–help?

查询。

有关mysql和mysqldump同学们要详细总结。

5恢复数据库

5.1?

source命令恢复

进入mysql数据库控制台,mysql?

-u?

root?

-p

mysql>use?

数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source?

oldboy_db.sql?

#这个文件是系统路径。

[root@oldboy?

bak]#?

mysql?

-uroot?

-p'oldboy123'

Welcome?

to?

the?

MySQL?

monitor.?

?

Commands?

end?

with?

;?

or?

\g.

...skip...

Type?

'help;'?

or?

'\h'?

for?

help.?

Type?

'\c'?

to?

clear?

the?

current?

input?

statement.

?

mysql>?

use?

oldboy

Database?

changed

mysql>?

show?

tables;

+------------------+

|?

Tables_in_oldboy?

|

+------------------+

|?

ett?

?

?

?

?

?

?

?

?

?

?

?

?

?

|

|?

test?

?

?

?

?

?

?

?

?

?

?

?

?

|

+------------------+

2?

rows?

in?

set?

(0.00?

sec)

?

mysql>?

drop?

tables?

test;

Query?

OK,?

0?

rows?

affected?

(0.01?

sec)

?

mysql>?

system?

ls?

.

oldboy-gbk-muli.sql?

?

?

?

?

?

?

?

?

oldboy-gbk-single.sql?

?

oldboy.sql

mysql>?

source?

./oldboy.sql?

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

Query?

OK,?

0?

rows?

affected?

(0.00?

sec)

...skip...

Query?

OK,?

0?

rows?

affected?

(0.00?

sec)

Q...skip...

Query?

OK,?

0?

rows?

affected?

(0.00?

sec)

?

mysql>?

select?

*?

from?

test;

+----+-------------+

|?

id?

|?

name?

?

?

?

?

?

?

?

|

+----+-------------+

|?

?

1?

|?

zhaoyue?

?

?

?

?

|

|?

?

2?

|?

jesse?

?

?

?

?

?

?

|

|?

?

4?

|?

elain?

?

?

?

?

?

?

|

|?

?

5?

|?

wodi?

?

?

?

?

?

?

?

|

|?

?

6?

|?

yingsui?

?

?

?

?

|

|?

?

7?

|?

zhangyang?

?

?

|

|?

?

8?

|?

zaixiangpan?

|

|?

?

9?

|?

?

?

?

?

?

?

|

|?

10?

|?

?

?

?

?

?

?

?

?

?

|<==乱码

|?

11?

|?

?

?

?

?

?

?

?

?

?

?

?

|

+----+-------------+

10?

rows?

in?

set?

(0.00?

sec)

?

mysql>?

set?

names?

gbk;

Query?

OK,?

0?

rows?

affected?

(0.00?

sec)

?

mysql>?

select?

*?

from?

test;

+----+-------------+

|?

id?

|?

name?

?

?

?

?

?

?

?

|

+----+-------------+

|?

?

1?

|?

zhaoyue?

?

?

?

?

|

|?

?

2?

|?

jesse?

?

?

?

?

?

?

|

|?

?

4?

|?

elain?

?

?

?

?

?

?

|

|?

?

5?

|?

wodi?

?

?

?

?

?

?

?

|

|?

?

6?

|?

yingsui?

?

?

?

?

|

|?

?

7?

|?

zhangyang?

?

?

|

|?

?

8?

|?

zaixiangpan?

|

|?

?

9?

|?

?

?

?

?

?

?

|

|?

10?

|?

老男孩?

?

?

?

?

?

|?

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

|?

11?

|?

我?

?

?

?

?

?

?

?

?

?

|

+----+-------------+

10?

rows?

in?

set?

(0.00?

sec)

5.2?

mysql命令恢复(标准)

mysql?

-u?

oldboy?

-p'oldboy'?

oldboy?

oldboy.sql

mysql>?

system?

mysql?

-uroot?

-p'oldboy123'?

oldboy?

oldboy-gbk.sql?

<==导入

的是备份时加字符集的版本。

mysql>?

select?

*?

from?

test;

+----+-------------+

|?

id?

|?

name?

?

?

?

?

?

?

?

|

+----+-------------+

|?

?

1?

|?

zhaoyue?

?

?

?

?

|

|?

?

2?

|?

jesse?

?

?

?

?

?

?

|

|?

?

4?

|?

elain?

?

?

?

?

?

?

|

|?

?

5?

|?

wodi?

?

?

?

?

?

?

?

|

|?

?

6?

|?

yingsui?

?

?

?

?

|

|?

?

7?

|?

zhangyang?

?

?

|

|?

?

8?

|?

zaixiangpan?

|

|?

?

9?

|?

?

?

?

?

?

?

|

|?

10?

|?

老男孩?

?

?

?

?

?

|<==因为上文source导入时已经set?

names?

gbk了,?

所以此处不是乱码。

|?

11?

|?

我?

?

?

?

?

?

?

?

?

?

|

+----+-------------+

10?

rows?

in?

set?

(0.00?

sec)

?

?

?

?

引擎备份

?

?

?

?

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

mysqldump?

-A?

-F?

-B?

--lock-all-tables?

|gzip?

>/data/backup/$(date?

+%F).tar.gz

特别提示:

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

引擎备份

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

mysqldump?

-A?

-F?

-B?

--single-transaction?

|gzip?

>/data/backup/$(date?

+%F).tar.gz

特别注意:

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

?

生产环境mysqldump备份命令

mysqldump?

–u?

root?

–p?

–S?

/data/3306/mysql.sock?

–default-character-set=gbk?

–single-transaction?

–F?

–B?

oldboy|gzip?

>?

/server/backup/mysql_$(date?

+%F).sql.gz

?

:

-F:

刷新bin-log参数,数据库备份完以后,会刷新bin-log

?

增量备份:

更新bin-log:

mysqladmin?

–uroot?

–p?

–S?

/data/3306/mysql.sock?

flush-logs

如生成mysql-bin.000004文件

把生成的最新mysql-bin.000004文件,CP到/var/backup/

把二进制的日志生成?

sql语句:

mysqlbinlog?

mysql-bin.000004>bin04.sql

如果有多个库,我们应该用-d来指定恢复单个库

mysqlbinlog?

mysql-bin.000004?

–d?

oldboy?

>binlog.sql?

?

(当然对于库也要分库备,否则恢复还是麻烦)

还原数据:

先还原全备,再还原增备

先还原全备:

mysql?

–u?

root?

–p?

?

还原增备:

mysql?

–u?

root?

–p?

?

?

基于时间点的增量恢复

mysqlbinlog?

mysql-bin.000004?

–start-datetime=’2011-03-19?

02:

58:

54’—stop-datetime=’2011-03-19?

03:

22:

44’?

–r?

time.sql

上面语句将显示2011.03-19?

02:

58:

54-----2011-03-19?

03:

22:

44时间段的binlog,并输出到time.sql

拽定开始时间到文件结束

mysqlbinlog?

mysql-bin.000004?

–start-datetime=’?

2011-03-19?

02:

58:

54’?

–d?

oldboy?

–r?

time.sql

这个语句只有开始时间,那么就是从2011-03-19?

02:

58:

54时刻到日志结尾,lodboy数据库的binlog输出到time.sql

?

基于位置点的增量恢复

指定开始位置和结束位置

mysqlbinlog?

mysql-bin.000004?

–start-position=510?

–stop-position=1312?

–r?

pos.sql

输出初始位置510,结束位置1312的所有binlog日志到pos.sql

注意:

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

即输出1312pos以前的binlog。

指定开始位置到文件结束

mysqlbinlog?

mysql-bin.000004?

–start-position=510?

–r?

pos510-end.sql

输出初始位置510,结束位置到文件结尾的所有binlog到pos510-end.sql。

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

如:

mysqlbinlog?

mysql-bin.000004?

--start-position=510?

–r?

pos510-end-oldboy.sql?

–d?

ol

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

当前位置:首页 > 高等教育 > 历史学

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

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