专注于InnoDB、XtraBackup的热备工具,是C语言开发的程序,专用于备份InnoDB及XtraDB引擎对象
XtraBackup联机备份:
[root@mysql1 /]# rpm -ivh percona-xtrabackup-2.2.3-4982.el6.x86_64.rpm
[mysql@mysql1 ~]$ echo "export PATH=/usr/bin:\$PATH" >> /home/mysql/.bash_profile
(system@localhost) [(none)]> create user xtrabk@'localhost' identified by 'onlybackup';
(system@localhost) [(none)]> grant reload,lock tables,Replication client,super on *.* to xtrabk@'localhost';
[mysql@mysql1 ~]$ xtrabackup -help
使用xtrabackup命令进行备份
xtrabackup命令有两种模式,--backup(备份模式)和--prepara(恢复准备模式)
--backup指定当前的操作模式,backup就是说要创建备份集
--target-dir指定备份集的存储路径
--defaults-file从MySQL的选项文件中读取参数
[mysql@mysql1 ~]$ xtrabackup --defaults-file=/data/mysqldata/3306/my.cnf --backup --target-dir=/data/mysqldata/backup/full_bak
使用innobackupex命令进行备份,还能备份非InnoDB对象,innobackupex内部调用xtrabackup进行备份
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' /data/mysqldata/backup/
创建增量备份:
在上一步全量备份完成后,修改InnoDB表的数据,进行第一次增量备份
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup/2014-07-10_09-29-32 /data/mysqldata/backup_inc
1)在做完第一次增量备份后,继续修改InnoDB表的数据,进行第二次增量备份
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup/2014-07-10_09-29-32 /data/mysqldata/backup_inc
此种方式对应Oracle的累积增量备份
2)在做完第一次增量备份后,继续修改InnoDB表的数据,进行第二次增量备份
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup_inc/2014-07-10_09-31-36 /data/mysqldata/backup_inc
此种方式对应Oracle的差异增量备份
--incremental:告诉xtrabackup这次是要创建增量备份
--incremental-basedir:指定一个全量备份的路径,作为增量备份的基础
--incremental-lsn:指定备份开始时的LSN
InnoDB的Log Sequence Number日志序列号LSN。InnoDB的每个页(Page)都保存有LSN,这个序号能够标识该页最后修改时间,增量备份正是根据这个LSN来的,因为每次备份(含xtrabackup和innobackupex),XtraBackup都会在备份集中创建一个xtrabackup_checkpoints文件,这个文件中的内容就记录了最后修改的LSN序号。创建增量备份集时,只需要从上次的备份集中找到xtrabackup_checkpoints文件,读取最新的LSN,而后在创建增量是,选择LSN大于这个序号的页,以及这期间产生的二进制日志就可以了,甚至不需要对比全量备份集和当前数据库的数据文件
XtraBackup备份工作机制:
XtraBackup本质是基于InnoDB的故障恢复(crash-recovery)机制,先复制InnoDB的数据文件,复制的时候数据仍有可能正在读写,复制出的文件可能是不一致的状态,所以在备份过程中,需要定时扫描日志并作记录,而后通过备份的日志文件执行故障恢复,使文件恢复到一个一致的状态,使数据库达到可用状态。核心就是InnoDB维护的重做日志(redo log)。XtraBackup会在启动时先记录下当前的日志序列号(LSN),然后开始复制数据文件,同时XtraBackup运行一个后台进程,监控着事务日志,并复制新发生的修改。这项操作会在XtraBackup备份执行过程中一直执行,就是log scanned up to信息,以确保记录下所有备份期间数据库发生的修改。接下来是准备进程(prepare process),在这一步中,XtraBackup对复制的数据文件执行故障恢复,将数据库恢复到可用状态
执行恢复:全量恢复和增量恢复:
准备恢复(prepare):就是为恢复做准备。备份集没有办法直接拿来用,所有需要一个对备份集做准备的过程
对于xtrabackup对应的参数是--prepare,对于innobackupex对应的参数是--apply-log
执行恢复(copy-back):备份集准备好以后,可以执行恢复了
对于xtrabackup没有特殊说明,简单cp/mv过程,对于innobackupex对应的参数是--copy-back,它的功能是将制定的备份集,恢复到指定的路径下
首先对全量备份做恢复的准备工作
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log --redo-only /data/mysqldata/backup/2014-07-10_09-29-32/
--apply-log从指定的选项文件中读取配置信息并应用日志等,表示要做的是对备份集做恢复的准备工作
--redo-only如果进行准备工作的备份集操作完成后,还有其他增量备份集待处理,那么就必须指定本参数
继续执行innobackupex命令,应用增量备份,这次要操作的备份集不是最后一份,需要再指定--redo-only参数
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log /data/mysqldata/backup/2014-07-10_09-29-32/ --incremental-dir=/data/mysqldata/backup_inc/2014-07-10_09-31-36 /
继续执行innobackupex命令,,应用增量备份,这次要操作的备份集就是最后一份,不需要再指定--redo-only参数
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log /data/mysqldata/backup/2014-07-10_09-29-32/ --incremental-dir=/data/mysqldata/backup_inc/2014-07-10_09-35-13/
注意在备份集进行恢复的准备过程中,不要随意中断该任务,否则有可能导致备份集处于不一致状态。由于XtraBackup是直接在备份集中进行准备,一旦有异常,搞不好想恢复都没办法。建议操作之前,将备份集备份一次。
建议再执行一遍innobackupex --apply-log
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log /data/mysqldata/backup/2014-07-10_09-29-32/
执行文件的恢复
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --copy-back /data/mysqldata/backup/2014-07-10_09-29-32/
恢复操作可以在任意机器上执行,只要您拥有完整备份集,可以把XtraBackup当做数据库迁移工具
打包和压缩备份集
XtraBackup支持流(stream)模式,能够直接将备份输出到指定的格式进行处理,比如tar或xbstream
[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password=onlybackup --stream=tar /tmp | gzip -> /data/mysqldata/backup/xtra_fullbackup.tar.gz
全备
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' /data/mysqldata/backup/
修改数据
(system@localhost) [mysql]> create table mytable(a int);
Query OK, 0 rows affected (0.06 sec)
(system@localhost) [mysql]> insert into mytable values (1);
Query OK, 1 row affected (0.04 sec)
(system@localhost) [mysql]> insert into mytable values (2);
Query OK, 1 row affected (0.01 sec)
(system@localhost) [mysql]> insert into mytable values (3);
Query OK, 1 row affected (0.00 sec)
(system@localhost) [mysql]> insert into mytable values (4);
Query OK, 1 row affected (0.00 sec)
(system@localhost) [mysql]> insert into mytable values (5);
Query OK, 1 row affected (0.01 sec)
进行第一增量备份

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),