努力, 努力, 再努力
全部博文(220)
分类: Mysql/postgreSQL
2015-05-22 16:40:45
转自: http://blog.csdn.net/m582445672/article/details/7649357
备份前特别提醒:
1. 在备份的MySQL数据库的my.cnf文件中,必须加入datadir={PATH},否则找不到备份数据的路径.
2. 在备份过程中,把INNODB数据文件备份完成后,会锁住整个库,并开始复制MYISAM等非事务引擎的数据和.frm;这个对于我们的系统来说,只需1-2秒就能完成
A. 全库备份详解
命令:
innobackupex-1.5.1--user=root --password=root --database=total2--defaults-file=/home/mysql-server/mysql3/my.cnf /home/mysql-server/backup
参数说明:
innobackupex-1.5.1:为封装Xtrabackup的perl脚本. 因为Xtranbackup本身不能备份MyISAM表.使用这个自带的脚本.就可以一起备份了.
User : 连接数据库的用户名
Password: 连接数据库的密码
Database: 需要备份的数据库
Defaults-file:备份数据库的配置文件路径
/home/mysql-server/backup: 这个是自己定义一个备份文件存放的路径
注: --slave-info: 在备机上加入此参数可以记录master 的pos点
B1.增量备份详解
命令:(第一次增量备份)
innobackupex-1.5.1 --user=root--password=root --database=total2 --defaults-file=/home/mysql-server/mysql3/my.cnf–incremental --incremental-basedir=/home/mysql-server/backup/2012-02-21_20-14-05 /home/mysql-server/backup/
参数说明:
–incremental : 代表这个备份为增量备份.
--incremental-basedir: 指定前次完全备份或者增量备份文件的位置。这里的增量备份其实只针对的是InnoDB,对于MyISAM来说,还是完全备份。(这里的/home/mysql-server/backup/2012-02-21_20-14-05是指完整备份的路径.写上这个路径.Xtrabackup会根据上次备份的LSN进行增量备份)
/home/mysql-server/backup/ :这个是自己定义一个备份文件存放的路径(例如:最后备份的生成文件名为2012-02-21_20_50_04)
B2.增量备份详解
命令:(第二次增量备份)
innobackupex-1.5.1--user=root --password=root --database=total2 --defaults-file=/home/mysql-server/mysql3/my.cnf--incremental --incremental-basedir=/home/mysql-server/backup/2012-02-21_20_50_04 /home/mysql-server/backup/
参数说明:
--incremental-basedir:可以看着,这次增量备份的文件名是,第一次增量备份的文件名(会得到第一次增量备份的LSN继续备份)
C.数据库整库还原
还原时,特特别别,特别特别注意…
#=====================================================
要删除要还原数据库datadir指定路径下的所有数据.必须是一个空的文件.
就算你的系统库在里面,就把系统相关的库先mv 出来.例如:mysql,performance_schema,test 然后在还原
#========================================================
命令1:
innobackupex-1.5.1--user=root --password=root --database=total2--defaults-file=/home/mysql-server/mysql2/my.cnf --apply-log /home/mysql-server/backup/2012-02-21_20-14-05
参数说明:
Apply-log: 因为在备份的时候是在线的,如果有新插入的SQL语句,会记录新增加的LSN点,然后放会放到备份文件的xtrabackup_logfile 中,还原的时候使用--apply-log 来释放热备份修改的页面,放到表空间中.
/home/mysql-server/backup/2012-02-21_20-14-05:这个肯定就是指备份文件的路径了.
命令2:
innobackupex-1.5.1--user=root --password=root --database=total2--defaults-file=/home/mysql-server/mysql2/my.cnf --copy-back/home/mysql-server/backup/2012-02-21_20-14-05
参数说明:
copy-back :这个参数就代表还原了.
#=======================================================================
1. 把先备份的系统库MV到原来的地方
2. 修改data目录的权限(如果你设置的是已MySQL用户访问的话)
chown-R mysql.mysql data
# =========================================================================
D.增量还原
特别注意
# =========================================================
这个我认为有点变态,设计的不太好.还原的时候破坏了原来完整备份的原始性.
虽然这个对以后的还原没什么影响.但是对于想保存最初备份文件的同事来说就要注意了.
# ==========================================================
如果有多个增量备份的文件.先执行第一开始备份的那个增量备份文件(这样才能跟最早的完整备份的LSN连接的上)
1. 释放全部备份的--apply-log文件
命令:
innobackupex-1.5.1--user=root --password=root --database=total2--defaults-file=/home/mysql-server/mysql2/my.cnf --apply-log /home/mysql-server/backup/2012-02-22_04-06-45
这时释放之后,释放的数据会进入备份文件夹里面的表空间.
2. 释放第一个增量备份文件(完整备份文LOG件与增量备份文件LOG关联起来)
命令:
innobackupex-1.5.1--user=root --password=root --database=total2 --defaults-file=/home/mysql-server/mysql2/my.cnf --apply-log /home/mysql-server/backup/2012-02-22_04-06-45--incremental-dir=/home/mysql-server/backup/2012-02-22_04-27-32
命令详解:
--incremental-dir: 为第一个增量备份的路径
/home/mysql-server/backup/2012-02-22_04-06-45:为整库备份的路径
这时第一个增量备份的数据会全部进入完整备份的表空间里面.
3. 释放第二个增量备份文件
命令:
innobackupex-1.5.1 --user=root--password=root --database=total2 --defaults-file=/home/mysql-server/mysql2/my.cnf --apply-log /home/mysql-server/backup/2012-02-22_04-06-45--incremental-dir=/home/mysql-server/backup/2012-02-22_05-11-32
命令详解:
--incremental-dir: 为第二个增量备份的路径
/home/mysql-server/backup/2012-02-22_04-06-45:为整库备份的路径
这时第二个增量备份的数据会全部进入完整备份的表空间里面.
4. 还原数据库
innobackupex-1.5.1 --user=root--password=root --database=total2--defaults-file=/home/mysql-server/mysql2/my.cnf --copy-back/home/mysql-server/backup/2012-02-22_04-06-45
但最后依然记住…
# =======================================================================
把先备份的系统库MV到原来的地方
修改data目录的权限(如果你设置的是已MySQL用户访问的话)
chown-R mysql.mysql data
#=========================================================================
在启动mysqlserver..
# 增量备份还原完成