假设要从一个MySQL整库的逻辑备份中恢复其中的一张表,如何做到快速恢复呢?
下面通过巧妙利用授权的方式,快速从逻辑备份中恢复想要的表。
一. 数据库备份
mysqldump -ubackup -ppassword -S /data/3316/logs/mysql.sock -B --flush-privileges --single-transaction --master-data=2 --triggers -f -R -E --hex-blob --databases employees sakila |gzip >>`date +%F`.sql.gz
gunzip -c 2018-01-09.sql.gz >recover.sql
二、数据恢复
1.创建备份用户
CREATE USER 'restor_user'@'localhost' IDENTIFIED BY 'its_password';
2.赋予用户select所有数据库和表的权限.
GRANT SELECT ON *.* TO 'restor_user'@'localhost';
3.赋予恢复用户对要恢复表ALL的权限
GRANT ALL ON employees.departments TO 'restor_user'@'localhost';
4.恢复单表数据
mysql -uroot -p123456 -S /data/3306/logs/mysql.sock -e "CREATE DATABASE IF NOT EXISTS employees;"
mysql -urestor_user -pits_password -S /data/3316/logs/mysql.sock --force < /home/mysql/recover.sql