如何使用mylvmbackup在Ubuntu 8.10上备份MySQL数据库
版本1.0
作者:Falko Timme
mylvmbackup是一个用于快速创建MySQL备份的Perl脚本。 它使用LVM的快照功能来实现。 要执行备份,mylvmbackup在所有表上获取读取锁,并将所有服务器缓存清空到磁盘,创建包含MySQL数据目录的卷的快照,然后再次解锁表。 本文介绍如何在Ubuntu 8.10服务器上使用它。
我不会保证这将为您工作!
1初步说明
我假设MySQL已经在您的系统上设置并运行了。 系统必须使用LVM,MySQL数据目录( / var / lib / mysql )应该有一个自己的LVM分区(althouth这是可选的)。
如果您已阅读“ 备份(还原)”LVM分区使用LVM快照,您将了解到,LVM快照需要一些未使用的快照分区。 我的测试系统有一个第二个当前未使用的硬盘驱动器/ dev / sdb ,将由mylvmbackup用于为备份创建一个临时逻辑卷。
这是我目前的情况:
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
20G 808M 18G 5% /
tmpfs 252M 0 252M 0% /lib/init/rw
varrun 252M 56K 251M 1% /var/run
varlock 252M 0 252M 0% /var/lock
udev 252M 2.6M 249M 2% /dev
tmpfs 252M 0 252M 0% /dev/shm
/dev/sda1 471M 23M 425M 6% /boot
/dev/mapper/server1-mysql
8.9G 170M 8.3G 2% /var/lib/mysql
root@server1:~#
如你所见,我有两个LVM分区, /和/ var / lib / mysql (加上这里未显示的LVM交换分区)。 卷组命名为server1 ,卷名为swap , root和mysql :
root@server1:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name server1
PV Size 29.52 GB / not usable 3.66 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 7557
Free PE 0
Allocated PE 7557
PV UUID 0gCmpE-FGel-9ayg-E2yg-kkEu-B72X-kFvaye
root@server1:~#
root@server1:~# vgdisplay
--- Volume group ---
VG Name server1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 29.52 GB
PE Size 4.00 MB
Total PE 7557
Alloc PE / Size 7557 / 29.52 GB
Free PE / Size 0 / 0
VG UUID PH5Hpc-jqeP-BFYs-wWlA-hu03-qwuQ-0cNIu3
root@server1:~#
root@server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/server1/swap
VG Name server1
LV UUID RCeLCK-MO5p-xoMq-SwTT-n2NV-GaP6-GaemDp
LV Write Access read/write
LV Status available
# open 2
LV Size 1.00 GB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Name /dev/server1/root
VG Name server1
LV UUID 5Wen7n-xYmh-MQz1-fKH5-0XXa-1y2t-V3PYbb
LV Write Access read/write
LV Status available
# open 1
LV Size 19.53 GB
Current LE 5000
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
--- Logical volume ---
LV Name /dev/server1/mysql
VG Name server1
LV UUID wk8yb6-fDl8-4tg3-tneT-1dDe-wWdy-AfGZ5I
LV Write Access read/write
LV Status available
# open 1
LV Size 8.99 GB
Current LE 2301
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:2
root@server1:~#
以下是我的两个硬盘驱动器的概述:
root@server1:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0009353f
Device Boot Start End Blocks Id System
/dev/sda1 * 1 62 497983+ 83 Linux
/dev/sda2 63 3916 30957255 5 Extended
/dev/sda5 63 3916 30957223+ 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
root@server1:~#
2准备/ dev / sdb
在我们可以在/ dev / sdb上创建快照之前,我们必须对其进行分区(Linux LVM)并将其添加到我们的卷组( server1 )。
我现在将创建分区/ dev / sdb1并将其添加到server1卷组中:
fdisk /dev/sdb
server1:〜#fdisk / dev / sdb 设备既不包含有效的DOS分区表,也不包含Sun,SGI或OSF disklabel 构建新的DOS磁盘标签。 更改只会保留在内存中, 直到你决定写它们。 之后,当然是以前的 内容将无法恢复。 此磁盘的柱面数设置为1305。 没有什么问题,但是这大于1024, 并且在某些设置中可能会导致以下问题: 1)在引导时运行的软件(例如,LILO的旧版本) 2)从其他操作系统启动和分区软件 (例如DOS FDISK,OS / 2 FDISK) 警告:分区表4的无效标志0x0000将被w(rite)修正 命令(m帮助): < - n
命令行动 e扩展 p主分区(1-4)
< - p
分区号(1-4): < - 1
第一个柱面(1-1305,默认为1): < - [ENTER]
使用默认值1 最后一个圆柱体或+大小或+ sizeM或+ sizeK(1-1305,默认1305): < - [ENTER]
使用默认值1305 命令(m为帮助): < - t
所选分区1 十六进制代码(类型L列出代码): < - 8e
更改系统类型的分区1到8e(Linux LVM) 命令(m为帮助): < - w
分区表已被更改! 调用ioctl()重新读取分区表。 同步磁盘
pvcreate /dev/sdb1
vgextend server1 /dev/sdb1
就是这样 - 我们不需要创建任何卷 - 这将由mylvmbackup自动完成。