QQ在线服务: 风舞残阳风舞残阳 年满19岁年满19岁 小罗小罗 晴天晴天 心雨心雨 叮叮肉叮叮肉 小周小周 小童小童 小破孩小破孩 遥望当年遥望当年

用户导购指南

水货IBM笔记本电脑报价

行货IBM笔记本电脑报价

IBM服务器报价

IBM笔记本电脑配件报价

本周水货IBM笔记本电脑特价

IBM笔记本电脑驱动下载

水货IBM笔记本电脑验机流程

水货IBM笔记本电脑保修政策

IBM笔记本电脑FRU查询

IBM笔记本电脑常见问题

IBM笔记本电脑使用手册

笔记本电脑验机软件

论坛积分使用说明

水货IBM笔记本电脑异地购机流程

笔记本电脑购机经历及现场

贵宾申请入口

贵宾用户FTP入口

查看笔记本配置

水货APPLE苹果笔记本电脑报价

 
发新话题
打印

[linux教程] [转贴]MYSQL服务维护笔记

[转贴]MYSQL服务维护笔记

版权声明:可以任意转载,转载时请务必标明原始出处和作者信息
3 C5 ~. X, i$ d; Shttp://www.chedong.com/tech/mysql.html% M1 _4 m, A% _
( [" P7 [5 i. f3 L  s9 y% A
使用MYSQL服务的一些经验,主要从以下几个方面考虑的MYSQL服务规划设计。- ]+ L$ k% m: Q3 s* ^) [* \
1MYSQL服务的安装/配置的通用性;
1 t) V! u! E  q2系统的升级和数据迁移方便性;
# K, m5 w0 }6 ~. d3 X7 g3备份和系统快速恢复;) \7 J) _8 w/ `. I; d9 A" ]# s

8 T2 ?6 I, N1 J, o7 qMYSQL服务器的规划1 w* `. w# D: l( N* O4 U
=================
5 {5 ^/ }) n" x( k为了以后维护,升级备份的方便和数据的安全性,最好将MYSQL程序文件和数据分别安装在“不同的硬件”上。0 D6 s. B8 Q2 ]5 M+ C3 \) v
/  k2 Y* O% ~8 v& g- O( a
/usr%26lt;==操作系统}==%26gt;硬盘1' `3 X+ h- j$ L4 K8 l! \
/home/mysql%26lt;==mysql应用程序
8 k* A: c% O7 h- M...! q4 q. a. c, W" B: |1 }7 x# G; V* E
/data/app_1/%26lt;==应用数据和脚本}==%26gt;硬盘2
. L, `. O* n4 J: \0 R! a( l& g/data/app_2/8 |3 f1 P% Q: Z/ J
/data/app_3/  {5 f* b/ j. ?. Y) |# W& h
% j1 m- d* v  ~* O
mysql服务的安装和服务的启动:
7 y( X9 ]+ C% f; [+ \MYSQL一般使用当前STABLE的版本,尽量不使用--with-charset=选项,我感觉with-charset只在按字母排序的时候才有用,这些选项会对数据的迁移带来很多麻烦。+ y4 @. t8 H2 q1 E8 Z
configure--prefix=/home/mysql2 B2 {3 C! \9 |
make
, D3 r$ D/ j* _$ D8 v2 X, nmakeinstall& J1 ~# X% v8 f2 n
+ b: q3 j8 I3 k  V4 F1 s- A
服务的启动和停止7 d. m6 C' k) {, t$ k, k: \# A
================& b2 N1 _! B* q2 G5 V0 G! n
1复制缺省的mysql/var/mysql到/data/app_1/目录下,2 ^9 j" T; S1 _" ^
2MYSQLD的启动脚本:start_mysql.sh. k# q) r; Y, F! T
#!/bin/sh8 _0 ]: H- ]1 h2 [3 _
rundir=`dirname"$0"`! N  U3 F- x- G* q& |* e
echo"$rundir"
* {! Z* w7 B9 `$ H/home/mysql/bin/safe_mysqld--user=mysql--pid-file="$rundir"/mysql.pid--datadir="$rundir"/var"$@"\
& d/ C! D0 ?% R; d-Omax_connections=500-Owait_timeout=600-Okey_buffer=32M--port=3402--socket="$rundir"/mysql.sock%26& u( V$ e/ S$ B. x  @0 ?2 ^! B
) x$ P/ [5 Z' I4 L" ~
注释:
) E9 \1 _& o: G1 d--pid-file="$rundir"/mysql.pid--socket="$rundir"/mysql.sock--datadir="$rundir"/var
  ?' \# d3 u$ E8 ^7 b目的都是将相应数据和应用临时文件放在一起;+ X! t$ A6 B. l3 k2 ?' A
-O后面一般是服务器启动全局变量优化参数,有时候需要根据具体应用调整;
7 [2 e% w3 a+ S--port:不同的应用使用PORT参数分布到不同的服务上去,一个服务可以提供的连接数一般是MYSQL服务的主要瓶颈;
" x  k6 c& F" U) M4 {' g9 F8 P6 ^2 J- l
修改不同的服务到不同的端口后,在rc.local文件中加入:; E7 l3 Y& S, _  \' W
/data/app_1/start_mysql.sh
8 y9 |* U" B% L! \) |/ K) p/data/app_2/start_mysql.sh$ v  N/ `2 B! {$ H5 c) [
/data/app_3/start_mysql.sh6 }; e5 j' y" C
注意:必须写全路径
: X) R! c( J1 v" a& S6 q' p( r* L
( {+ X. p) A0 ]6 g* D' X4 z! ?3MYSQLD的停止脚本:stop_mysql.sh' D2 u' {. c: U
#!/bin/sh
. \6 J( \. Y* i" V! ~) irundir=`dirname"$0"`8 W( X& S2 ?. g2 E8 A/ f
echo"$rundir"8 Q. K& a/ Q1 G6 p- v
/home/mysql/bin/mysqladmin-umysql-S"$rundir"/mysql.sockshutdown
. ~# n/ H' Q% x
! C/ \; x# H5 t5 M9 y, j5 G使用这个脚本的好处在于:
7 v% E: J+ Q+ Z3 |8 F6 m6 T) h( B) H1多个服务启动:只需要修改脚本中的--port=参数。单个目录下的数据和服务脚本都是可以独立打包的。
2 H5 E1 U1 {4 t, h; M8 v5 P% R% H% C2所有服务相应文件都位于/data/app_1/目录下:比如:mysql.pidmysql.sock,当一台服务器上启动多个服务时,多个服务不会互相影响。但都放到缺省的/tmp/下则有可能被其他应用误删。
* F7 R8 K+ c9 K! ]: {, n7 n. |3当硬盘1出问题以后,直接将硬盘2放到一台装好MYSQL的服务器上就可以立刻恢复服务(如果放到my.cnf里则还需要备份相应的配置文件)。
! f4 c( U  O, A: Q5 m: B) i9 L- E2 U
服务启动后/data/app_1/下相应的文件和目录分布如下:% P  m2 g0 C% [5 L8 P  \$ }
/data/app_1/
- M: j+ W  V* u  d8 d0 hstart_mysql.sh服务启动脚本5 A# i% J' Y: J, J' ?9 i9 i
stop_mysql.sh服务停止脚本
! W7 G4 w/ }- `1 J. G4 xmysql.pid服务的进程ID5 Q. `  J7 m+ U* K0 u- k; A
mysql.sock服务的SOCK
: F3 b8 j- d* ?2 I" `. _var/数据区
; `5 T, _% B+ r7 E* Y* amysql/用户库
# h& k3 }6 ?: e; X3 \7 Papp_1_db_1/应用库
0 u2 z$ {. \; _  w# d' m# Uapp_2_db_2/1 n/ P7 o, ]. ]* _5 a& h
...
; R+ I0 x& b% N# M8 c/data/app_2/5 a2 [! a1 _6 ?' h
...! ~* v! Q% c  w0 K- B- X: D; y8 i5 Q
% H. v$ B! F2 @" b( j
查看所有的应用进程ID:. a; b! T. E8 O8 ?; y+ _8 _6 P
cat/data/*/mysql.pid
+ R( h. r1 M& L$ b& f% h* z/ R0 ?$ z: a4 |# y& c
查看所有数据库的错误日志:
* F& Q$ B1 H3 [cat/data/*/var/*.err
' q. |: u0 D  r9 ^/ _7 p$ X( V
9 ~4 k% i3 A+ V4 k* J+ I个人建议:MYSQL的主要瓶颈在PORT的连接数上,因此,将表结构优化好以后,相应单个MYSQL服务的CPU占用仍然在10%以上,就要考虑将服务拆分到多个PORT上运行了。
! i8 B& \7 [# W! X+ J* y
% q4 G1 M6 m4 r$ W2 B2 V% N4 A4 [- Y服务的备份
# S# s0 t+ J8 ?( v==========/ p1 P. w' Y4 e4 @6 a0 e  `
尽量使用MYSQLDUMP而不是直接备份数据文件,以下是一个按weekday将数据轮循备份的脚本:备份的间隔和周期可以根据备份的需求确定4 ~+ P' N" C5 ^1 W. {$ W
/home/mysql/bin/mysqldump-S/data/app_1/mysql.sock-umysqldb_name│gzip-f%26gt;/path/to/backup/db_name.`data+%w`.dump.gz
/ X, v8 R4 ]0 c因此写在CRONTAB中一般是:
; d5 i4 _% J8 p. f3 ~7 o; q+ D/ j*6***/home/mysql/bin/mysqldump-S/data/app_1/mysql.sock-umysqldb_name│gzip-f%26gt;/path/to/backup/db_name.`data+\%w`.dump.gz2 `* `/ T  o: a5 B, {! q! a
注意:
/ S( n+ K" t- M1在crontab中'%'需要转义成'\%'
3 E$ L6 g9 n3 F, O6 M* B  Q- O2根据日志统计,应用负载最低的时候一般是在早上6点
0 X: J& p& z$ H- s0 r" K/ v) L+ n- L* u, Z0 K  a1 Q- T
先备份在本地然后传到远程的备份服务器上,或者直接建立一个数据库备份帐号,直接在远程的服务器上备份,远程备份只需要将以上脚本中的-S/path/to/msyql.sock改成-hIP.ADDRESS即可。
4 m% Y' S! m9 S: {) v9 ^3 c; n7 y" ^+ T8 m
数据的恢复和系统的升级6 Q! l9 @( {! W% c
======================: J% t8 |  P  ^. C" z2 n: {- E
日常维护和数据迁移:在数据盘没有被破坏的情况下硬盘一般是系统中寿命最低的硬件。而系统(包括操作系统和MYSQL应用)的升级和硬件升级,都会遇到数据迁移的问题。只要数据不变,先装好服务器,然后直接将数据盘(硬盘2)安装上,只需要将启动脚本重新加入到rc.local文件中,系统就算是很好的恢复了。" _9 p5 J- v. s! z% o% b

1 j  A) n* s, ~, A% {灾难恢复:数据本身被破坏的情况下确定破坏的时间点,然后从备份数据中恢复。
(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)

TOP

发新话题