[转帖]mysql导入导出备份与恢复_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2126 | 回复: 1   主题: [转帖]mysql导入导出备份与恢复        上一篇   下一篇 
ad222888
注册用户
等级:新兵
经验:66
发帖:134
精华:0
注册:2016-9-25
状态:离线
发送短消息息给ad222888 加好友    发送短消息息给ad222888 发消息
发表于: IP:您无权察看 2019-8-30 17:22:28 | [全部帖] [楼主帖] 楼主

原理:差异备份与增量备份不同的是起始点,一个是完全备份时候的点为起始点,一个是以最近一次备份的点为起始点,若访问量大的时候应该混合备份:

星期1的零点完全备份一次

星期2,3,4的零点进行增量备份

星期5零点进行差异备份

星期6,7零点进行增量备份

若星期6的8点误删了某个表或者记录库等的可以先

星期1的零点数据导入到数据库

再星期5零点差异备份的数据导入数据库

再星期6零点增量备份的数据导入数据库

再查看当前日志信息找到那个删除操作的时间点前一个操作的时间点

再备份这段时间内的数据,然后导入数据库即可恢复

1.mysqldump常用选项

u,-h,-p                                  #指定连接数据库的用户名密码,地址
-A, --all-databases                    #备份所有数据库
-x, --lock-all-tables                   #锁定所有表
-l, --lock-tables                     #锁定备份的表(只有备份单张表才建议使用这个选项)
-B, --databases db_name1 db_name2 ...    #备份指定的数据库
--single-transaction                    #启动一个大的单一事务实现备份(热备,只能针对                       #InnoDB存储引擎来实现,如果备份的表中有MyISAM的表,则对于这些表没有任何意义)
-C, --compress                   #压缩传输(在服务器端会占用更过的cup时钟周期)
-E, --events                     #备份指定库的事件调度器;
-R, --routines                 #备份存储过程和存储函数;
--triggers                     #备份触发器
-F,--flush-logs             #锁定表之后执行flush logs命令(日志滚动);
--master-data[=num]   #在完全备份的备份文件中记录下来,在备份那一时刻(锁定所有表时),对应的二进制日志文件的文件名及其位置。num=0表示不记录,num=1,记录CHANGEMASTER TO语句(语句未被注释),num=2,记录为注释语句;


完全备份

mysqldump -A -x --master-data=2 >/backup/`date +%F`_all.sql
2. mysqlbinlog:
--start-position=#                                 #从指定的事件位置查看
--stop-position=#                                 #只显示到指定的事件位置
--start-datetime=YYYY-MM-DD hh:mm:ss               #从指定的时间查看
--stop-datetime=YYYY-MM-DD hh:mm:ss               #只显示到指定的时间


根据位置来增量备份与差异备份(位置根据你二进制里自己需要的位置)

[root@localhost backup]#mysqlbinlog --start-position=120 --stop-position=1169/data/mysql/mysql-bin.000004 >/backup/`date +%F`_inc.sql


根据日期来增量备份与差异备份(时间根据你备份的时间)

/usr/local/mysql/bin/mysqlbinlog  --start-date="2015-09-16 00:00:00"--stop-date="2015-09-17 00:00:00" /data/mysql/mysql-bin.000004>/backup/`date +%F`_inc.log


若在16号的10:40左右出的错误,我们可以先找出要恢复的点(比如删除某个动作前的那个时间点)

(1)先导出部分数据查看操作

mysqlbinlog--start-date="2015-09-16 10:35:00" --stop-date="2015-09-1610:45:00" /data/mysql/mysql-bin.000004 >/backup/error_time.sql


(2)找到操作的点

vi /backup/error_time.sql
/*!*/;
# at 1138
#150916 10:40:51 server id 22  end_log_pos 1169 CRC32 0x49372e7e        Xid = 2175
COMMIT/*!*/;
# at 1169
#150916 10:43:14 server id 22  end_log_pos 1282 CRC32 0xe413656e        Query  thread_id=4     exec_time=0     error_code
=0
SET TIMESTAMP=1442371394/*!*/;
DROP TABLE `cj` /* generated by server */         ///删除表cj的操作点,往上找时间或者点


(3)利用备份删除前到00:00:00的数据

mysqlbinlog --start-date="2015-09-1600:00:00" --stop-date="2015-09-16 10:40:52"/data/mysql/mysql-bin.000004 >/backup/right.sql    ///加一秒恢复删除前的操作


(4)导入到数据库

  mysql先停止二进制日志滚动 

mysql>set sql_log_bin=0;
QueryOK, 0 rows affected (0.00 sec)


   客户端操作:

mysql </backup/2015-09-16_all.sql            ///恢复我今天做的完全备份
mysql </backup/right.sql                     ///恢复错误前的备份




赞(0)    操作        顶端 
联动大白
注册用户
等级:列兵
经验:91
发帖:0
精华:0
注册:2015-5-27
状态:离线
发送短消息息给联动大白 加好友    发送短消息息给联动大白 发消息
发表于: IP:您无权察看 2019-9-11 0:30:00 | [全部帖] [楼主帖] 2  楼

为了方便大家阅读,我对文章中错误号来解释一下吧!

Error Id: 40:5

Title: 段不能被作为上级工序使用

Description:

段不能被作为上级工序使用


Error Id: 40:51

Title: 选择一种资源

Description:

选择一种资源


Error Id: 40:52

Title: 没有控制配方删除(参见日志)

Description:

没有控制配方删除(参见日志)


也许你已明白,但对一个人有用也是我存在的理由!^_^ By:持之以恒的大白

-- 来自: 北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论