Linux运维工程师工作手册_第1页
Linux运维工程师工作手册_第2页
Linux运维工程师工作手册_第3页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Li nux 运维工程师工作手册释放内存:syncecho?3?/proc/sys/vm/drop_caches?Linux查看Dell服务器型号命令:dmidecode?|?grep?Product?Name查看系统负载:cat ?/proc/loadavg0.0?0.00?0.00?1/283?10904而283意思是:前三个是系统负载,1/283中,1代表此时运行队伍中的进程个数, 是代表此时的进程总数10904到此为止,最后创建的一个进程ID。?系统装好后,要做的事如下:关闭防火墙Selinux:vim?/etc/seli nu x/c onfig把 SELINUX二enforcing

2、改成 SELINUX二disabled更改主机名:vim?/etc/syscon fig/network修改主机名,不要用localhost添加hosts主机记录vim?/etc/hosts 中,在后面,添加自己的主机名创建 0-9?a-z 目录for?i?i n?seq?0?9?a.z;do?mkdir?-p?$i;do ne ?测试硬盘性能工具: iozone监视服务器每少上下文切换数次工具 :Nmon( 很不错的性能监视工具 )?# 占用内存大小前 10 的进程ps?-eo?comm,size?-sort?-size?|?head?-10?# 占用 cpu 使用前 10 的进程ps?-e

3、o?comm,pcpu?-sort?-pcpu?|?head?-10?一、 Apache 服务优化: ?21. 配置 cronolog 进行日志轮询 ?22. 错误页面优雅显示 ?23. mod_deflate 文件压缩功能 ?34. mod_expires 缓存功能 ?45. 更改 apache 的默认用户 ?56. worker 模式,提升并发数(可以达到 2000-5000)?57. 屏蔽 apache 版本等敏感信息 ?68. apache 目录文件权限设置( root ,目录 755 ,文件 644 )?69. 开启 httpd-mpm.conf?增加连接数 ?610. ?apach

4、e 防盗链功能 ?811. 禁止目录 Index?812. ?禁止用户覆盖 ( 重载) ?813. 关闭 CGI?914. 避免使用 .htaccess 文件(分布式配置文件) ?915. ?apache 的安全模块 ?916. 正确途径取得源代码,勤打 apache 补丁 ?1017. apache 日志授予 root?700 权限 ?1018. 系统内核参数优化 ?1019. 禁止 PHP 解析指定站点的目录 ?1020. 使用 tmpfs 文件系统替代频繁访问的目录 ?1121 尽可能减少 ?HTTP? 请求数?1122 使用 CDN 做网站加速 ?12?查看你的服务器网络连接状态n e

5、tstat?-n?|?awk?tcp/?+S$NF?END?for(a?i n? S)?pri nt?a,?SaCLOSED :无连接是活动的或正在进行?4LISTEN :服务器在等待进入呼叫?4SYN_RECV :个连接请求已经到达,等待确认 ?4SYN_SENT :应用已经开始,打开一个连接?ESTABLISHED :正常数据传输状态?4FIN_WAIT1 :应用说它已经完成?4FIN_WAIT2 :另一边已同意释放?TMED WAIT :等待所有分组死掉?CLOSING :两边同时尝试关闭?TIME_WAIT :另一边已初始化一个释放 ?LAST_ACK :等待所有分组死掉 ?ESTAB

6、LISHED 的值其实也是当前的并发数,这个可重点关注下;另外,可关注下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=la

7、tin1?数据库名? 备份文件名 (数据库默认编码是 latin1)普通备份:mysqldump?-uroot?-poldboy123?oldboy?/server/bak/oldboy.sql压缩备份:设置字符集备份:执行结果:rootoldboy?#?mkdir?/server/bak?-prootoldboy?#?mysqldump?-uroot?-poldboy123?oldboy?/server /babackup/?bak/?rootoldboy?#?mysqldump?-uroot?-poldboy123?oldboy?/server/bak/oldboy.sqlrootoldb

8、oy?#?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 语句的形式导出 备份的数据过滤掉注释:rootoldboy?#?egrep?-v?*|-F$?/server/bak/oldboy.sqlDROP?TABLE?IF?EXISTS?test;CREATE?TABLE?test?(?id?i nt(4)?N0T?NULL?AUT0_INCREMENT, ?name?char(20)?

9、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,ela in ),(5,wodi),(6,yi ngsui),(7,zhangyang),(8,zaixiangpan),(9,?),(10, 钥佺敺瀛?),(11,鎴 ?);?/server/bak/oldboy-gbk.sqlrootoldboy?#?egrep?-v?*|-F$?/se

10、rver/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,yi ngs

11、ui),(7,zhangyang),(8,zaixiangpan),(9,?),(10, 老男孩),(11, 我 );?/server/bak/oldboy-gbk-muli.sql 提示: -B 参数是关键,表示接多个库。(生产环境常用)?-B,?-databases?To?dump?several?databases.?Note?the?diff erence?in?usage;?In?this?case?no?tables?are?given.?All?name?ar guments?are?regarded?as?databasenames.?USE?db_name;?will?be?

12、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执行结果:rootoldboy?#?mysqldump?-uroot?-poldboy123?oldboy?t

13、est?-default-character-set=gbk?/server/bak/oldboy-gbk-single.sql提示:无 -B 参数,库 oldboy 后面就是 test 表了。4.9 备份多个表rootoldboy?# ?mysqldump?-uroot?-poldboy123?oldboy?test?ett?- -default-character-set=gbk?/server/bak/oldboy-gbk-muti-tables.sqlrootoldboy?#?egrep?-v?*|-F$?/server/bak/oldboy-gbk-muti-tables.sqlDR

14、OP?TABLE?IF?EXISTS?test;CREATE?TABLE?test?(?id?i nt(4)?N0T?NULL?AUT0_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,wo老男di),(6,yingsui),(7,zhangyang),(8,zaixiang

15、pan),(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? -poldboy?oldboy?oldboy?oldboy_oldboy.sql-d? 只备份表结构rootoldboy?#?mysqldump?-uro

16、ot?-poldboy123?-d?oldboy?/tmp/desc.sql?rootoldboy?#?egrep?-v?*|-F$?/tmp/desc.sql?DROP?TABLE?IF?EXISTS?ett;CREATE?TABLE?ett?(?id?i nt(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,同学?PRIMA

17、RY?KEY?(id) )?ENGINE=MyISAM?AUTO_INCREMENT=12?DEFAULT?CHARSET=gbk; 更多用法可以?执行?mysqldump? -help?查询。有关mysql和mysqldump 们要详细总结。5 恢复数据库5.1?source 命令恢复进入 mysql 数据库控制台, mysql?-u?root?-pmysql use? 数据库然后使用 source 命令,后面参数为 脚本文件(如这里用到的 .sql)mysql source?oldboy_db.sql?# 这个文件是系统路径。 rootoldboy?bak#?mysql?-uroot?-p

18、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?stat ement. mysql?use?oldboyDatabase?changedmysql?show?tables;+|?Tables_in_oldboy?|+|?ett?|?test?|+2?rows?in?set?(0.00?sec)?mysql?drop?tables?test;Query?OK,?0?rows?affec

19、ted?(0.01?sec)?mysql?system?ls?.oldboy-gbk-muli.sql?oldboy-gbk-single.sql?oldboy.sqlmysql?source?./oldboy.sql?select?*?from?test;+ +|?id?|?name?|+ +|?1?|?zhaoyue?|?2?|?jesse?|?4?|?elain?|?5?|?wodi?|?6?|?yingsui?|?7?|?zhangyang?|?8?|?zaixiangpan?|?9?|?|?10?|?|?set?names?gbk;Query?OK,?0?rows?affected?

20、(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?-

21、u?oldboy?-poldboy?oldboy?system?mysql?-uroot?-poldboy123?oldboy?oldboy-gbk.sql?select?*?from?test;+ +|?id?|?name?|+ +|?1?|?zhaoyue?|?2?|?jesse?|?4?|?elain?|?5?|?wodi?|?6?|?yingsui?|?7?|?zhangyang?|?8?|?zaixiangpan?|?9?|?|?10?|?老男孩 ?|/data/backup/$(date?+%F).t ar.gz特别提示:有关MylSAM和InnoDB引擎的差别和在工作中如何选择,

22、在前面的文 章已经详细讲解过了,这里就不在讲了。引擎备份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

23、二gbk?-sin gle-tra nsactio n?-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?m

24、ysql-bin.000004bin04.sql如果有多个库,我们应该用 -d 来指定恢复单个库mysqlbi nlog?mysql-bi n.000004?oldboy?bi nlog.sql?(当然对于库也要分库备,否则恢复还是麻烦 )还原数据:先还原全备,再还原增备先还原全备:mysql? -u?root? -p?mysql file .sql还原增备:mysql? -u?root? -p? show?variables?likemax_connections;+|?Variable_name?|?Value?|+|?max_connections?|?151?|+1?row?in?se

25、t?(0.00?sec)服务器响应的最大连接数: 152 mysql ?show?global?status?like?Max_used_connections;+|?Variable_name?|?Value?|+|?Max_used_connections?|?152?|+1?row?in?set?(0.00?sec)查看服务器 key_buffer_size 数值: mysql?show?variables?like?key_buffer_size;+|?Variable_name?|?Value?|+1?row?in?set?(0.00?sec) ?查看服务器现在使用的 key_buf

26、fer_size 使用情况:key-reads:?830525 mysql?show?global?status?like?key_read%;+ |?Variable_name?|?Value?|+|?Key_reads?|?830525?|+2?rows?in?set?(0.00?sec) 计算索引未命中的概率: key_cache_miss_rate?=?key_reads?/?key_read_requests?*?100% 达到 0.1% 以下(即每 1000 个请求有一个直接读硬盘)以下都很好,如果 key_cache_miss_rae 在 0.01% 以下的话,则说明 key_b

27、uffer_size 分配得过多, 可以适当减少。?Key_blocks_unused 表示未使用的缓存簇数, Key_blocks_used 表示曾经用到 的最大的 blocks 数,比如这台服务器,所有的缓存都用到了,要么增加 key_buffer_size ,要么就是过度索引,把缓存占满了。比较理想的设置是: key_blocks_used?/?(?key_blocks_unused?+?key_blocks_used?)?*?100 ?%?=?80%? mysql?show?global?status?like?key_blocks_u%;+|?Variable_name?|?Valu

28、e?|+|?Key_blocks_unused?|?317003?| |?Key_blocks_used?|?6439?|+2?rows?in?set?(0.00?sec)?临时表:当执行语句时,关于已经被创造了的隐含临时表的数量,我们可以用如下命令查询 其具体情况:mysql?show?global?status?like?created_tmp%;+|?Variable_name?|?Value?|+|?Created_tmp_disk_tables?|?343326?|?Created_tmp_files?|?172?|?Created_tmp_tables?|?675795?|+3?r

29、ows?in?set?(0.00?sec)?每次创建临时表时, created_tmp_tables 都会增加,如果是在磁盘上创建临时表, created_tmp_disk_tables 也会增加。 created_tem_files 表示 MYSQL 服务创 建的临时文件数,比较理想的配置是:Created_Tmp_disk_tables?/?Created_tmp_tables?*?100%?show?variables?where?Variable_name?in?(tmp_table_size,m ax_heap_table_size);+|?Variable_name?|?Value

30、?|+2?rows?in?set?(0.00?sec)只有 16M 以下的临时表才能全部放在内存中,超过的就会用到硬盘临时表打开表的情况我们可以Open_tables 表示打开表的数量, Opend_tables 表示打开过的表数量, 用如下命令查看其具体情况:mysql ?show?global?status?like?open%tables%;+|?Variable_name?|?Value?|+|?Open_tables?|?512?|?Opened_tables?|?234200?|+2?rows?in?set?(0.00?sec)如果 Opened_tables 数量过大,说明配置中

31、 tables_caceh(MYSQL?5.1.3? 之后 这个值叫做 table_open_cache) 的值可能太小。我们查询一下服务器 table_cache 值:mysql?show?variables?like?table_open_cache;? ?+|?Variable_name?|?Value?|+|?table_open_cache?|?614?|+1?row?in?set?(0.00?sec) 比较合适的值为:Open_tables?/?Opened_tables?*?100%?=?85%Open_tables?/?table_open_cache?*?100%?show?

32、global?status?like?Thread%;+ |?Variable_name?|?Value?|+|?Threads_cached?|?7?| |?Threads_connected?|?2?| |?Threads_created?|?2124?| |?Threads_running?|?2?| +4?rows?in?set?(0.00?sec)如果发现 Threads_created 的值过大的话,表明 MYSQL 服务器一直在创建线程, 这也是比较耗费资源的,可以适当增大配置文件中的 thread_cache_size 的值。查 询服务器 thread_cahce_size 配

33、置,如下所示: mysql?show?variables?like?thread_cache_size;+|?Variable_name?|?Value?|+|?thread_cache_size?|?8?|+1?row?in?set?(0.00?sec)?查询缓存它涉及的主要有两个参数, query_cache_size 是设置 MYSQL 的 Query_Cache 大 小, query_cache_size 是设置使用查询缓存的类型,我们可以用如下命令查看其具 体情况:mysql?show?global?status?like?qcache%;+|?Variable_name?|?Val

34、ue?|+|?Qcache_free_blocks?|?130?|?Qcache_inserts?|?2391041?|?Qcache_lowmem_prunes?|?0?|?|?Qcache_not_cached?|?671718?|?Qcache_queries_in_cache?|?676?|?Qcache_total_blocks?|?1798?|+8?rows?in?set?(0.00?sec)?我们再查询一下服务器上关于 query-cache 的配置命令如下:mysql?show?variables?like?query_cache%;+|?Variable_name?|?Val

35、ue?|+|?query_cache_limit?|?1048576?|?query_cache_min_res_unit?|?4096?|?query_cache_type?|?ON?|?query_cache_wlock_invalidate?|?OFF?|+5?rows?in?set?(0.00?sec)排序使用情况它表示系统中对数据进行排序时所使用的 Buffer ,我们可以用如下命令查看: mysql?show?global?status?like?sort%;+|?Variable_name?|?Value?|+|?Sort_merge_passes?|?84?|?Sort_ran

36、ge?|?393425?|?Sort_scan?|?324383?|+4?rows?in?set?(0.00?sec)?Sort_merge_passes 包括如下步骤: MYSQL 首先会尝试在内存中做排序,使用 的内存大小由系统变量 sort_buffer_size 来决定, 如果它不够大则把所有的记录都 读到内存中,而MYSQI则会把每次在内存中排序的结果存到临时文件中, 等?MYSQL 找到所有记录之后,再把临时文件中的记录做一次排序。这次再排序就会增加 sort_merge_passes 。实际上, MYSQL 会用另一个临时文件来存储再次排序的结 果,所以我们通常会看到 sort_merge_p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论