mysql 冷备 mysqldump

备份

备份单个数据库:

mysqldump -u root -h 127.0.0.1 -ppassport dbname > backdb.sql 

备份多个数据库:

mysqldump -u root -h 127.0.0.1 -ppassport --databases dbname1, dbname2 > backdb.sql

备份数据库表:

mysqldump -u root -h 127.0.0.1 -ppassport dbname tbname1, tbname2 > backdb.sql

备份系统中所有数据库: (包括系统数据库)

mysqldump -u root -h 127.0.0.1 -ppassport --lock-all-tables --all-databases > all.sql

恢复

恢复所有数据 方法1: (缺点 若数据中不存在对应数据库需要手动创建)

mysqldump -u root -ppassport -h 127.0.0.1 --all-databases < all.sql

恢复所有数据 方法2: (推荐 优点恢复所有数据)

mysqldump -u root -ppassport -h 127.0.0.1 --all-databases < all.sql

恢复所有数据 方法3: (mysql 命令行)

mysql> source all.sql;

问题

问题1: mysqldump: Got error: 1044: Access denied for user 'root'@'%' to database 'hhh' when using LOCK TABLES

问题原因:
mysqldump命令执行时,需要四种权限,分别是:select, show view, trigger, lock table。但是因为没有lock table的权限,导致上述错误发生

解决办法:
在mysqldump命令之后添加–single-transaction

解决示例:
mysqldump --single-transaction -hIP地址 -p3306 -uroot -p密码 数据库名>test.sql

你可能感兴趣的:(mysql备份恢复)