mysql的物理备份分两种:
冷备:停止服务,拷贝data目录,然后重启服务,完成。如果需要恢复,停止服务,删掉当前在用data,把之前拷贝的data复制过来,再开启服务,就OK了!因为冷备需要停掉服务才能实施,顾真正生产中基本不用。
热备:相对于冷备而言,热备的意思是在不影响服务的情况下,做数据的物理备份,常用工具XtraBackup。
安装篇:
1>下载:
https://www.percona.com/downloads/XtraBackup/LATEST/
二进制安装包:
percona-xtrabackup-2.2.9-5067-Linux-x86_64.tar.gz
2>解压:
>>tar -zxvf percona-xtrabackup-2.2.9-5067-Linux-x86_64.tar.gz
3>配置环境变量:
>>vim /etc/profile
export PATH=$PATH:/usr/local/percona-xtrabackup-2.2.9-Linux-x86_64/bin #你自己放的位置
!!!之后就可以直接使用了
赋权限篇:
为备份开通专用的用户和权限
mysql>create user beifen@'localhost' identified by '123123'; #创建用户
mysql>grant reload,process,lock tables,replication client on *.* to beifen@'localhost'; #赋予权限
创建备份文件存储目录
mkdir /beifen
参数篇:
xtrabackup包内有许多工具,这里我们只提我们用到的innobackupex!
--apply-log
应用 BACKUP-DIR 中的 xtrabackup_logfile事务日志文件。
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未
同步至数据文件中的事务。
因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件使
得数据文件处于一致性状态。
--copy-back
从备份中复制以前生成的备份中的所有文件目录到它们原来的位置。
拷贝先前备份所有文件到它们的原始路径。但原路径下不能有任何文件或目录,
除非指定 --force-non-empty-directories 选项。
--move-back
从备份中移动先前制作的备份中的所有文件目录到实际的datadir位置。 谨慎使用,因为它删除备份文件。
--databases=LIST
指定备份的数据库和表,格式为:--database="db1[.tb1] db2[.tb2]"多个库之间以空格隔开,
如果此选项不被指定,将会备份所有的数据库。
--defaults-file=[MY.CNF]
指定MySQL配置文件:只能从给定的文件中读取默认选项。且必须作为命令行上的第一个选项;
必须是一个真实的文件,它不能是一个符号链接。
--host=HOST
该选项指定连接到数据库服务器所需要的host,接受字符串参数
--incremental
这个选项告诉 xtrabackup 创建一个增量备份,而不是完全备份。
它传递到 xtrabackup 子进程。当指定这个选项,可以设置 --incremental-lsn 或 --incremental-basedir。
如果这2个选项都没有被指定,--incremental-basedir 传递给 xtrabackup 默认值,
默认值为:基础备份目录的第一个时间戳备份目录。
--incremental-basedir=DIRECTORY
该选项接受一个字符串参数,该参数指定作为增量备份的基本数据集的完整备份目录。它与 --incremental 一起使用。
--incremental-dir=DIRECTORY
该选项接受一个字符串参数,该参数指定了增量备份将与完整备份相结合的目录,以便进行新的完整备份。
它与 --incremental 选项一起使用。
--parallel=NUMBER-OF-THREADS
此选项接受一个整数参数,指定xtrabackup子进程应用于同时备份文件的线程数。
请注意,此选项仅适用于文件级别,也就是说,如果您有多个.ibd文件,则它们将被并行复制;
如果您的表一起存储在一个表空间文件中,它将不起作用。
--user=NAME
该选项指定连接到数据库服务器所需要的user,接受字符串参数
--password=WORD
该选项指定连接到数据库服务器所需要的password,接受字符串参数
--port=PORT
该选项指定连接到数据库服务器所需要的port,接受字符串参数
--redo-only
在“准备基本完整备份” 和 “合并所有的增量备份(除了最后一个增备)”时使用此选项。
它直接传递给xtrabackup的 xtrabackup --apply-log-only 选项,
使xtrabackup跳过"undo"(回滚)阶段,只做"redo"(重做)操作。
如果后面还有增量备份应用到这个全备,这是必要的。
--rsync
此选项可优化本地文件(非InnoDB)的传输。rsync工具一次性拷贝所有非InnoDB文件,
而不是为每个文件单独创建cp,在备份恢复很多数据库和表时非常高效。
此选项不能和 --stream 一起使用。
--socket=SOCKET
此选项指定使用UNIX域套接字连接到本地数据库服务器时要使用的套接字。 该选项接受字符串参数。
--use-memory=B
此选项接受一个字符串参数,该参数指定xtrabackup在准备备份时用于崩溃恢复的内存量(以字节为单位)。
支持倍数提供单位(例如1MB,1GB)。 它仅与选项--apply-log一起使用。
它直接传递给xtrabackup的--use-memory选项。
2) xtrabackup 参数选项
--apply-log-only
这个选项使在准备备份(prepare)时,只执行重做(redo)阶段,这对于增量备份非常重要。
使用篇:
##完全备份
innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123123 --socket=/tmp/mysql.sock /beifen
#可以看到整个备份过程:连接数据库,开始拷贝redo log,拷贝innodb表文件,锁表、拷贝非innodb表文件,停止拷贝redo log,解锁。
##全备恢复
关闭数据库并删除数据文件
(1)准备(prepare)一个完全备份: --apply-log ( /data/pxb/2017-04-24_02-46-11/ 为备份目录,执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared )
innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/
(2)执行恢复操作:
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/pxb/2017-04-24_02-46-11/
(3)更改 data/ 目录权限并启动mysql:
chown -R mysql.mysql data/
service mysqld start
##增量备份
--完成一次全备
innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123456 --socket=/.../mysql.sock /beifen
--以全备为基准,进行增量备份
innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123456 --socket=/.../mysql.sock --incremental /beifen/inc --incremental-basedir=/beifen/2017-04-24_02-46-11/ --parallel=2
--以最近一次增量备份为基准
innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123456 --socket=/.../mysql.sock --incremental /beifen/inc --incremental-basedir=/beifen/inc/2017-04-28_01-09-40/ --parallel=2
恢复(分步骤)
1>准备一个全备
innobackupex --apply-log --redo-only /beifen/2017-04-24_02-46-11/
2>将增量1应用到完全备份
innobackupex --apply-log --redo-only /beifen/2017-04-24_02-46-11/ --incremental-dir=/beifen/inc/2017-04-28_01-09-40/
3>将增量2应用到完全备份,注意不加 --redo-only 参数了(最后一次增量备份应用到全备时,不用加--redo-only)
innobackupex --apply-log /beifen/2017-04-24_02-46-11/ --incremental-dir=/beifen/inc/2017-04-28_01-27-46/
4>对以上准备好的备份执行恢复操作
innobackupex --apply-log /beifen/2017-04-24_02-46-11/
备份目下文件说明篇:
backup-my.cnf:
备份命令用到的配置选项信息
ib_buffer_pool:
buffer pool 中的热数据,当设置 innodb_buffer_pool_dump_at_shutdown=1 ,在关闭 MySQL 时,会把内存中的热数据保存在磁盘里 ib_buffer_pool 文件中,位于数据目录下。
ibdata1:
备份的共享表空间文件;
xtrabackup_binlog_info:
mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置;
xtrabackup_checkpoints:
备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
xtrabackup_info:
记录备份的基本信息,uuid、备份命令、备份时间、binlog、LSN、以及其他加密压缩等信息。
xtrabackup_logfile:
备份的重做日志文件。