-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
1569 lines (769 loc) · 119 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!doctype html>
<html class="theme-next mist use-motion">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link href="/vendors/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css"/>
<link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
<link href="/vendors/font-awesome/css/font-awesome.min.css?v=4.4.0" rel="stylesheet" type="text/css" />
<link href="/css/main.css?v=5.0.1" rel="stylesheet" type="text/css" />
<meta name="keywords" content="Hexo, NexT" />
<link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico?v=5.0.1" />
<meta name="description">
<meta property="og:type" content="website">
<meta property="og:title" content="Thinking">
<meta property="og:url" content="http://sysbook.info/index.html">
<meta property="og:site_name" content="Thinking">
<meta property="og:description">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Thinking">
<meta name="twitter:description">
<script type="text/javascript" id="hexo.configuration">
var NexT = window.NexT || {};
var CONFIG = {
scheme: 'Mist',
sidebar: {"position":"left","display":"post"},
fancybox: true,
motion: true,
duoshuo: {
userId: 0,
author: '博主'
}
};
</script>
<title> Thinking </title>
</head>
<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">
<div class="container one-collumn sidebar-position-left
page-home
">
<div class="headband"></div>
<header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-meta ">
<div class="custom-logo-site-title">
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<span class="site-title">Thinking</span>
<span class="logo-line-after"><i></i></span>
</a>
</div>
<p class="site-subtitle">True wealth is a way of thinking</p>
</div>
<div class="site-nav-toggle">
<button>
<span class="btn-bar"></span>
<span class="btn-bar"></span>
<span class="btn-bar"></span>
</button>
</div>
<nav class="site-nav">
<ul id="menu" class="menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section">
<i class="menu-item-icon fa fa-home fa-fw"></i> <br />
首页
</a>
</li>
<li class="menu-item menu-item-categories">
<a href="/categories" rel="section">
<i class="menu-item-icon fa fa-th fa-fw"></i> <br />
分类
</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives" rel="section">
<i class="menu-item-icon fa fa-archive fa-fw"></i> <br />
归档
</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags" rel="section">
<i class="menu-item-icon fa fa-tags fa-fw"></i> <br />
标签
</a>
</li>
<li class="menu-item menu-item-about">
<a href="/about" rel="section">
<i class="menu-item-icon fa fa-user fa-fw"></i> <br />
关于
</a>
</li>
</ul>
</nav>
</div>
</header>
<main id="main" class="main">
<div class="main-inner">
<div class="content-wrap">
<div id="content" class="content">
<section id="posts" class="posts-expand">
<article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2016/07/27/python-call-zabbixapi/" itemprop="url">
Python Call Zabbix API to Create Hosts
</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time itemprop="dateCreated" datetime="2016-07-27T09:06:33+08:00" content="2016-07-27">
2016-07-27
</time>
</span>
<span class="post-category" >
|
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="https://schema.org/Thing">
<a href="/categories/python/" itemprop="url" rel="index">
<span itemprop="name">python</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="文章首发站点:OpensGalaxy-com"><a href="#文章首发站点:OpensGalaxy-com" class="headerlink" title="文章首发站点:OpensGalaxy.com"></a>文章首发站点:<a href="http://www.opensgalaxy.com" target="_blank" rel="external">OpensGalaxy.com</a></h2><h3 id="这是一个根据zabbix-api中host-create方法来批量创建host的python程序,比较基础,大家可以举一反三,zabbix-api都可以使用这样的方法来调用。"><a href="#这是一个根据zabbix-api中host-create方法来批量创建host的python程序,比较基础,大家可以举一反三,zabbix-api都可以使用这样的方法来调用。" class="headerlink" title="这是一个根据zabbix api中host.create方法来批量创建host的python程序,比较基础,大家可以举一反三,zabbix api都可以使用这样的方法来调用。"></a>这是一个根据zabbix api中host.create方法来批量创建host的python程序,比较基础,大家可以举一反三,zabbix api都可以使用这样的方法来调用。</h3><h3 id="参考官方文档地址:https-www-zabbix-com-documentation-3-0-manual-api"><a href="#参考官方文档地址:https-www-zabbix-com-documentation-3-0-manual-api" class="headerlink" title="参考官方文档地址:https://www.zabbix.com/documentation/3.0/manual/api"></a>参考官方文档地址:<a href="https://www.zabbix.com/documentation/3.0/manual/api" target="_blank" rel="external">https://www.zabbix.com/documentation/3.0/manual/api</a></h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">#!/usr/bin/env python</span><br><span class="line"># -*- coding:utf-8 -*-</span><br><span class="line"></span><br><span class="line">import json</span><br><span class="line">import urllib2</span><br><span class="line"># Zabbix Api url</span><br><span class="line">url = "http://test.zabbix.com/zabbix/api_jsonrpc.php"</span><br><span class="line"># Zabbix Api 要求的 header格式</span><br><span class="line">header = {"Content-Type":"application/json"}</span><br><span class="line"># 定义一个登录验证函数 auth, 这个函数会返回一个authid 方便后续程序调用。</span><br><span class="line"># 官方文档中样例 "auth": "038e1d7b1735c6a5436ee9eae095879e" 这个函数就会返回这个ID。</span><br><span class="line">def auth():</span><br><span class="line"> data = json.dumps(</span><br><span class="line"> {</span><br><span class="line"> "jsonrpc": "2.0",</span><br><span class="line"> "method": "user.login",</span><br><span class="line"> "params": {</span><br><span class="line"> "user": "Admin",</span><br><span class="line"> "password": "123456"</span><br><span class="line"> },</span><br><span class="line"> "id": 0</span><br><span class="line"> })</span><br><span class="line"> # create request object</span><br><span class="line"> request = urllib2.Request(url,data)</span><br><span class="line"> for key in header:</span><br><span class="line"> request.add_header(key,header[key])</span><br><span class="line"> # auth and get authid</span><br><span class="line"> try:</span><br><span class="line"> result = urllib2.urlopen(request)</span><br><span class="line"> except URLError as e:</span><br><span class="line"> print "Auth Failed, Please Check Your Name AndPassword:", e.code</span><br><span class="line"> else:</span><br><span class="line"> response = json.loads(result.read())</span><br><span class="line"> result.close()</span><br><span class="line"> authid = response['result']</span><br><span class="line"> return authid</span><br><span class="line"></span><br><span class="line">def createhost(hosts,proxyid=0):</span><br><span class="line"> # 这个函数定义了两个变量,hosts是字典类型的用于批量添加主机格式是{"备注名称":"1.1.1.1","备注名称":"2.2.2.2"}</span><br><span class="line"> # proxyid 默认是0 默认又Zabbix Server监控,如果是由Zabbix Proxy监控,这里填写proxyid 即可.(可以通过proxy.get方法过的proxyid)</span><br><span class="line"> ''' This is a create hosts function</span><br><span class="line"> hosts {"test01":"1.1.1.1","test02":"2.2.2.2"}</span><br><span class="line"> proxyid default=0 is server monitor , proxy monitor please set proxyid</span><br><span class="line"> '''</span><br><span class="line"> authid = auth()</span><br><span class="line"> hostlist = hosts</span><br><span class="line"> # 这里使用for循环来循环 hostlist 字典中的 "备注名称"和"ip地址",实现每次循环增加一台主机。</span><br><span class="line"> for name in hostlist:</span><br><span class="line"> zdata = json.dumps({</span><br><span class="line"> "jsonrpc": "2.0",</span><br><span class="line"> "method": "host.create",</span><br><span class="line"> "params": {</span><br><span class="line"> "host": hostlist[name],</span><br><span class="line"> "interfaces": [</span><br><span class="line"> {</span><br><span class="line"> "type": 1,</span><br><span class="line"> "main": 1,</span><br><span class="line"> "useip": 1,</span><br><span class="line"> "ip": hostlist[name],</span><br><span class="line"> "dns": "",</span><br><span class="line"> "port": "10050"</span><br><span class="line"> }</span><br><span class="line"> ],</span><br><span class="line"> "proxy_hostid": proxyid,</span><br><span class="line"> "name": name,</span><br><span class="line"> "groups": [</span><br><span class="line"> {</span><br><span class="line"> "groupid": "2"</span><br><span class="line"> }</span><br><span class="line"> ],</span><br><span class="line"> "templates": [</span><br><span class="line"> {</span><br><span class="line"> "templateid": "10001"</span><br><span class="line"> }</span><br><span class="line"> ]</span><br><span class="line"> },</span><br><span class="line"> "auth": authid,</span><br><span class="line"> "id": 1</span><br><span class="line"> })</span><br><span class="line"> request = urllib2.Request(url,zdata)</span><br><span class="line"> for key in header:</span><br><span class="line"> request.add_header(key,header[key])</span><br><span class="line"> try:</span><br><span class="line"> result = urllib2.urlopen(request)</span><br><span class="line"> except URLError as e:</span><br><span class="line"> print "Auth Failed, Please Check Your Name AndPassword:",e.code</span><br><span class="line"> else:</span><br><span class="line"> response = json.loads(result.read())</span><br><span class="line"> result.close()</span><br><span class="line"> hostid = response['result']</span><br><span class="line"> #print hostid</span><br><span class="line"></span><br><span class="line"> hostids = []</span><br><span class="line"> hostids.append(name)</span><br><span class="line"> hostids.append(hostid)</span><br><span class="line"> print hostids</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">hostsdict = input("Please input hostsdict:\n ")</span><br><span class="line">createhost(hostsdict)</span><br></pre></td></tr></table></figure>
<h3 id="执行结果如下:"><a href="#执行结果如下:" class="headerlink" title="执行结果如下:"></a>执行结果如下:</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">D:\untitled1\.idea>python zabbix_auth.py</span><br><span class="line">Please input hostsdict:</span><br><span class="line">{"z01":"10.10.10.10","z02":"10.10.10.11"}</span><br><span class="line"></span><br><span class="line">['z01', {u'hostids': [u'10274']}]</span><br><span class="line">['z02', {u'hostids': [u'10275']}]</span><br></pre></td></tr></table></figure>
</div>
<div>
</div>
<div>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2016/07/26/zabbix-proxy-install/" itemprop="url">
Centos 7 源码安装zabbix proxy 3.0
</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time itemprop="dateCreated" datetime="2016-07-26T13:45:24+08:00" content="2016-07-26">
2016-07-26
</time>
</span>
<span class="post-category" >
|
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="https://schema.org/Thing">
<a href="/categories/zabbix/" itemprop="url" rel="index">
<span itemprop="name">zabbix</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="文章首发站点:OpensGalaxy-com"><a href="#文章首发站点:OpensGalaxy-com" class="headerlink" title="文章首发站点:OpensGalaxy.com"></a>文章首发站点:<a href="http://OpensGalaxy.com" target="_blank" rel="external">OpensGalaxy.com</a></h2><h2 id="Zabbix-Proxy-是一个进程,能够从zabbix-agent收集数据,然后传送到zabbix-server,本质上可以替代zabbix-server的工作,是zabbix-分布式监控和缓解zabbix-server压力的核心组件。"><a href="#Zabbix-Proxy-是一个进程,能够从zabbix-agent收集数据,然后传送到zabbix-server,本质上可以替代zabbix-server的工作,是zabbix-分布式监控和缓解zabbix-server压力的核心组件。" class="headerlink" title="Zabbix Proxy 是一个进程,能够从zabbix agent收集数据,然后传送到zabbix server,本质上可以替代zabbix server的工作,是zabbix 分布式监控和缓解zabbix server压力的核心组件。"></a>Zabbix Proxy 是一个进程,能够从zabbix agent收集数据,然后传送到zabbix server,本质上可以替代zabbix server的工作,是zabbix 分布式监控和缓解zabbix server压力的核心组件。</h2><h3 id="下载zabbix-源码包"><a href="#下载zabbix-源码包" class="headerlink" title="下载zabbix 源码包"></a>下载zabbix 源码包</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget http://pilotfiber.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz</span><br></pre></td></tr></table></figure>
<h3 id="创建用户及组"><a href="#创建用户及组" class="headerlink" title="创建用户及组"></a>创建用户及组</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">groupadd zabbix</span><br><span class="line">useradd -g zabbix zabbix</span><br></pre></td></tr></table></figure>
<h3 id="创建zabbix安装目录"><a href="#创建zabbix安装目录" class="headerlink" title="创建zabbix安装目录"></a>创建zabbix安装目录</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir -p /etc/zabbix</span><br></pre></td></tr></table></figure>
<h3 id="安装community-mysql"><a href="#安装community-mysql" class="headerlink" title="安装community-mysql"></a>安装community-mysql</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">wget http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm</span><br><span class="line">rpm -ivh mysql57-community-release-el6-8.noarch.rpm</span><br><span class="line">yum-config-manager --disable mysql57-community </span><br><span class="line">yum-config-manager --enable mysql56-community</span><br><span class="line">yum remove akonadi-mysql ###卸载这个组件,否则安装会报错</span><br><span class="line">yum install mysql-community-server</span><br><span class="line">systemctl start mysql.service</span><br></pre></td></tr></table></figure>
<h3 id="创建proxy-数据库"><a href="#创建proxy-数据库" class="headerlink" title="创建proxy 数据库"></a>创建proxy 数据库</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">mysql -u root -p (密码为空)</span><br><span class="line">mysql> create database proxy;</span><br><span class="line">mysql> grant all privileges on proxy.* to proxyuser@localhost identified by '123456';</span><br><span class="line">mysql> flush privileges;</span><br></pre></td></tr></table></figure>
<h3 id="导入proxy数据库"><a href="#导入proxy数据库" class="headerlink" title="导入proxy数据库"></a>导入proxy数据库</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mysql -u proxyuser -p 123456 < schema.sql (proxy服务器只导入schema.sql 即可)</span><br></pre></td></tr></table></figure>
<h3 id="安装其他环境包"><a href="#安装其他环境包" class="headerlink" title="安装其他环境包"></a>安装其他环境包</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">yum install mysql-community-client mysql-community-libs.x86_64 mysql-community-devel curl curl-devel net-snmp-devel net-snmp</span><br><span class="line"></span><br><span class="line">ln -s libmysqlclient.so.18 libmysqlclient.so #### 做一下链接,否则会报如下图错,已踩坑</span><br><span class="line">ln -s libmysqlclient_r.so.18 libmysqlclient_r.so</span><br></pre></td></tr></table></figure>
<p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images/zabbixproxy/mysqlclient.png" alt="image"></p>
<h3 id="编译安装"><a href="#编译安装" class="headerlink" title="编译安装"></a>编译安装</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">cd zabbix-3.0.3</span><br><span class="line"></span><br><span class="line">./configure --prefix=/etc/zabbix --enable-proxy --with-mysql --with-net-snmp --with-libcurl</span><br><span class="line">make </span><br><span class="line">make install</span><br></pre></td></tr></table></figure>
<h3 id="编辑proxy配置"><a href="#编辑proxy配置" class="headerlink" title="编辑proxy配置"></a>编辑proxy配置</h3><p>vim /etc/zabbix/etc/zabbix_proxy.conf</p>
<h2 id="查找如下配置进行修改"><a href="#查找如下配置进行修改" class="headerlink" title="查找如下配置进行修改"></a>查找如下配置进行修改</h2><p>Server=1.1.1.1 ### zabbix server 服务器IP<br>ServerPort=10051 ### zabbix server 服务器端口<br>Hostname=zabbixproxy01 ### Hostname 与 zabbix web 配置一致<br>ListenPort=10051 ### proxy 服务器监听端口<br>DBHost=localhost<br>DBName=proxy<br>DBUser=proxyuser<br>DBPassword=123456<br>DBPort=3306</p>
<h3 id="启动-proxy"><a href="#启动-proxy" class="headerlink" title="启动 proxy"></a>启动 proxy</h3><p>cd ./zabbix_proxy</p>
<h3 id="zabbix-web中添加-proxy"><a href="#zabbix-web中添加-proxy" class="headerlink" title="zabbix web中添加 proxy"></a>zabbix web中添加 proxy</h3><p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images/zabbixproxy/zabbixproxy.png" alt="image"></p>
</div>
<div>
</div>
<div>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2016/07/14/zabbix-port-flow/" itemprop="url">
Zabbix监控Port流量及Discovery Rules
</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time itemprop="dateCreated" datetime="2016-07-14T15:12:56+08:00" content="2016-07-14">
2016-07-14
</time>
</span>
<span class="post-category" >
|
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="https://schema.org/Thing">
<a href="/categories/zabbix/" itemprop="url" rel="index">
<span itemprop="name">zabbix</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h3 id="文章首发站点-OpensGalaxy-com"><a href="#文章首发站点-OpensGalaxy-com" class="headerlink" title="文章首发站点: OpensGalaxy.com"></a>文章首发站点: <a href="http://opensgalaxy.com" target="_blank" rel="external">OpensGalaxy.com</a></h3><h3 id="最近搭建了一套Shadowsoks服务器用于科学上网,-Shadowsocks-A-secure-socks5-proxy-https-shadowsocks-org-由于带宽资源有限,需要科学上网的同学又不少,所以需要针对每位同学的实时带宽流量情况做一下监控和后续的流量限制(shadowsocks可以建立不同的端口和密码,这样就可用做简单的用户区分,github上有人写了一个ss-bash脚本来实现了一些用户建立、删除、总流量限制等功能,有兴趣的同学可以试试),本文将以shadowsocks为例,讲解通过zabbix监控port流量及Discovery-rules配置。"><a href="#最近搭建了一套Shadowsoks服务器用于科学上网,-Shadowsocks-A-secure-socks5-proxy-https-shadowsocks-org-由于带宽资源有限,需要科学上网的同学又不少,所以需要针对每位同学的实时带宽流量情况做一下监控和后续的流量限制(shadowsocks可以建立不同的端口和密码,这样就可用做简单的用户区分,github上有人写了一个ss-bash脚本来实现了一些用户建立、删除、总流量限制等功能,有兴趣的同学可以试试),本文将以shadowsocks为例,讲解通过zabbix监控port流量及Discovery-rules配置。" class="headerlink" title="最近搭建了一套Shadowsoks服务器用于科学上网,(Shadowsocks A secure socks5 proxy https://shadowsocks.org).由于带宽资源有限,需要科学上网的同学又不少,所以需要针对每位同学的实时带宽流量情况做一下监控和后续的流量限制(shadowsocks可以建立不同的端口和密码,这样就可用做简单的用户区分,github上有人写了一个ss-bash脚本来实现了一些用户建立、删除、总流量限制等功能,有兴趣的同学可以试试),本文将以shadowsocks为例,讲解通过zabbix监控port流量及Discovery rules配置。"></a>最近搭建了一套Shadowsoks服务器用于科学上网,(Shadowsocks A secure socks5 proxy <a href="https://shadowsocks.org).由于带宽资源有限,需要科学上网的同学又不少,所以需要针对每位同学的实时带宽流量情况做一下监控和后续的流量限制(shadowsocks可以建立不同的端口和密码,这样就可用做简单的用户区分,github上有人写了一个ss-bash脚本来实现了一些用户建立、删除、总流量限制等功能,有兴趣的同学可以试试),本文将以shadowsocks为例,讲解通过zabbix监控port流量及Discovery" target="_blank" rel="external">https://shadowsocks.org).由于带宽资源有限,需要科学上网的同学又不少,所以需要针对每位同学的实时带宽流量情况做一下监控和后续的流量限制(shadowsocks可以建立不同的端口和密码,这样就可用做简单的用户区分,github上有人写了一个ss-bash脚本来实现了一些用户建立、删除、总流量限制等功能,有兴趣的同学可以试试),本文将以shadowsocks为例,讲解通过zabbix监控port流量及Discovery</a> rules配置。</h3><h2 id="一、需求"><a href="#一、需求" class="headerlink" title="一、需求"></a>一、需求</h2><p>1、监控shadowsocks用户(端口)实时流量情况。<br>2、端口自动发现(总不能新增了一个用户(端口)就手动去添加item吧。)</p>
<h2 id="二、解决方案"><a href="#二、解决方案" class="headerlink" title="二、解决方案"></a>二、解决方案</h2><p>1、通过iptables 实现端口的流量统计,zabbix自定义key来提取这些流量统计信息。<br>2、通过zabbix 配置Discovery rules来自动发现这些新增的端口,自动添加item监控,实现自动化。</p>
<h2 id="三、实现"><a href="#三、实现" class="headerlink" title="三、实现"></a>三、实现</h2><h3 id="1、配置Iptables规则"><a href="#1、配置Iptables规则" class="headerlink" title="1、配置Iptables规则"></a>1、配置Iptables规则</h3><p>首先增加两条iptables规则,添加你想监控的端口号。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">root@debian:~# iptables -A INPUT -p tcp --dport 9000</span><br><span class="line">root@debian:~# iptables -A OUTPUT -p tcp --sport 9000</span><br></pre></td></tr></table></figure>
<p>第一条规则表示,在INPUT链上添加一条规则,该条规则对所有来自外部网络的、与本机9000端口通信的请求有效,即网络流入量。<br>第二条规则则相反,它用于统计从本机80端口发出的网络流量,即网络流出量。因为我们的目的是统计流量,故此处可以省略ACCEPT或DROP之类的动作。</p>
<p>注: 使用ss-bash 管理的总流量的时候,这些规则会自动添加。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">root@iZu19b0479lZ:~# iptables -nvx -L</span><br><span class="line">Chain INPUT (policy ACCEPT 2837789 packets, 1292006804 bytes)</span><br><span class="line"> pkts bytes target prot opt in out source destination </span><br><span class="line"> 3508774 1371365817 ssinput all -- * * 0.0.0.0/0 0.0.0.0/0 </span><br><span class="line"></span><br><span class="line">Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)</span><br><span class="line"> pkts bytes target prot opt in out source destination </span><br><span class="line"></span><br><span class="line">Chain OUTPUT (policy ACCEPT 2551998 packets, 332026532 bytes)</span><br><span class="line"> pkts bytes target prot opt in out source destination </span><br><span class="line"> 3268140 1446394868 ssoutput all -- * * 0.0.0.0/0 0.0.0.0/0 </span><br><span class="line"></span><br><span class="line">Chain ssinput (1 references)</span><br><span class="line"> pkts bytes target prot opt in out source destination </span><br><span class="line"> 172980 25767516 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9000</span><br><span class="line"> 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:9000</span><br><span class="line"> 423 28766 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9001</span><br><span class="line"> 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:9001</span><br><span class="line"> 475560 46979329 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9002</span><br><span class="line"> 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:9002</span><br><span class="line"></span><br><span class="line">Chain ssoutput (1 references)</span><br><span class="line"> pkts bytes target prot opt in out source destination </span><br><span class="line"> 173013 164269015 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:9000</span><br><span class="line"> 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:9000</span><br><span class="line"> 332 17984 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:9001</span><br><span class="line"> 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:9001</span><br><span class="line"> 517323 942109094 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:9002</span><br><span class="line"> 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:9002</span><br></pre></td></tr></table></figure>
<p>这里看到一共添加了3个用户(3个端口) 9000\9001\9002 spt为out流量 dpt为in流量</p>
<h3 id="2、visudo"><a href="#2、visudo" class="headerlink" title="2、visudo"></a>2、visudo</h3><p>增加 zabbix无密码执行iptables命令 这里因为是测试所以使用ALL<br>zabbix ALL=(root) NOPASSWD: ALL</p>
<h3 id="3、自定义zabbix-key"><a href="#3、自定义zabbix-key" class="headerlink" title="3、自定义zabbix key"></a>3、自定义zabbix key</h3><h4 id="Port入流量统计shell"><a href="#Port入流量统计shell" class="headerlink" title="Port入流量统计shell"></a>Port入流量统计shell</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">vim /usr/bin/portflow_in.sh</span><br><span class="line"></span><br><span class="line">#!/bin/bash </span><br><span class="line"></span><br><span class="line"># 定义两个变量分别提取TCP UDP的流量,然后相加,</span><br><span class="line"># 加sudo 是因为这个key shell 需要zabbix用户执行,需要编辑visudo 允许zabbix无密码执行iptables命令</span><br><span class="line">export PATH=$PATH</span><br><span class="line"></span><br><span class="line">export TCPFLOW=$(sudo iptables -nvx -L|grep "tcp spt:$1" |awk '{print $2}');</span><br><span class="line">export UDPFLOW=$(sudo iptables -nvx -L|grep "udp spt:$1" |awk '{print $2}');</span><br><span class="line">echo $(($TCPFLOW+$UDPFLOW))</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">root@iZu19b0479lZ:~# /usr/bin/portflow_in.sh 9000</span><br><span class="line">167814079</span><br></pre></td></tr></table></figure>
<h4 id="Port出流量统计shell"><a href="#Port出流量统计shell" class="headerlink" title="Port出流量统计shell"></a>Port出流量统计shell</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">vim /usr/bin/portflow_out.sh</span><br><span class="line"></span><br><span class="line">#!/bin/bash </span><br><span class="line"></span><br><span class="line">export PATH=$PATH</span><br><span class="line"></span><br><span class="line">export TCPFLOW=$(sudo iptables -nvx -L|grep "tcp dpt:$1" |awk '{print $2}');</span><br><span class="line">export UDPFLOW=$(sudo iptables -nvx -L|grep "udp dpt:$1" |awk '{print $2}');</span><br><span class="line">echo $(($TCPFLOW+$UDPFLOW))</span><br><span class="line"></span><br><span class="line">root@iZu19b0479lZ:~# /usr/bin/portflow_out.sh 9000</span><br><span class="line">25950456</span><br></pre></td></tr></table></figure>
<h4 id="定义key"><a href="#定义key" class="headerlink" title="定义key"></a>定义key</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">root@iZu19b0479lZ:~# cat /etc/zabbix/zabbix_agentd.conf.d/Port_Flow.conf </span><br><span class="line">UserParameter=portflow_out[*],/usr/bin/portflow_out.sh $1</span><br><span class="line">UserParameter=portflow_in[*],/usr/bin/portflow_in.sh $1</span><br></pre></td></tr></table></figure>
<h4 id="重启服务"><a href="#重启服务" class="headerlink" title="重启服务"></a>重启服务</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">service zabbix-agent restart</span><br></pre></td></tr></table></figure>
<h4 id="验证一下:"><a href="#验证一下:" class="headerlink" title="验证一下:"></a>验证一下:</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[root@server18 ~]# zabbix_get -s 192.168.100.100 -k portflow_out[9000]</span><br><span class="line">26163031</span><br><span class="line">[root@server18 ~]# zabbix_get -s 192.168.100.100 -k portflow_in[9000]</span><br><span class="line">167961382</span><br></pre></td></tr></table></figure>
<h2 id="配置Discovery-Rules"><a href="#配置Discovery-Rules" class="headerlink" title="配置Discovery Rules"></a>配置Discovery Rules</h2><p>考虑到自动化,不能每次增加了端口手工去添加item,所以需要配置Discovery Rules来实现根据iptables中的监控端口来自动添加items。<br>发现规则需要返回的数据是JSON格式的,所以使用shell脚本能够实现返回JSON格式的数据即可。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">root@iZu19b0479lZ:~# cat /usr/bin/portdiscovery.sh </span><br><span class="line">#!/bin/bash </span><br><span class="line">printf '{\n'</span><br><span class="line">printf '\t"data":[\n'</span><br><span class="line">export LINE=$(sudo iptables -L |grep "tcp spt"|awk -F ":" '{print $2}'|wc -l)</span><br><span class="line">export N=0</span><br><span class="line">## 利用for循环来输出{"{#PORTNUM}":""}这样的格式,但是如果是最后一次,是不需要“,”的,所以需要加入一个if判断,来判断是否输出到了最后一行,</span><br><span class="line">## 如果是最后一行的话,就需要加“,”</span><br><span class="line">for i in $(sudo iptables -L |grep "tcp dpt"|awk -F ":" '{print $2}');</span><br><span class="line"> do printf "\t\t\t{\"{#PORTNUM}\":\"$i\"}";</span><br><span class="line"> N=$(($N+1))</span><br><span class="line"> if [ $N -eq $LINE ];</span><br><span class="line"> then</span><br><span class="line"> printf '\n'</span><br><span class="line"> else</span><br><span class="line"> printf ',\n'</span><br><span class="line"> fi</span><br><span class="line"> done;</span><br><span class="line">printf ']}\n'</span><br></pre></td></tr></table></figure>
<p>执行结果如下,我现在有3端口</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">root@iZu19b0479lZ:~# /usr/bin/portdiscovery.sh</span><br><span class="line">{</span><br><span class="line"> "data":[</span><br><span class="line"> {"{#PORTNUM}":"9000"},</span><br><span class="line"> {"{#PORTNUM}":"9001"},</span><br><span class="line"> {"{#PORTNUM}":"9002"}</span><br><span class="line">]}</span><br></pre></td></tr></table></figure>
<p>可以看到last data中已经有生成的item了<br><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images%2Fzabbixportflow%2Fportflow.png" alt="image"></p>
<h3 id="4、配置zabbix-web-中Discovery-Rules"><a href="#4、配置zabbix-web-中Discovery-Rules" class="headerlink" title="4、配置zabbix web 中Discovery Rules"></a>4、配置zabbix web 中Discovery Rules</h3><h4 id="添加规则"><a href="#添加规则" class="headerlink" title="添加规则"></a>添加规则</h4><p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images%2Fzabbixportflow%2Fdiscoveryrules1.png" alt="image"></p>
<h4 id="配置item-策略"><a href="#配置item-策略" class="headerlink" title="配置item 策略"></a>配置item 策略</h4><p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images%2Fzabbixportflow%2Fitemprototypes_in.png" alt="image"></p>
<p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images%2Fzabbixportflow%2Fitemprototypes_out.png" alt="image"></p>
<h4 id="配置-Graph-策略"><a href="#配置-Graph-策略" class="headerlink" title="配置 Graph 策略"></a>配置 Graph 策略</h4><p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images%2Fzabbixportflow%2Fgraph_in.png" alt="image"></p>
<p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images%2Fzabbixportflow%2Fgraph_out.png" alt="image"></p>
<h4 id="配置screen"><a href="#配置screen" class="headerlink" title="配置screen"></a>配置screen</h4><p>这个可以根据自己的需求配置screen</p>
<p><img src="http://opensgalaxy.oss-cn-beijing.aliyuncs.com/images%2Fzabbixportflow%2Fscreens.png" alt="image"></p>
<h1 id="至此,zabbix-port流量监控和自动发现策略配置已经完成,举一反三,可以配置任何你想监控的参数和自动发现实现自动化,试试吧!"><a href="#至此,zabbix-port流量监控和自动发现策略配置已经完成,举一反三,可以配置任何你想监控的参数和自动发现实现自动化,试试吧!" class="headerlink" title="至此,zabbix port流量监控和自动发现策略配置已经完成,举一反三,可以配置任何你想监控的参数和自动发现实现自动化,试试吧!"></a>至此,zabbix port流量监控和自动发现策略配置已经完成,举一反三,可以配置任何你想监控的参数和自动发现实现自动化,试试吧!</h1>
</div>
<div>
</div>
<div>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2016/06/27/hdfs-on-centos6-5/" itemprop="url">
Hadoop 2.7.2 HDFS on Centos6.5
</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time itemprop="dateCreated" datetime="2016-06-27T15:02:17+08:00" content="2016-06-27">
2016-06-27
</time>
</span>
<span class="post-category" >
|
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="https://schema.org/Thing">
<a href="/categories/hadoop/" itemprop="url" rel="index">
<span itemprop="name">hadoop</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="文章首发站点:OpensGalaxy-com"><a href="#文章首发站点:OpensGalaxy-com" class="headerlink" title="文章首发站点:OpensGalaxy.com"></a>文章首发站点:<a href="http://OpensGalaxy.com" target="_blank" rel="external">OpensGalaxy.com</a></h2><h2 id="一、环境准备"><a href="#一、环境准备" class="headerlink" title="一、环境准备"></a>一、环境准备</h2><h3 id="1、下载Hadoop-2-7-2-版本"><a href="#1、下载Hadoop-2-7-2-版本" class="headerlink" title="1、下载Hadoop 2.7.2 版本"></a>1、下载Hadoop 2.7.2 版本</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz</span><br></pre></td></tr></table></figure>
<h3 id="2、安装JAVA-7"><a href="#2、安装JAVA-7" class="headerlink" title="2、安装JAVA 7"></a>2、安装JAVA 7</h3><p>Hadoop Version 2.7 需要java7</p>
<p>Oracle官方下载链接页面 <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html" target="_blank" rel="external">http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html</a></p>
<p>jdk-7u79-linux-x64.rpm</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[root@iZ25b872mg2Z ~]# java -version</span><br><span class="line">java version "1.7.0_79"</span><br><span class="line">Java(TM) SE Runtime Environment (build 1.7.0_79-b15)</span><br><span class="line">Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)</span><br></pre></td></tr></table></figure>
<h3 id="3、集群服务器信息"><a href="#3、集群服务器信息" class="headerlink" title="3、集群服务器信息"></a>3、集群服务器信息</h3><p>namenode01 192.168.0.1</p>
<p>datanode01 192.168.0.2</p>
<p>datanode02 192.168.0.3</p>
<h3 id="4、编辑hosts文件"><a href="#4、编辑hosts文件" class="headerlink" title="4、编辑hosts文件"></a>4、编辑hosts文件</h3><p>192.168.0.1 namenode01</p>
<p>192.168.0.2 datanode01</p>
<blockquote>
<p>192.168.0.3 datanode02</p>
</blockquote>
<h3 id="5、建立hadoop用户"><a href="#5、建立hadoop用户" class="headerlink" title="5、建立hadoop用户"></a>5、建立hadoop用户</h3><p>分别在三台服务器上建立hadoop用户</p>
<h3 id="SSH密钥认证"><a href="#SSH密钥认证" class="headerlink" title="SSH密钥认证"></a>SSH密钥认证</h3><h3 id="6、建立namenode01到namenode01、datanode01、02的ssh密钥认证登录"><a href="#6、建立namenode01到namenode01、datanode01、02的ssh密钥认证登录" class="headerlink" title="6、建立namenode01到namenode01、datanode01、02的ssh密钥认证登录"></a>6、建立namenode01到namenode01、datanode01、02的ssh密钥认证登录</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">ssh-copy-id -i .ssh/id_rsa.pub hadoop@datanode01</span><br><span class="line">ssh-copy-id -i .ssh/id_rsa.pub hadoop@datanode02</span><br><span class="line">ssh-copy-id -i .ssh/id_rsa.pub hadoop@namenode01</span><br></pre></td></tr></table></figure>
<h2 id="二、配置HDFS"><a href="#二、配置HDFS" class="headerlink" title="二、配置HDFS"></a>二、配置HDFS</h2><p>namenode01节点操作</p>
<h3 id="1、创建相关存储目录"><a href="#1、创建相关存储目录" class="headerlink" title="1、创建相关存储目录"></a>1、创建相关存储目录</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">tar -zxvf hadoop-2.7.2.tar.gz -C /opt/</span><br><span class="line">mkdir -p /opt/hadoop-2.7.2/data</span><br><span class="line">mkdir -p /opt/hadoop-2.7.2/name</span><br><span class="line">mkdir -p /opt/hadoop-2.7.2/tmp</span><br><span class="line">chown -R hadoop.hadoop /opt/hadoop-2.7.2</span><br></pre></td></tr></table></figure>
<h3 id="2、修改-etc-hadoop-下的四个配置文件【本文只启动HDFS文件系统】"><a href="#2、修改-etc-hadoop-下的四个配置文件【本文只启动HDFS文件系统】" class="headerlink" title="2、修改 etc/hadoop/下的四个配置文件【本文只启动HDFS文件系统】"></a>2、修改 etc/hadoop/下的四个配置文件【本文只启动HDFS文件系统】</h3><p>slaves、core-site.xml、hdfs-site.xml、hadoop-env.sh</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">vim hadoop-env.sh</span><br><span class="line">#增加或修改 JAVA_HOME环境变量</span><br><span class="line">export JAVA_HOME=/usr/java/jdk1.7.0_79</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">vim core-site.xml</span><br><span class="line"></span><br><span class="line"><?xml version="1.0" encoding="UTF-8"?></span><br><span class="line"><?xml-stylesheet type="text/xsl" href="configuration.xsl"?></span><br><span class="line"><configuration></span><br><span class="line"> <property></span><br><span class="line"> <name>fs.defaultFS</name></span><br><span class="line"> <value>hdfs://namenode01:9000</value></span><br><span class="line"> </property></span><br><span class="line"> <property></span><br><span class="line"> <name>hadoop.tmp.dir</name></span><br><span class="line"> <value>file:/opt/hadoop-2.7.2/tmp</value></span><br><span class="line"> </property></span><br><span class="line"></configuration></span><br></pre></td></tr></table></figure>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">vim hdfs-site.xml</span><br><span class="line"></span><br><span class="line"><?xml version="1.0" encoding="UTF-8"?></span><br><span class="line"><?xml-stylesheet type="text/xsl" href="configuration.xsl"?></span><br><span class="line"><configuration></span><br><span class="line"> <property></span><br><span class="line"> <name>dfs.namenode.secondary.http-address</name></span><br><span class="line"> <value>namenode01:50090</value></span><br><span class="line"> </property></span><br><span class="line"> <property></span><br><span class="line"> <name>dfs.replication</name></span><br><span class="line"> <value>2</value></span><br><span class="line"> </property></span><br><span class="line"> <property></span><br><span class="line"> <name>dfs.namenode.name.dir</name></span><br><span class="line"> <value>file:/opt/hadoop-2.7.2/name</value></span><br><span class="line"> </property></span><br><span class="line"> <property></span><br><span class="line"> <name>dfs.datanode.data.dir</name></span><br><span class="line"> <value>file:/opt/hadoop-2.7.2/data</value></span><br><span class="line"> </property></span><br><span class="line"></configuration></span><br></pre></td></tr></table></figure>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">vim slaves</span><br><span class="line">datanode01</span><br><span class="line">datanode02</span><br></pre></td></tr></table></figure>
<p>配置完成</p>
<h3 id="3、将-opt-hadoop-2-7-2-整个目录复制到datanote01-datanode02-的-opt-目录下"><a href="#3、将-opt-hadoop-2-7-2-整个目录复制到datanote01-datanode02-的-opt-目录下" class="headerlink" title="3、将/opt/hadoop-2.7.2 整个目录复制到datanote01 datanode02 的/opt/ 目录下"></a>3、将/opt/hadoop-2.7.2 整个目录复制到datanote01 datanode02 的/opt/ 目录下</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">scp -r /opt/hadoop-2.7.2 hadoop@datanode01:/opt/</span><br><span class="line">scp -r /opt/hadoop-2.7.2 hadoop@datanode02:/opt/</span><br></pre></td></tr></table></figure>
<h3 id="4、在hadoop用户下操作"><a href="#4、在hadoop用户下操作" class="headerlink" title="4、在hadoop用户下操作"></a>4、在hadoop用户下操作</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">vim /home/hadoop/.bash_profile</span><br><span class="line">#增加两个环境变量</span><br><span class="line"></span><br><span class="line">export HADOOP_HOME=/opt/hadoop-2.7.2</span><br><span class="line">export PATH=$PATH:$HADOOP_HOME/bin</span><br><span class="line"></span><br><span class="line">source /etc/profile</span><br></pre></td></tr></table></figure>
<h3 id="5、首次启动需要先在-Master-节点执行-NameNode-的格式化:"><a href="#5、首次启动需要先在-Master-节点执行-NameNode-的格式化:" class="headerlink" title="5、首次启动需要先在 Master 节点执行 NameNode 的格式化:"></a>5、首次启动需要先在 Master 节点执行 NameNode 的格式化:</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hdfs namenode -format</span><br></pre></td></tr></table></figure>
<h3 id="6、启动-hadoop-启动需要在-Master-节点上进行:"><a href="#6、启动-hadoop-启动需要在-Master-节点上进行:" class="headerlink" title="6、启动 hadoop 启动需要在 Master 节点上进行:"></a>6、启动 hadoop 启动需要在 Master 节点上进行:</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">start-dfs.sh</span><br></pre></td></tr></table></figure>
<p>访问HDFS web界面 <a href="http://namenode01:50070/" target="_blank" rel="external">http://namenode01:50070/</a></p>
<h3 id="7、测试一下"><a href="#7、测试一下" class="headerlink" title="7、测试一下"></a>7、测试一下</h3><p>创建文件夹</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hdfs dfs -mkdir /test</span><br></pre></td></tr></table></figure>
<p>上传文件</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hdfs dfs -put /root/hadoop-2.7.2.tar.gz /test/</span><br></pre></td></tr></table></figure>
<p>到这里,一套最简单配置的HDFS分布式集群系统就搭建完毕了。因为本文章只是搭建HDFS分布式文件系统,所以其它都没有配置,算是最小化的HDFS配置吧。</p>
</div>
<div>
</div>
<div>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2016/05/11/aliyun-rds-restore/" itemprop="url">
恢复阿里云RDS数据库到本地数据库
</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time itemprop="dateCreated" datetime="2016-05-11T13:22:01+08:00" content="2016-05-11">
2016-05-11
</time>
</span>
<span class="post-category" >
|
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="https://schema.org/Thing">
<a href="/categories/aliyun/" itemprop="url" rel="index">
<span itemprop="name">aliyun</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="文章首发站点:OpensGalaxy-com"><a href="#文章首发站点:OpensGalaxy-com" class="headerlink" title="文章首发站点:OpensGalaxy.com"></a>文章首发站点:<a href="http://OpensGalaxy.com" target="_blank" rel="external">OpensGalaxy.com</a></h2><h2 id="本文参照阿里云官方rds恢复文档,做了一些补充,原文地址:"><a href="#本文参照阿里云官方rds恢复文档,做了一些补充,原文地址:" class="headerlink" title="本文参照阿里云官方rds恢复文档,做了一些补充,原文地址:"></a>本文参照阿里云官方rds恢复文档,做了一些补充,原文地址:</h2><h2 id="https-help-aliyun-com-knowledge-detail-5973700-html-spm-5176-2020520104-0-0-yreJ8Q"><a href="#https-help-aliyun-com-knowledge-detail-5973700-html-spm-5176-2020520104-0-0-yreJ8Q" class="headerlink" title="https://help.aliyun.com/knowledge_detail/5973700.html?spm=5176.2020520104.0.0.yreJ8Q"></a><a href="https://help.aliyun.com/knowledge_detail/5973700.html?spm=5176.2020520104.0.0.yreJ8Q" target="_blank" rel="external">https://help.aliyun.com/knowledge_detail/5973700.html?spm=5176.2020520104.0.0.yreJ8Q</a></h2><h2 id="1-概述与软件说明"><a href="#1-概述与软件说明" class="headerlink" title="1.概述与软件说明"></a>1.概述与软件说明</h2><h3 id="1-1-概述"><a href="#1-1-概述" class="headerlink" title="1.1 概述"></a>1.1 概述</h3><p>RDS MySQL 使用开源软件 percona-Xtrabackup 对 MySQL 数据库进行备份。需要下载该软件,然后使用该软件进行恢复。</p>
<h3 id="1-2-软件说明"><a href="#1-2-软件说明" class="headerlink" title="1.2 软件说明"></a>1.2 软件说明</h3><h4 id="解压软件"><a href="#解压软件" class="headerlink" title="解压软件"></a>解压软件</h4><p>RDS的备份文件是一个压缩包,需要先解压出来,才能恢复,这里下载解压工具 <a href="http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh?spm=5176.775973700.0.0.Tzewwp&file=rds_backup_extract.sh" target="_blank" rel="external">rds_backup_extract</a> (sh文件),目前只支持64位linux系统。</p>
<p>软件使用方式 sh rds_backup_extract -f backup.tar.gz/back.xb.gz -C directory</p>
<p>-f 参数后面跟要解压的备份集文件</p>
<p>-C 参数后面跟要解压到的目录,-C 参数是可选的,如果不指定就解压到当前目录,如 sh rds_backup_extract -f backup.tar.gz</p>
<p>注:需要通过 bash 来执行 rds_backup_extract 脚本文件。</p>
<h4 id="恢复软件"><a href="#恢复软件" class="headerlink" title="恢复软件"></a>恢复软件</h4><p>恢复软件请下载官方的 Percona-XtraBackup【下载地址:<a href="https://www.percona.com/downloads/XtraBackup/】,官方提供各种平台的安装包,请根据自己的需要下载。RDS" target="_blank" rel="external">https://www.percona.com/downloads/XtraBackup/】,官方提供各种平台的安装包,请根据自己的需要下载。RDS</a> 备份使用的版本是 2.2.9,建议您下载 2.2.9 或更新的版本使用。想要了解工具原理的可以参考官方文档。</p>
<h4 id="环境准备-xtrabackup-mysql"><a href="#环境准备-xtrabackup-mysql" class="headerlink" title="环境准备[xtrabackup mysql]"></a>环境准备[xtrabackup mysql]</h4><h5 id="安装-Percona-XtraBackup"><a href="#安装-Percona-XtraBackup" class="headerlink" title="安装 Percona-XtraBackup"></a>安装 Percona-XtraBackup</h5><p>我使用的Centos6.7 64位操作系统,下载3个rpm包后进行安装,安装前先安装两个perl依赖包:perl-Time-HiRes perl-DBD-MySQL</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install perl-Time-HiRes perl-DBD-MySQL</span><br></pre></td></tr></table></figure>
<p>然后安装</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">rpm -ivh percona-xtrabackup-2.2.9-5067.el6.x86_64.rpm</span><br><span class="line">rpm -ivh percona-xtrabackup-debuginfo-2.2.9-5067.el6.x86_64.rpm</span><br><span class="line">rpm -ivh percona-xtrabackup-test-2.2.9-5067.el6.x86_64.rpm</span><br></pre></td></tr></table></figure>
<h5 id="安装-Mysql5-6"><a href="#安装-Mysql5-6" class="headerlink" title="安装 Mysql5.6"></a>安装 Mysql5.6</h5><p>由于阿里云rds目前最高支持mysql5.6版本,所以在本地安装相应的mysql版本,下载Mysql的yum仓库(根据你的操作系统选择对应仓库列表)</p>
<p><a href="http://dev.mysql.com/downloads/repo/yum/" target="_blank" rel="external">http://dev.mysql.com/downloads/repo/yum/</a></p>
<p>我下载的是 <a href="http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm" target="_blank" rel="external">http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm</a></p>
<p>然后安装一下这个仓库列表</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -ivh mysql57-community-release-el6-8.noarch.rpm</span><br></pre></td></tr></table></figure>
<p>搜索一下仓库</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">[root@server18 ~]# yum repolist all |grep mysql</span><br><span class="line">mysql-connectors-community MySQL Connectors Community enabled: 21</span><br><span class="line">mysql-connectors-community-source MySQL Connectors Community - S disabled</span><br><span class="line">mysql-tools-community MySQL Tools Community enabled: 35</span><br><span class="line">mysql-tools-community-source MySQL Tools Community - Source disabled</span><br><span class="line">mysql-tools-preview MySQL Tools Preview disabled</span><br><span class="line">mysql-tools-preview-source MySQL Tools Preview - Source disabled</span><br><span class="line">mysql55-community MySQL 5.5 Community Server disabled</span><br><span class="line">mysql55-community-source MySQL 5.5 Community Server - S disabled</span><br><span class="line">mysql56-community MySQL 5.6 Community Server enabled: 248</span><br><span class="line">mysql56-community-source MySQL 5.6 Community Server - S disabled</span><br><span class="line">mysql57-community MySQL 5.7 Community Server disabled</span><br><span class="line">mysql57-community-source MySQL 5.7 Community Server - S disabled</span><br></pre></td></tr></table></figure>
<p>禁用mysql5.7</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@server18 ~]# yum-config-manager --disable mysql57-community</span><br></pre></td></tr></table></figure>
<p>启用mysql5.6</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@server18 ~]# yum-config-manager --enable mysql56-community</span><br></pre></td></tr></table></figure>
<p>开始安装</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@server18 ~]# yum install mysql-community-server</span><br></pre></td></tr></table></figure>
<h2 id="2-step-by-step说明"><a href="#2-step-by-step说明" class="headerlink" title="2.step by step说明"></a>2.step by step说明</h2><h3 id="2-1-管理控制台中下载备份文件"><a href="#2-1-管理控制台中下载备份文件" class="headerlink" title="2.1 管理控制台中下载备份文件"></a>2.1 管理控制台中下载备份文件</h3><p>在RDS控制台中的备份与恢复->备份列表,选择一个备份文件进行下载,如下图</p>
<p><img src="https://img.alicdn.com/tps/i1/TB1BLxMHFXXXXaCaXXX.ZRpFpXX-558-220.jpg" alt="image"></p>
<p>下载文件成功后,将备份文件上传至linux系统,上传成功后在Linux系统上检测,如下图:</p>
<p><img src="https://img.alicdn.com/tps/i2/TB1ueZeHpXXXXbwaXXXC9upYpXX-558-48.jpg" alt="image"></p>
<h3 id="2-2-解压备份文件"><a href="#2-2-解压备份文件" class="headerlink" title="2.2 解压备份文件"></a>2.2 解压备份文件</h3><p>解压备份文件前,要先下载好解压工具 rds_backup_extract</p>
<h4 id="1-解压备份文件"><a href="#1-解压备份文件" class="headerlink" title="1. 解压备份文件"></a>1. 解压备份文件</h4><p>执行命令:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sh rds_backup_extract -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data</span><br></pre></td></tr></table></figure>
<p>如下图:</p>
<p><img src="https://img.alicdn.com/tps/i4/TB1LhsqHpXXXXXEapXX285oYpXX-558-44.jpg" alt="image"></p>
<p>查询解压后生成的文件,其中蓝色字体的目录文件为备份生成时RDS存在的数据库</p>
<p><img src="https://img.alicdn.com/tps/i3/TB1OkUsHpXXXXbtaXXXelVhFpXX-558-146.jpg" alt="image"></p>
<h3 id="2-3-恢复数据文件"><a href="#2-3-恢复数据文件" class="headerlink" title="2.3 恢复数据文件"></a>2.3 恢复数据文件</h3><p>解压备份文件前,要先安装好 [Percona-XtraBackup]</p>
<p>( <a href="http://www.percona.com/downloads/XtraBackup/" target="_blank" rel="external">http://www.percona.com/downloads/XtraBackup/</a>) 工具。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data</span><br></pre></td></tr></table></figure>
<p><img src="https://img.alicdn.com/tps/i1/TB1K2xnHFXXXXXrapXXus5mYpXX-558-28.jpg" alt="image"></p>
<p>这一步最后如果看到类似如下输出,显示 completed OK,表示执行成功:</p>
<p><img src="https://img.alicdn.com/tps/i1/TB1P0ZuHpXXXXc.aXXX96zKUpXX-509-68.jpg" alt="image"></p>
<h3 id="2-4-配置文件修改"><a href="#2-4-配置文件修改" class="headerlink" title="2.4 配置文件修改"></a>2.4 配置文件修改</h3><p>由于存在的版本问题,请将解压文件backup-my.cnf中的innodb_fast_checksum,innodb_page_size ,innodb_log_block_size 注释掉,如下图:</p>
<p><img src="https://img.alicdn.com/tps/i4/TB1Vp8FHFXXXXcsapXX3NNrFpXX-558-199.jpg" alt="image"></p>
<h3 id="2-5-修改文件属主"><a href="#2-5-修改文件属主" class="headerlink" title="2.5 修改文件属主"></a>2.5 修改文件属主</h3><p>执行chown -R mysql:mysql /home/mysql/data ,并检查文件所属为mysql用户</p>
<p> <img src="https://img.alicdn.com/tps/i2/TB1Kjg6HpXXXXaUapXXmLllFpXX-558-166.jpg" alt="image"></p>
<h3 id="2-6-启动mysqld进程并且登录验证"><a href="#2-6-启动mysqld进程并且登录验证" class="headerlink" title="2.6 启动mysqld进程并且登录验证"></a>2.6 启动mysqld进程并且登录验证</h3><p>启动mysqld进程,并验证启动成功</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &</span><br></pre></td></tr></table></figure>
<p><img src="https://img.alicdn.com/tps/i1/TB1UJ3dHpXXXXacapXXbjRcFpXX-558-117.jpg" alt="image"></p>
<p>客户端登录mysql验证</p>
<p><img src="https://img.alicdn.com/tps/i3/TB1pe8XHFXXXXaSapXX3zplFpXX-558-200.jpg" alt="image"></p>
<h2 id="注意"><a href="#注意" class="headerlink" title="注意:"></a>注意:</h2><ol>
<li><p>恢复完成后,mysql.user中是不包含rds中的用户的;需要新建;</p>
</li>
<li><p>新建用户前请执行如下sql:</p>
</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">mysql> delete from mysql.db where user<>'root' and char_length(user)>0;</span><br><span class="line">mysql> delete from mysql.tables_priv where user<>'root' and char_length(user)>0;</span><br><span class="line">mysql> flush privileges;</span><br></pre></td></tr></table></figure>
<p> 即可.</p>
<ol>
<li>其他问题</li>
</ol>
<p>因为软件限制,目前恢复只支持Linux下进行。Linux下恢复的数据文件,无论Windows、Linux下,MySQL都可以正常使用.</p>
</div>
<div>
</div>
<div>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a class="post-title-link" href="/2016/05/09/LVS-DR-install/" itemprop="url">
LVS-DR模式安装与配置
</a>
</h1>
<div class="post-meta">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time itemprop="dateCreated" datetime="2016-05-09T15:40:00+08:00" content="2016-05-09">
2016-05-09
</time>
</span>
<span class="post-category" >
|
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="https://schema.org/Thing">
<a href="/categories/linux/" itemprop="url" rel="index">
<span itemprop="name">linux</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">