zoukankan      html  css  js  c++  java
  • xtrabackup备份恢复测试 -转

     

    测试准备

    1、安装xtrabackup工具

           以下测试安装xtrabackup备份恢复工具的二进制包,进行测试。安装的路径为mysql安装路径,本次测试mysql的安装路径为:/home/q/percona-server/。

    tar -xzf percona-xtraback-2.0.0-x86-64.tar.gz

    cp percona-xtrabackup-2.0.0/bin/* /home/q/percona-server/bin

    2、创建备份用户

           创建备份用户backup@localhost,xtraback只能用于本地操作,故只授权本地操作。

    GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO backup@localhost;

    3、声明PATH环境变量

           为xtrabackup备份恢复工具添加到PATH路径中。

    export PATH=$PATH:/home/q/percona-server/bin

    4、创建测试库

    创建测试库backup_test,测试表test。

    mysql -uroot -S/tmp/mysql.sock -e'create database backup_test;'

    mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test (id int);'

    mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test values(1),(2),(3),(4),(5);'

    测试innodb

    1、全备份测试

    全备份测试主要通过测试以下几个场景,对数据备份和恢复进行验证。

    1)备份全库,恢复进行测试。

    进行全库备份:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

           关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/*

           恢复日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME>

           恢复数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/<DATE_TIME>

           数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,备份恢复正确。

    2)修改表结构,备份全库,恢复进行测试。

           修改数据库表结构:

    mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add name varchar(20) default "null";'

    进行全库备份:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

           关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/*

           恢复日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME>

           恢复数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/<DATE_TIME>

           数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,备份恢复正确。

    3)备份某个库,恢复测试

           备份backup_test库

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --user=backup backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    修改当前数据文件:

    mv /home/q/percona-server/data /home/q/percona-server/databak

    mkdir /home/q/percona-server/data

           恢复日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --database=backup_test --user=backup backup/<DATE_TIME>

           恢复数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --database=backup_test --user=backup backup/<DATE_TIME>

    cp /home/q/percona-server/databak/* /home/q/percona-server/data(仅拷贝不在data中的文件)

           数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,备份单个库没有问题。存在的不足是,恢复的时候,数据目录必须为空。也就是说,在恢复阶段,需要将现有的数据目录改名为临时目录;在恢复之后,将原数据目录(现临时目录)下的其他库的内容拷贝到数据目录下即可。

    4)备份单个表,恢复测试

    备份backup_test库

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test --user=backup backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    修改当前数据文件:

    mv /home/q/percona-server/data /home/q/percona-server/databak

    mkdir /home/q/percona-server/data

           恢复日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME>

           恢复数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/<DATE_TIME>

           数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,备份单个表没有问题。存在的不足是,恢复的时候,数据目录必须为空。也就是说,在恢复阶段,需要将现有的数据目录改名为临时目录;在恢复之后,将原数据目录(现临时目录)下的其他库的内容拷贝到数据目录下即可。

    5innodb_file_per_table参数验证

           修改配置文件

    在配置文件中添加innodb_file_per_table配置参数。

           重启数据库server

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    创建测试库backup_test

    mysql -uroot -S/tmp/mysql.sock -e'create database backup_test;'

    mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test (id int);'

    mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test values(1),(2),(3),(4),(5);'

    备份backup_test库

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test --user=backup backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    修改当前数据文件:

    mv /home/q/percona-server/data /home/q/percona-server/databak

    mkdir /home/q/percona-server/data

           恢复日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME>

           恢复数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/<DATE_TIME>

           数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,备份单个库没有问题。存在的不足是,恢复的时候,数据目录必须为空。也就是说,在恢复阶段,需要将现有的数据目录改名为临时目录;在恢复之后,将原数据目录(现临时目录)下的其他库的内容拷贝到数据目录下即可。

    2、增量备份测试

    增量备份测试主要通过测试以下几个场景,对数据备份和恢复进行验证。

    1)全库备份,创建数据库,增量备份,恢复测试

           全库备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

           创建数据库

    mysql -uroot -S/tmp/mysql.sock -e'create database backup_test_tmp;'

    mysql -uroot -S/tmp/mysql.sock -e'create table backup_test_tmp.test (id int);'

    mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test_tmp.test values(1),(2),(3),(4),(5);'

           增量备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/<DATE_TIME> backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/*

           恢复全备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME>

           恢复增量备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME> --incremental-dir=backup/<DATE_TIME_INC>

           恢复增量备份数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/<DATE_TIME>

    数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test_tmp.test;'

    测试结果:

           经验证,备份恢复正确。

    2)全库备份,修改数据表结构,增量备份,恢复测试

           全库备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

           修改数据表结构

    mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add email varchar(20) default "null";'

           增量备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/<DATE_TIME> backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/*

           恢复全备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/<DATE_TIME>

           恢复增量备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME> --incremental-dir=backup/<DATE_TIME_INC>

           恢复增量备份数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/<DATE_TIME>

    数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,增量备份没有问题。存在的不足是,恢复的时候,首先数据目录必须为空,其次,恢复的时候需要单独拷贝增量备份的表结构。也就是说,在恢复阶段,需要将数据目录清空;数据恢复后,需要单独拷贝增量备份文件夹下的表结构。

    3)全库备份,创建数据库,增量备份,修改表结构,增量备份,恢复测试

           全库备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

    创建数据库

    mysql -uroot -S/tmp/mysql.sock -e'create database backup_test_tmp;'

    mysql -uroot -S/tmp/mysql.sock -e'create table backup_test_tmp.test (id int);'

    mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test_tmp.test values(1),(2),(3),(4),(5);'

           增量备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/<DATE_TIME> backup/

    修改数据表结构

    mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add email varchar(20) default "null";'

           增量备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/<DATE_TIME> backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/*

           恢复全备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME>

           恢复增量备份1日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME> --incremental-dir=backup/<DATE_TIME_INC1>

    恢复增量备份2日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ <DATE_TIME> --incremental-dir=backup/<DATE_TIME_INC2>

           恢复增量备份数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/<DATE_TIME>

    数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,增量备份没有问题。存在的不足是,恢复的时候,首先数据目录必须为空,其次,恢复的时候需要单独拷贝最后一次增量备份的表结构。也就是说,在恢复阶段,需要将数据目录清空;数据恢复后,需要单独拷贝最后一次增量备份文件夹下的表结构。

    4)全备份某库,修改库,增量备份,恢复测试

           全备份某库

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test backup/

           修改库

    mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add address varchar(20) default "null";'

           增量备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test --incremental --incremental-basedir=backup/<DATE_TIME> backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/backup_test/*

           恢复全备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/ <DATE_TIME>

           恢复增量备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/ <DATE_TIME> --incremental-dir=backup/<DATE_TIME_INC>

           恢复增量备份数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --copy-back --user=backup backup/<DATE_TIME>

    数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,增量备份没有问题。存在的不足是,恢复的时候,首先数据目录必须为空,其次,恢复的时候需要单独拷贝增量备份的表结构。也就是说,在恢复阶段,需要将现有的数据目录改名为临时目录;在恢复之后,将原数据目录(现临时目录)下的其他库的内容拷贝到数据目录下即可。数据恢复后,还需要单独拷贝增量备份文件夹下的表结构。

    5innodb_file_per_table参数验证

           修改配置文件

    在配置文件中添加innodb_file_per_table配置参数。

           重启数据库server

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    创建测试库backup_test

    mysql -uroot -S/tmp/mysql.sock -e'create database backup_test;'

    mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test (id int);'

    mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test values(1),(2),(3),(4),(5);'

    备份backup_test库

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test --user=backup backup/

    修改库

    mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add phone varchar(20) default "null";'

           增量备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test --incremental --incremental-basedir=backup/<DATE_TIME> backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/backup_test/*

           恢复全备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/ <DATE_TIME>

           恢复增量备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/ <DATE_TIME> --incremental-dir=backup/<DATE_TIME_INC>

           恢复增量备份数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --copy-back --user=backup backup/<DATE_TIME>

    数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

    测试结果:

           经验证,增量备份没有问题。存在的不足是,恢复的时候,首先数据目录必须为空,其次,恢复的时候需要单独拷贝增量备份的表结构。也就是说,在恢复阶段,需要将现有的数据目录改名为临时目录;在恢复之后,将原数据目录(现临时目录)下的其他库的内容拷贝到数据目录下即可。数据恢复后,还需要单独拷贝增量备份文件夹下的表结构。

    3、差分备份测试

           差分备份实际是一次增量备份操作,该过程包含在增量备份测试中,再次不再重复测试。

    测试myisam

    1、全备份测试

           创建myisam数据表

    mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test_myisam (id int) engine=myisam;'

    mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test_myisam values(1),(2),(3),(4),(5);'

           全备份数据表

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test.test_myisam backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/backup_test/test_myisam*

           恢复日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --apply-log --user=backup backup/ <DATE_TIME>

           恢复数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --copy-back --user=backup backup/<DATE_TIME>

    数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test_myisam;'

    测试结果:

           经验证,备份恢复正确。

    2、增量备份测试

    全备份数据表

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test.test_myisam backup/

    修改数据表结构

    mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test_myisam add name varchar(20) default "null";'

           增量备份

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test.test_myisam --incremental --incremental-basedir=backup/<DATE_TIME> backup/

    关闭数据库服务:

    kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s ' ' ' ')

    删除当前数据文件:

    rm -rf /home/q/percona-server/data/backup_test/test_myisam*

           恢复全备份日志文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --apply-log --user=backup backup/ <DATE_TIME>

           恢复增量备份日志文件

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --apply-log --user=backup backup/ <DATE_TIME> --incremental-dir=backup/<DATE_TIME_INC>

           恢复数据文件:

    innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --copy-back --user=backup backup/<DATE_TIME>

    数据验证:

    mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

    mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test_myisam;'

    测试结果:

           经验证,备份恢复正确。

    3、差分备份测试

    差分备份实际是一次增量备份操作,该过程包含在增量备份测试中,再次不再重复测试。

    测试总结

    设置以上场景,经测试,发现xtrabackup备份恢复工具仍然存在一些潜在的问题,但是这些问题完全可以通过规避或者完善脚本的方式,来改进和避免存在的问题。

    实现原理

    对于InnoDB,XtraBackup基于InnoDB的crash-recovery功能进行备份。

    crash-recovery是这样的:InnoDB维护了一个redo log,又称为 transaction log,也叫事务日志,它包含了InnoDB数据的所有改动情况。InnoDB启动的时候先去检查datafile和transaction log,然后应用所有已提交的事务并回滚所有未提交的事务。

    XtraBackup在备份的时候并不锁定表,而是一页一页地复制InnoDB的数据,与此同时,XtraBackup还有另外一个线程监视着transactions log,一旦log发生变化,就把变化过的log pages复制走(因为transactions log文件大小有限,写满之后,就会从头再开始写,新数据可能会覆盖到旧的数据,所以一旦变化就要立刻复制走)。在全部数据文件复制完成之后,停止复制logfile。

    XtraBackup采用了其内置的InnoDB库以read-write模式打开InnoDB的数据文件,然后每次读写1MB(1MB/16KB=64page)的数据,一页一页地遍历,同时用InnoDB的buf_page_is_corrupted()函数检查此页的数据是否正常,如果正常则进行复制,如不正常则重新读取,最多重读10次,如果还是失败,则备份失败退出。复制transactions log的原理也是一样的,只不过每次读写512KB(512KB/16KB=32page)的数据。

    由于XtraBackup其内置的InnoDB库打开文件的时候是rw的,所以运行XtraBackup的用户,必须对InnoDB的数据文件具有读写权限。

    由于XtraBackup要从文件系统中复制大量的数据,所以它尽可能地使用posix_fadvise(),来告诉OS不要缓存读取到的数据(因为这些数据不会重用到了),从而提升性能。如果要缓存的话,大量的数据会对OS的虚拟内存造成很大的压力,其它进程(如mysqld)很有可能会被swap出去,这样就出问题了。同时,XtraBackup在读取数据的时候还尽可能地预读。

    由于不锁表,所以复制出来的数据是不一致的,数据的一致性是在恢复的时候使用crash-recovery进行实现的。

    对于MyISAM,XtraBackup还是首先锁定所有的表,然后复制所有文件。

    应用场景

           基于以上原理,xtrabackup备份恢复工具比较适合数据增长型数据库。对于数据增长型的库,由于数据的增长导致数据备份和恢复的空间和时间上的压力较大。而xtrabackup有增量备份的功能,在短时间内可以通过进行增量备份来保证数据的安全性。而长期来看,仍然需要间断性的进行全库备份。此外,由于xtrabackup对innodb的数据库不进行锁定,因此对要求不影响线上服务的数据备份和恢复较适合。

           而对于数据量无明显增长,且更新为主的数据更新型数据库,xtrabackup显得过于复杂。xtrabackup操作反而不如mysqldump的性能高。

    建议

           通过以上测试,有以下建议,供DBA参考:

    1、改进和完善innobackupex脚本,或者编写备份恢复脚本。避免备份中存在的不足和可能出现的问题。

    2、建议根据数据库的类型,指定周密的备份恢复策略。

    参考:

    http://blog.csdn.net/yongsheng0550/article/details/6682162

     
    阅读(1998) | 评论(0) | 转发(3) |
     
    给主人留下些什么吧!~~
     
    评论热议
    请登录后评论。

    登录 注册


     
  • 相关阅读:
    AtCoder Beginner Contest 183
    Codeforces Round #682 (Div. 2)【ABCD】
    Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)【ABCD】
    Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020
    Educational Codeforces Round 97 (Rated for Div. 2) E. Make It Increasing(最长非下降子序列)
    Educational Codeforces Round 97 (Rated for Div. 2)【ABCD】
    Codeforces Round #678 (Div. 2)【ABCD】
    2019 China Collegiate Programming Contest Qinhuangdao Onsite F. Forest Program(DFS计算图中所有环的长度)
    什么是HTTP隧道,怎么理解HTTP隧道呢?
    Linux查看和关闭后台运行程序的方法
  • 原文地址:https://www.cnblogs.com/kaka100/p/4224847.html
Copyright © 2011-2022 走看看