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

下载本文档

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

文档简介

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

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

3、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. apache防盗链功能811. 禁止目录Index 812. 禁止用户覆盖(重载)813.

4、关闭 CGI 914. 避免使用.htaccess文件(分布式配置文件)915. apache 的安全模块 916. 正确途径取得源代码,勤打apache补丁 1017. apache 日志授予root 700 权限1018. 系统内核参数优化1019. 禁止PHP解析指定站点的目录1020. 使用tmpfs文件系统替代频繁访问的目录1121尽可能减少 HTTP请求数1122使用CDN做网站加速12查看你的服务器网络连接状态netstat -n | awk tcp/ +S$NF END for(a in S) print a, SaCLOSED :无连接是活动的或正在进行LISTEN :服务器

5、在等待进入呼叫4SYN_RECV :个连接请求已经到达,等待确认4SYN_SENT :应用已经开始,打开一个连接ESTABLISHED :正常数据传输状态4FIN_WAIT1 :应用说它已经完成4FIN_WAIT2 :另一边已同意释放TMED_WAIT :等待所有分组死掉CLOSING :两边同时尝试关闭TIME_WAIT :另一边已初始化一个释放4LAST_ACK :等待所有分组死掉ESTABLISHED的值其实也是当前的并发数,这个可重点关注下;另外,可关注下TIME WAIT这项的数值。Linux下高并发的 Squid服务器,TCP TIME_WAIT 套接字数量经常达到两、三万,服务器

6、很容易被拖死。通过修改Linux内核参数,可以减少Squid服务器的TIME_WAIT套接字数量。#查看系统本地可用端口极限值cat /proc/sys/net/ipv4/ip_local_port_ra nge寻找恶意IP并用iptables 禁止掉netstat -a n| grep :80 | grep -v |awk pri nt $5 | sort|awk -F: pri nt $1,$4 | u niq -c | awk $1 50 pri nt $1,$24.5备份单个数据库mysqldump -u 用户-p密码-default-character-set=l

7、atin1数据库名 备份文件名(数据库默认编码是lati n1)普通备份:mysqldump -uroot -poldboy123 oldboy /server/bak/oldboy.sql压缩备份:mysqldump -uroot -poldboy123 oldboy |gzip /server/bak/oldboy.sql.gz设置字符集备份:mysqldump -uroot -poldboy123 oldboy -default-character-set=gbk |gzip /server/bak/oldboy.sql.gz执行结果:rootoldboy # mkdir /server

8、/bak -prootoldboy # mysqldump -uroot -poldboy123 oldboy /server/babackup/ bak/rootoldboy # mysqldump -uroot -poldboy123 oldboy /server/bak/oldboy.sqlrootoldboy # mysqldump -uroot -poldboy123 oldboy |gzip /server/bak/oldboy.sql.gzrootoldboy # ls -l /server/bak/total 8-rw-r-r- 1 root root 1991 Apr 9 0

9、0:51 oldboy.sql-rw-r-r- 1 root root 801 Apr 9 00:51 oldboy.sql.gz4.6 mysqldump 在做啥?mysqldump实际上就是把数据从 mysql库里以逻辑的sql语句的形式导出。备份的数据过滤掉注释:rootoldboy # egrep -v *|-|A$ /server/bak/oldboy.sqlDROP TABLE IF EXISTS test;CREATE TABLE test (id i nt(4) NOT NULL AUTO_INCREMENT,n ame char(20) NOT NULL,PRIMARY KE

10、Y (id)ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;LOCK TABLES test WRITE;INSERT INTO test VALUES (1,zhaoyue),(2,jesse),(4,elai n),(5,wodi),(6,yi ngsui),(7,zhangyang),(8,zaixiangpan),(9,?),(10,鑰佺敺瀛?),(11,鎴?); /server/bak/oldboy-gbk.sqlrootoldboy # egrep -v *|-|A$ /server/bak/oldboy-gbk.sqlDRO

11、P TABLE IF EXISTS test;CREATE TABLE test (id i nt(4) NOT NULL AUTO_INCREMENT,n ame 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,ela in),(5,wodi),(6,y in gsui),(7,zhangyang),(8,zaixiangpan

12、),(9,?),(10,老男孩),(11,我); /server/bak/oldboy-gbk-muli.sql提示:-B参数是关键,表示接多个库。探(生产环境常用)diff erence in usage;-B, -databases To dump several databases. Note theIn this case no tables are give n. All n ame argume nts are regarded as database names. USE db_n ame; will be in eluded in the output.参数说明:该参数用于导出

13、若干个数据库,在备份结果中会加入USE db_n ame和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 test -default-character-set=gbk /server/bak/oldboy-gb

14、k-s in gle.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 *|-|A$ /server/bak/oldboy-gbk-muti-tables.sqlDROP TABLE IF EXISTS test;CREATE TABLE test (id i nt(4) NOT

15、 NULL AUTO_INCREMENT,n ame 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,elai n),(5,wodi),(6,yi ngsui),(7,z hangyang),(8,zaixiang pan),(9,?),(10,老男孩),(11,我);UNLOCK TABLES;DROP TABLE IF EXI

16、STS ett;CREATE TABLE ett (id i nt(11) DEFAULT NULL)ENGINE=MylSAM DEFAULT CHARSET=gbk;LOCK TABLES ett WRITE;UNLOCK TABLES;4.10备份数据库结构(不包含数据)mysqldump -uroot -d -poldboy oldboy oldboy oldboy_oldboy.sql-d只备份表结构rootoldboy # mysqldump -uroot -poldboy123 -d oldboy /tmp/desc.sqlrootoldboy # egrep -v *|-|A$

17、 /tmp/desc.sqlDROP 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 i nt(4) NOT NULL AUTO_INCREMENT,n ame char(20) NOT NULL,PRIMARY KEY (id)同学们要详细总)ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CH ARSET=gbk; 更多

18、用法可以 执行 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 -poldboy123Welcome to the MySQL mon itor. Comma nds end with ; or g.skip.Type help; o

19、r h for help. Type c to clear the curre nt in put stateme nt.mysql use oldboy Database cha nged 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-s in gle.sql old

20、boy.sqloldboy-gbk-muti-tables.sql oldboy-gbk.sql oldboy.sql.gzmysql source ./oldboy.sql select * from test;+| id | n ame|+| 1 | zhaoyue |2| jesse|4| elain|5| wodi|6| yin gsui| | 7 | zhangyang | 8 | zaixia ngpa n | 9|?| 10 | ?| set n ames gbk;Query OK, 0 rows affected (0.00 sec) mysql select * from t

21、est;+| id | n ame|+| 1 | zhaoyue |2| jesse|4| elain|5| wodi|I6| yin gsui|I 7 | zhangyang | 8 I zaixia ngpa n I| 9 | ?| 10 |老男孩 | =仍然是正常的,就是说备份不加字符集导出,将来恢复不会影响恢复的数据,但是备份后查看文件会乱码。|11 |我 丨10 rows in set (0.00 sec)5.2 mysql命令恢复(标准) mysql -u oldboy -poldboy oldboy system mysql -uroot -poldboy123 oldboy o

22、ldboy-gbk.sql select * from test;+| id | n ame|+| 1 | zhaoyue |2| jesse|4| elain|5| wodi|6| yin gsui| | 7 | zhangyang | 8 | zaixia ngpa n | 9|?| 10 |老男孩 |/data/backup/$(date +%F).tar.gz特别提示:有关 MylSAM 和InnoDB弓I擎的差别和在工作中如何选择,在前面的文章已经 详细讲解过了,这里就不在讲了。 In noDB 引擎备份Inn oDB引擎为行锁,因此,备份时可以不对数据库加锁的操作,可

23、以加选项-sin gle-tra nsacti on进行备份:mysqldump -A -F -B -s in gle-tra nsacti on |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_

24、$(date +%F).sql.gz:注-F :刷新bin-log 参数,数据库备份完以后,会刷新bin-log增量备份:更新 bin-log:mysqladmin -ur oot -p -S /data/3306/mysql.sock flush-logs如生成 mysql-bin.000004文件把生成的最新 mysql-bin.000004文件,CP 到/var/backup/把二进制的日志生成sql语句:mysqlbi nlog mysql-bi n.000004bi n04.sql如果有多个库,我们应该用-d来指定恢复单个库mysqlbi nlog mysql-bi n.000004

25、-d oldboy bi nlog.sql ( 当然对于库也要分库备,否则恢复还是麻烦)还原数据:先还原全备,再还原增备先还原全备:mysql root -p mysql file .sql还原增备:mysql -u root -p show variables likemax_connections:+| Variable_ name | Value |+| max_c onnections | 151 |+1 row in set (0.00 sec)服务器响应的最大连接数:152mysql show global status like Max_used_c onn ectio ns:+

26、| Variable, name | Value |+| Max_used_c onnections | 152 |+1 row in set (0.00 sec)查看服务器 key_buffer_size 数值:402653184mysql show variables like key_buffer_size;+| Variable_ name | Value |+| key_buffer_size | 402653184 |+1 row in set (0.00 sec)查看服务器现在使用的key_buffer_size 使用情况:key_read_requests:879600044k

27、ey-reads: 830525mysql showglobalstatus like key_read%;+| Variable_ name|Value|+| Key_read_requests | 879600044 | 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

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

29、ocks_u nused | 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 rows in set (0.00

30、 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,max_heap_table_size);+| Variable_ name| Value |+| max_heap_table_size |

31、 16777216 | tmp_table_size | 16777216 |+2 rows in set (0.00 sec)只有16M以下的临时表才能全部放在内存中,超过的就会用到硬盘临时表。打开表的情况Open_tables 表示打开表的数量,Ope nd_tables 表示打开过的表数量,我们可以用如下命 令查看其具体情况:mysql show global status like ope n%tables%;+| V | Value |+| Open_tables | 512| Ope ned_tables | 234200 |+2 rows in set (

32、0.00 sec)如果Opened_tables数量过大,说明配置中 tables_caceh(MYS QL 5.1.3之后这个值叫做table_open_cache)的值可能太小。我们查询一下服务器table_cache 值:mysql show variables like table_ope n_cache:+| Variable_ name | Value |+| table_open_cache | 614 |+1 row in set (0.00 sec)比较合适的值为:Open_tables / Ope ned_tables * 100% = 85%Open_tables / t

33、able_open_cache * 100% show global status like Thread%;+| Variable, name| Value |+| Threads_cached | 7| Threads_c onn ected | 2| Threads_created | 2124 | Threadsunning | 2|+4 rows in set (0.00 sec)如果发现Threads_created的值过大的话,表明MYSQL服务器一直在创建线程,这也是比较耗费资源的,可以适当增大配置文件中的thread_cache_size的值。查询服务器thread_cahc

34、e_size配己置,如下所示: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| Value

35、 |+| Qcache_free_blocks | 130| Qcache_free_memory | 31557680 | Qcache_hits| 15838885 | Qcache_i nserts| 2391041 | Qcache_lowmem_pr unes | 0| Qcache_ no t_cached| 671718 | Qcache_queries_i n_cache | 676| Qcache_total_blocks | 1798|+8 rows in set (0.00 sec)我们再查询一下服务器上关于query-cache的配置命令如下:mysql show va

36、riables like query_cache%;+| Variable, name| Value |+| query_cache_limit | 1048576 | query_cache_ min_res_un it| 4096| query_cache_size| 33554432 | query_cache_type| ON | query_cache_wlock_ in validate | OFF|+5 rows in set (0.00 sec)排序使用情况它表示系统中对数据进行排序时所使用的Buffer,我们可以用如下命令查看: mysql show global statu

37、s like sort%;+| Variable, name | Value |+| Sort_merge_passes | 84| Sort_ra nge| 393425 | Sort_rows| 751581502 | Sort_sca n| 324383 |+4 rows in set (0.00 sec)Sort_merge_passes 包括如下步骤:MYSQL首先会尝试在内存中做排序,使用的内存大小 由系统变量sort_buffer_size来决定,如果它不够大则把所有的记录都读到内存中,而MYSQl则会把每次在内存中排序的结果存到临时文件中,等MYSQL找到所有记录之后,再把临时文件中的记录

温馨提示

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

评论

0/150

提交评论