假設要從一個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