Linux运维工程师工作手册.docx
- 文档编号:28981771
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:19
- 大小:26.56KB
Linux运维工程师工作手册.docx
《Linux运维工程师工作手册.docx》由会员分享,可在线阅读,更多相关《Linux运维工程师工作手册.docx(19页珍藏版)》请在冰豆网上搜索。
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中,在127.0.0.1后面,添加自己的主机名
创建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禁止掉
netstat -an| grep :
80 | grep -v 127.0.0.1 |awk '{ print $5 }' | sort|awk -F:
'{print $1,$4}' | uniq -c | awk '$1 >50 {print $1,$2}'
4.5备份单个数据库
mysqldump -u 用户 –p’密码’ --default-character-set=latin1 数据库名 > 备份文件名(数据库默认编码是latin1)
普通备份:
mysqldump -uroot -p'oldboy123' oldboy > /server/bak/oldboy.sql
压缩备份:
mysqldump -uroot -p'oldboy123' oldboy |gzip > /server/bak/oldboy.sql.gz
设置字符集备份:
mysqldump -uroot -p'oldboy123' oldboy --default-character-set=gbk |gzip > /server/bak/oldboy.sql.gz
执行结果:
[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 ~]# mysqldump -uroot -p'oldboy123' oldboy |gzip > /server/bak/oldboy.sql.gz
[root@oldboy ~]# ls -l /server/bak/
total 8
-rw-r--r-- 1 root root 1991 Apr 9 00:
51 oldboy.sql
-rw-r--r-- 1 root root 801 Apr 9 00:
51 oldboy.sql.gz
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
oldboy-gbk-muti-tables.sql oldboy-gbk.sql oldboy.sql.gz
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)
2.1.1.1 MyISAM引擎备份
由于MyISAM引擎为表级锁,因此,在备份时需要防止在备份期间数据写入而导致不一致,所以,在备份时使用--lock-all-tables加上读锁
mysqldump -A -F -B --lock-all-tables |gzip >/data/backup/$(date +%F).tar.gz
特别提示:
有关MyISAM和InnoDB引擎的差别和在工作中如何选择,在前面的文章已经详细讲解过了,这里就不在讲了。
2.1.1.2 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时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 工程师 工作手册