标签:mysql 备份和还原
1.备份类型
根据备份时服务器是否能够向外继续提供服务分为:热备份、温备份、冷备份。
热备份:在线,读、写不受影响;
温备份:在线,但仅可以执行读操作;
冷备份:离线,读、写操作均不能进行;
根据备份时是直接复制数据文件还是将数据导出进行备份分为:物理备份、逻辑备份。
物理备份:直接复制数据文件;
逻辑备份:将数据导出至文本文件当中;
根据备份内容不同分为:完全备份、增量备份、差异备份。
完全备份:备份全部数据;
增量备份:仅备份上次完全备份或增量备份以后变化的数据;
差异备份:仅备份上次完全备份以来变化的数据;
2.使用mysqldump工具备份还原数据
mysqldump是一个逻辑备份工具,对MyISAM引擎可以实现温备,对InnoDB引擎可以实现热备。速度比较慢,不适合对大数据库进行完全备份。数据还原时应该将二进制日志功能临时性关掉(sql_log_bin=OFF),还原后在启用。
mysqldump命令的用法及其常见选项:
mysqldump -uroot -p [db_name] [tb1] [tb2] > backfile #备份单个数据库,或库中特定表 --master-data={0|1|2} 0: 不记录二进制日志文件及其位置; 1:以CHNAGE MASTER TO的方式记录位置,可用于恢复后直接启动从服务器; 2:以CHANGE MASTER TO的方式记录位置,但默认为被注释; --lock-all-tables:锁定所有表 --flush-logs:执行日志滚动 --all-databases:备份所有库 --databases DB_NAME,DB_NAME,...:备份指定库 --events:备份事件 --routines:备份存储过程和存储函数 --triggers:备份触发器 --no-data:只备份表结构 如果指定库中的表类型均为InnoDB,可使用--single-transaction启动热备;
mysqldump完全备份加二进制日志增量备份及还原实例:
备份:
mysqldump -uroot -p --master-data=2 --flush-logs --all-databases --lock-all-tables > /root/all.sql #完全备份 mysqlbinlog mysql-bin.000011 > /root/first-incremental.sql #第一次增量备份
删除数据文件模拟故障还原(假设故障时使用的二进制日志文件为mysql-bin.000012且二进制日志文件和数据文件分开存储):
killall mysqld /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data #初始化数据库 service mysqld start mysql -uroot -p < /root/all.sql #还原完全备份 mysql -uroot -p < /root/first-incremental.sql #还原增量备份 mysqlbinlog mysql-bin.000012 > /tmp/tmp.sql mysql -uroot -p < /tmp/tmp.sql #即时点恢复
3.通过select命令备份数据并还原
select通常用来备份单个表,还原时表结构需要预先创建好。
备份:
mysql> SELECT * INTO OUTFILE ‘/path/to/somefile.txt‘ FROM tb_name [WHERE clause];
还原:
mysql> LOAD DATA INFILE ‘/path/to/somefile.txt‘ INTO TABLE tb_name;
标签:mysql 备份和还原
原文地址:http://wangyongbin.blog.51cto.com/8964308/1687994