mysql优化笔记(5)----数据备份与恢复_2

对于任何数据库来说,备份都是非常重要的。
数据库复制并不能取代备份的作用
备份可分为逻辑备份和无物理备份
1 逻辑备份的结果为sql语句,适合于所有储存引擎。
2 物理备份是对数据库目录的拷贝,对于内存表只备份结构。

常用语法

mysqldump [options] database [tables] 备份表
mysqldump [options] --databases [options] db1 [db2..] 备份多个数据库
mysqldump [options] --all-databases [options] 实例下所用数据库

常用参数

-u,--user=name(账号,账号需有select,reload,lock tables,replication client,show view,process权限)
-p,--password[=name](密码)
--single-transaction(事务引擎innodb,启动事务,确保一致性)
-l,--lock-tables(一般非事物引擎如myisam,依次锁表,确保一个数据库下的一致性)
-x,--lock-all-tables(全部表锁定,确保实例下所有数据库的一致性,只读)
--master-data=[1/2](为1,只记录change master的语句,2,change master将1以注释形式存在于备份中)
--tab=path(将表结构和表数据分别用sql和txt进行储存)

新建mysql备份权限用户

image.png

对数据库全备


image.png

where条件下备份

image.png

脚本定时任务备份

backup.sh

image.png

bash backup.sh
image.png

mysqldump恢复备份

1、mysql -u -p dbname < backup.sql
2、 source /tmp/backup.sql


image.png

指定时间点的恢复

先决条件
具有指定时间点前的一个全备
具有自上次全备后到指定时间点的所有二进制日志
步骤
先进行时间点之前全备数据恢复

image.png

查看全备数据的change master信息
image.png

进入到binlog日志目录(一般在mysql的data下,宝塔的在/www/server/data)
image.png

使用mysqlbinlog分析全备之后的数据时间点master_log_pos
宝塔使用mysqlbinlog需要先cd /usr/local/binln -s /www/server/mysql/bin/mysqlbinlog mysqlbinlog

mysqlbinlog --base64-output=decode-rows -vv --start-position=84882 --database=mc_orderdb mysql-bin.00011 | grep -B3 DELETE | more

查询到操作数据之前最后的end_log_pos


image.png

恢复数据(注意 stop-position参数值指的是误操作之前commit的end_log_pos值)


image.png
mysqlbinlog --start-position=84882 --stop-position=169348 --database=mc_orderdb mysql-bin.00011 > mc_order_diff.sql
mysql -uroot -p mc_orderdb < mc_order_diff.sql

你可能感兴趣的:(mysql优化笔记(5)----数据备份与恢复_2)