MySQL逻辑备份和恢复

MySQL逻辑备份和恢复

一、备份

1、 mysqldump

mysqldump --help

#备份 -F 表示生产一个新的日志文件
mysqldump -uroot -p -S /home/mysql/mysql.sock --single-transaction -F test > test.dmp

​ 注意:为了保证数据备份的一致性,MyIAM 存储引擎在备份时需要加上 -l 参数,表示将所有表加上读锁;
​ 对于事务存储引擎(InnoDB)可以采用 --single-transaction 选项。此参数将使得 InnoDB 存储引擎得到一个快照(Snapshot),保证备份的数据能够一致

2、mydumper

1)安装

#安装依赖包
yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel


#安装
cmake .
make

参考链接

https://github.com/maxbube/mydumper

2)使用

mydumper --help

mydumper -u root -p hadoop -S '/home/mysql/mysql.sock' -B test

mydumper --user=root --password=hadoop --socket='/home/mysql/mysql.sock' --database=test

参数选项:

# -s,--statement-size 按照 insert 语句插入的数据大小拆分,单位 bytes,默认值 1000000
# -r,-rows 按照行数对结果文件进行拆分
# -F,--chunk-filesize 按照导出文件大小进行拆分,单位为 MB

参考链接

https://www.cnblogs.com/EikiXu/p/9811051.html

二、完全恢复

#1、导入数据库
mysql -uroot -p -S /home/mysql/mysql.sock < test-schema-create.sql

#1、导入表结构
mysql -uroot -p -S /home/mysql/mysql.sock test < test.t2-schema.sql

#3、导入表数据
mysql -uroot -p -S /home/mysql/mysql.sock test < test.t2.sql
#1、备份 -F 表示生产一个新的日志文件
mysqldump -uroot -p -S /home/mysql/mysql.sock --single-transaction -F test > test.dmp

#2、完全恢复
mysql -uroot -p -S /home/mysql/mysql.sock test < test.dmp
mysqlbinlog  /home/mysql/mysqllog/binlog/mysql-binlog.000015 | mysql -uroot -p -S /home/mysql/mysql.sock test

三、不完全恢复

1、恢复全备份

mysql -uroot -p -S /home/mysql/mysql.sock test < test.dmp

2、基于时间点恢复(跳过误操作时间点)

#恢复误操作前时间点
mysqlbinlog  /home/mysql/mysqllog/binlog/mysql-binlog.000018 --stop-datetime="2020-01-20 20:40:26" | mysql -uroot -p -S /home/mysql/mysql.sock test

#恢复误操作后时间点
mysqlbinlog  /home/mysql/mysqllog/binlog/mysql-binlog.000018 --start-datetime="2020-01-20 19:58:15" --stop-datetime="2020-01-20 20:00:53" | mysql -uroot -p -S /home/mysql/mysql.sock test

mysqlbinlog  /home/mysql/mysqllog/binlog/mysql-binlog.000018 --start-datetime="2020-01-20 19:58:15" | mysql -uroot -p -S /home/mysql/mysql.sock test

3、基于位置恢复

#在误操作时间范围中找出误操作语句前后的位置号
mysqlbinlog  /home/mysql/mysqllog/binlog/mysql-binlog.000022 -v --start-datetime="2020-01-20 22:00:28" --stop-datetime="2020-01-20 22:07:28" > mysql_restore.sql

#恢复误操作前的位置号
mysqlbinlog  /home/mysql/mysqllog/binlog/mysql-binlog.000022 --stop-position="1154" | mysql -uroot -p -S /home/mysql/mysql.sock test

#恢复误操作后的位置号
mysqlbinlog  /home/mysql/mysqllog/binlog/mysql-binlog.000022 --start-position="1262" | mysql -uroot -p -S /home/mysql/mysql.sock test

4、并行恢复

myloader --help

myloader -u root -p hadoop -S '/home/mysql/mysql.sock' -d '/home/mysql/tmp/tmpSql/export-20200121-040403' -B test -t 3 -o

参数说明

# -d,--directory 备份文件所在的目录
# -o,--overwrite-table 是否覆盖已有表
# -B,--database 执行需要恢复的数据库
# -e,--enable-binlog 是否记录 BINLOG 。如果在主库导入数据,开启此选项,才能把数据同步到从库
# -t,--threads 线程并行数,默认为 4 个线程
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值