笔者是一个中小LINUX网站的管理员,零碎构架是:RHEL 4.0 + PHP 4.3 + MYSQL 4.03 +APACHE 1.23。日均IP访问量在200次,一个典型的LINUX小型网站。由于是小型网站,所以没有经费使用磁带机进行零碎备份,使用的DVD光盘刻录机+网络硬盘。随着LINUX的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用LINUX操作零碎。由于LINUX的桌面应用和WINDOWS相比还有一定的差距,所以在企业应用中往往是LINUX和WINDOWS操作零碎共存形成异构网络。在服务器端大多使用LINUX和UNIX的,PC端使用 WINDOWS 9X/2000/XP。下面我们就讲讲在LINUX异构网络备份MYSQL。
一、 本地备份
MYSQL数据库的常用备份方法是使用使用实用程序MYSQLDUMP, 其命令格式如下:
# MYSQLDUMP [OPTIONS] DATABASE [TABLES]
其参数的含义为:
OPTIONS:代表MYSQLDUMP的选项,通过MYSQLDUMP –HELP可以查到。
DATABASE: 代表将要备份的数据库
TABLES: 代表将要备份的表,如果不指定任何表,则备份整个数据库。
使用 MYSQLDUMP进行备份非常简单,如果要备份数据库” PHPBB_DB_BACKUP ”,使用命令:
#MYSQLDUMP –U -P PHPBB_DB_BACKUP > /USR/BACKUPS/MYSQL/ PHPBB_DB_BACKUP.2005.5.6
还可以使用GZIP命令对备份文件进行压缩:
#MYSQLDUMP PHPBB_DB_BACKUP | GZIP > /USR/BACKUPS/MYSQL/ PHPBB_DB_BACKUP.2005.5.6。GZ
恢复数据使用命令:
#MYSQL –U -P PHPBB_DB_BACKUP
二、 备份数据到DVD盘片
随着MYSQL数据量的增大,使用传统CD—R来备份硬盘并不现实,采用CD—RW分卷制作真实太麻烦、磁带机对于中小企业又过于昂贵。另外各个应用程序的复杂度日与剧增, 处理的数据量也都相当庞大,LINUX用户常常遇到的问题就是 : 有什么办法可以经济快捷的对数据做备份与保存。随着DVD刻录机和盘片的价格迅速降低,使用DVD刻录机用来备份LINUX操作零碎非常明智的。
1、安装
下面以IDE接口的内置刻录设备为例,介绍在LINUX环境中使用DVD刻录机。LINUX 需要将IDE接口的刻录设备虚拟为SCSI设备才能进行DVD刻录。2.4以上内核LINUX发行版本包含了已编译进内核的 SCSI 仿真,所以只要对启动文件作一些小改动;USB或1394(FIREWIRE)接口的外置刻录机就简单多了。
把DVD刻录机设备接入计算机第二个IDE接口(DEV/HDC),开启电源。假设零碎用GRUB启动,用文本编辑器打开 /BOOT/GRUB/GRUB.CONF,找到以“KERNEL”开头的一行,在这行内容的未尾参加“HDC=IDE-SCSI”,例如: “KERNEL /VMLINUZ-2.4.20-8 RO ROOT=LABEL=/ HDC=IDE-SCSI”。
2、安装刻录软件
DVD+RW-TOOLS :一个包含有用于刻录DVD和映像的软件工具包,包括:GROWISOFS和DVD+RW-FORMAT。官方站点:HTTP://FY.CHALMERS.SE/~APPRO/LINUX/DVD+RW/,
CDRDAO :DAO即是DISK-AT-ONCE(实时刻录),是一种在烧录进程中没有音轨间的两秒缓冲的刻录方法。它可以对磁盘的布局和磁道进行完全的控制,这一功能在刻录多来源的盘片相当有帮助。
CDRTOOLS:包含了一套用于CD、DVD刻录的工具。GROWISOFS在创建映像时会使用这个软件包中的MKISOFS工具,并且用户可以使用READCD来从一个现有的DVD上创建ISO映像。此外,CDRECORD应用程序可被用于扫描连接零碎上的CD/DVD刻录机,并且可以使用它来将ISO映像刻录到CD— R(W)光盘上。通常大多数LINUX版本包括这个软件,也可以下载使用:HTTP: //FRESHMEAT.NET/REDIR/CDRECORD/35795/URL_HOMEPAGE/CDRECORD.HTML
DVDRECORD:命令行下的DVD刻录软件。命令行下的DVD刻录可用于很多种情形,比如当我们通过远程访问主机时,机器上的图形界面无法启动时,或者机器由于某些原因无法启动GUI时。此外,在完成一些备份等自动重复的功能时,也需要使用命令行工具。
以上介绍了一下必须的软件和相关下载网址,安装进程比较简单,这里就不赘述了。
3、命令行下刻录
使用DVD+RW-TOOLS 进行刻录工作
GROWISOFS 是DVD+RW-TOOLS一个工具,GROWLSOFS访问其刻录设备使用的是一种不同的方式。它使用/DEV下面的UNIX路径来连接刻录机。不同的零碎和发行版中用于刻录机的路径不尽相同,所以最好的方法是查看发行版中的帮助。在一些零碎中,一个名为/DEV/DVD的软链接会被设置成指向可用的 DVD刻录机,在本文中,使用/DEV/DVD来指定刻录机,如果零碎中路径设置不同,那么请使用合适的路径将其取代。
(1)格式化可读写DVD光盘
可以使用DVD+RW-TOOLS工具包中提供的DVD十RW—FORMAT命令。它有两种格式化DVD光盘的方式:快速模式、完全模式。快速模式:
#DVD+RW-FORMAT -BLANK /DEV/DVD
完全模式:
#DVD+RW-FORMAT -BLANK=FULL /DEV/DVD
(2)将文件存储至DVD刻录盘:
DVD 和普通的光盘一样,使用的也是ISO9660文件零碎,以及同样的通用扩展(JOLIET和ROCKRIDGE)。GROWLSOFS提供了一种简单的将文件或目录存储至DVD刻录盘的方法。先用调用MKISOFS工具来创建一个映像,并且无需在将该映像存储至硬盘之前就刻录下来。其基本的命令格式如下:
#GROWISOFS -DVD-COMPAT -Z /DEV/DVD -J -R /PATH/TO/HOME/CAO
此命令将/PATH/TO/HOME/CAO目录下的文件制作一个映像并且刻录到的DVD光盘。
二、网络备份
将MYSQL数据放在一台计算机上是不安全的,所以应当把数据备份到局域网中其他计算机中。假设MYSQL服务器IP地址是:192.168.1.3。局域网使用LINUX的远程计算机IP地址是192.168.1.17;局域网使用WINDOWS的远程计算机IP地址是192.168.1.18。网络拓扑见图1.
1. 通过NFS网络备份
类似于WINDOWS的网络共享,UNIX(LINUX)零碎也有自己的网络共享,那就是NFS(网络文件零碎),在LINUX客户端挂接(MOUNT)NFS磁盘共享之前,必须先配置好NFS服务端。LINUX零碎NFS服务端配置方法如下:
(1)修改 /ETC/EXPORTS,增加共享目录
/EXPORT/HOME/SUNKY 192.168.1.17(RW)
/EXPORT/HOME/SUNKY1 *(RW)
/EXPORT/HOME/SUNKY2 LINUX-CLIENT(RW)
注:/EXPORT/HOME/目录下的SUNKY、SUNKY1、SUNKY2是准备共享的目录,10.140.133.23、*、LINUX- CLIENT是被允许挂接此共享LINUX客户机的IP地址或主机名。如果要使用主机名LINUX-CLIENT必须在服务端主机/ETC/HOSTS文件里增加LINUX-CLIENT主机IP定义。格式如下:
192.168.1.17 LINUX-CLIENT
若修改/ETC/EXPORT文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。使用命令EXPORTFS -RV也可以达到同样的效果。LINUX客户端挂接(MOUNT)其他LINUX零碎或UNIX零碎的NFS共享。这里我们假设192.168.1.17 是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/ETC/HOSTS文件里增加服务端IP定义。 /EXPORT/HOME/SUNKY为服务端共享的目录。如此就可以在LINUX客户端通过/MNT/NFS来访问其它LINUX零碎或UNIX零碎以 NFS方式共享出来的文件了。
把MYSQL数据备份到使用LINUX的远程计算机需要在两端都安装NFS协议(NETWORKFILE SYSTEM),远程NFS计算机安装NFS协议后还要修改配置文件:/ETC/EXPORTS,参加一行:
/USR/BACKUPS/MYSQL/ 192.168.1.17 (RW, NO_ROOT_SQUASH)
表示将/USR/BACKUPS/MYSQL/目录共享。这个目录具有远程ROOT用户读写权限。保存NFS配置文件,然后使用命令:
#EXPORTFS -A –R
然后重新启动NFS服务:
#SERVICE NFSD START
远程计算机设定后,在MYSQL服务器/MNT 目录下建立一个BACKUP_SHARE目录:
#MKDIR /MNT/BACKUP_SHARE
将远程的LINUX计算机的/USR/BACKUPS/MYSQL/目录挂载到MYSQL服务器的/MNT/BACKUP_SHARE目录下:
# MOUNT -T NFS 192.168.1.17:/USR/BACKUPS/MYSQL /MNT/BACKUP_SHARE
将目录挂载进来后,只要进入/MNT/BACKUP_SHARE 目录,就等于到了IP地址:192.168.1.7那部NFS计算机的/USR/BACKUPS/MYSQL目录中。下面使用MYSQLDUMP把“PHPBB_DB_BACKUP”备份到远程计算机:
# MYSQLDUMP PHPBB_DB_BACKUP > /MNT/BACKUP_SHARE/ PHPBB_DB_BACKUP.2005-5-6
2. 通过SAMBA网络备份
WINDOWS 网络共享的核心是SMB/CIFS,在LINUX下要挂接(MOUNT)WINDOWS的磁盘共享,就必须安装和使用SAMBA软件包。如今流行的 LINUX发行版绝大多数已经包含了SAMBA软件包,如果安装LINUX零碎时未安装SAMBA请首先安装SAMBA。当然也可以到 WWW.SAMBA.ORG网站下载SAMBA软件包,如今最新的版本是3.0.10版。然后WINDOWS计算机上建立一个目录(/ARC)并且共享,赋予其读写权限。同样在MYSQL服务器/MNT 目录下建立一个BACKUP_SHARE1目录,然后进行挂载:
# MOUNT -T SMBFS -O USERNAME=CJH, PASSWORD=XXXX //192.168.1.18/ARC /MNT/BACKUP_SHARE
最后使用命令进行备份:
# MYSQLDUMP PHPBB_DB_BACKUP > /MNT/BACKUP_SHARE/ PHPBB_DB_BACKUP.2005-5-6