|
MySQL备份恢复之XtraBackup(二)
|
table类型的文件时使用,使用正则表达式指定需要备份的innodb表 |
| -h, --datadir=name |
MySQL数据库的数据文件目录 |
示例1:完全备份与恢复(InnoDB)
(1)备份
脚本内容:
[root@db xtrabak]# more xtra_backup.sh # 2014-04-29 mkdir -p /data/xtrabak/bak_`date +%F`/ echo "backup begin" `date` xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/xtrabak/bak_`date +%F`/ cp -r /var/lib/mysql/test /data/xtrabak/bak_`date +%F`/
注意:xtrabackup只备份数据文件,并不备份数据表结构文件(.frm),所以还需手动拷贝一下,以便xtrabackup恢复时使用
执行备份脚本:
[root@db xtrabak]# sh xtra_backup.sh backup begin Tue Apr 29 15:22:09 CST 2014 xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499) xtrabackup: uses posix_fadvise(). xtrabackup: cd to /var/lib/mysql/ xtrabackup: Target instance is assumed as followings. xtrabackup: innodb_data_home_dir = /var/lib/mysql xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend xtrabackup: innodb_log_group_home_dir = /var/lib/mysql xtrabackup: innodb_log_files_in_group = 2 xtrabackup: innodb_log_file_size = 5242880 >> log scanned up to (1830807) [01] Copying /var/lib/mysql/ibdata1 to /data/xtrabak/bak_2014-04-29/ibdata1 [01] ...done xtrabackup: The latest check point (for incremental): '1830807' xtrabackup: Stopping log copying thread. .>> log scanned up to (1830807) xtrabackup: Transaction log of lsn (1830807) to (1830807) was copied.
从输出可以看出,备份过程首先记录LSN,然后拷贝数据文件(注意,并没有备份表结构文件.frm),最后拷贝并记录LSN。备份完成后,在指定目标目录除了拷贝过来的数据文件ibdata1及表结构文件夹test外,还生成了另外两个文件,分别记录日志及检查点,如下:
[root@db xtrabak]# cd bak_2014-04-29/ [root@db bak_2014-04-29]# ls ibdata1 test xtrabackup_checkpoints xtrabackup_logfile
恢复
删除库test,然后通过备份文件执行恢复,如下:
脚本内容: [root@db xtrabak]# more xtra_prepare.sh
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/xtrabak/bak_`date +%F`/
cp -r /data/xtrabak/bak_`date +%F`/test/ /var/lib/mysql/
rm /var/lib/mysql/ib*
cp /data/xtrabak/bak_`date +%F`/ib* /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
service mysql restart
说明:脚本中步骤依次为:
实施对备份文件进行恢复前的准备;
从备份文件拷贝数据表结构到默认的数据目录;
删除默认数据目录中对应的数据文件并复制备份的数据文件到默认数据目录;
修改默认数据目录权限并重启MySQL服务
执行恢复脚本:
[root@db xtrabak]# sh xtra_prepare.sh xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499) xtrabackup: cd to /data/xtrabak/bak_2014-04-29/ xtrabackup: This target seems to be not prepared yet. xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(1830807) xtrabackup: Temporary instance for recovery is set as followings. xtrabackup: innodb_data_home_dir = ./ xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend xtrabackup: innodb_log_group_home_dir = ./ xtrabackup: innodb_log_files_in_group = 1 xtrabackup: innodb_log_file_size = 2097152 xtrabackup: Temporary instance for recovery is set as followings. xtrabackup: innodb_data_home_dir = ./ xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend xtrabackup: innodb_log_group_home_dir = ./ xtrabackup: innodb_log_files_in_group = 1 xtrabackup: innodb_log_file_size = 2097152 xtrabackup: Starting InnoDB instance for recovery. xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter) InnoDB: The InnoDB memory heap is disabled InnoDB: Mutexes and rw_locks use GCC atomic builtins InnoDB: Compressed tables use zlib 1.2.3 140429 15:28:34 InnoDB: Initializing buffer pool, size = 100.0M 140429 15:28:34 InnoDB |