MYSQL 数据库备份、表备份、备份数据库时剔除不需要的库

指定单个数据库进行备份

如下:对单个acc1数据库进行备份:

root@ubuntu107:~# mysqldump -uroot -p acc1 --default-character-set=utf8 --opt -Q -R --skip-lock-tables > acc1.sql

指定多个数据库进行备份

如下:对acc1和fafa数据库同时进行备份

root@ubuntu107:~# mysqldump -uroot -p --databases acc1 fafa --default-character-set=utf8 --opt -Q -R --skip-lock-tables > acc1Afafa.sql

对全部数据库进行备份并剔除不需要的 information_schema、mysql、performance_schema数据库

如下:在剔除"Database(列名)、information_schema(mysql自带库)、mysql(mysql自带库)、performance_schema(mysql自带库)"后,将剩余的全部数据库备份为mysql_dump.sql.

root@ubuntu107:~# mysql -e "show databases;" -uroot -p| grep -Ev "Database|information_schema|mysql|performance_schema" |xargs mysqldump -uroot -p --databases --default-character-set=utf8 --opt -Q -R --skip-lock-tables > mysql_dump.sql

对单个数据库的表结构导出

如下:对fafa数据库的表结构备份

root@ubuntu107:~# mysqldump --opt -d fafa -uroot -p > fafa.sql

数据库恢复(恢复前需提前创建同名空数据库):mysql -uroot -p fafa < fafa.sql

说明:
使用mysqldump –all-databases会导出所有库。但如果做主从,从主库dump出数据时,我们是不需要也不想要information_schema 和 mysql 库的。数据库少的情况下还可以通过/usr/local/mysql/bin/mysqldump -uroot -p --databases db1 db2 > db1db2.sql 这样再导出,但如果数据多,这样指定就很麻烦了。
mysql是支持 ignore-table 的,但是没有ignore-database,所以要导出除 information_schema和mysql库的其它所有库,难道就只能一个个指定database吗?

解决:

# mysql -e "show databases;" -uroot -p| grep -Ev "Database|information_schema|mysql|test" | xargs mysqldump -uroot -p --databases > mysql_dump.sql
 
附录1

错误:mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user ‘root’@'localhost’ for table ‘cond_instances’ when using LOCK TABLES
解释:在mysql5.5中增加了performance_schema,当我们进行mysqldump的时候,会报如下错误信息:
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user ‘root’@'localhost’ for table ‘cond_instances’ when using LOCK TABLES

我们可以在mysqldump中加上参数 –skip-lock-tables,如

# mysqldump  -uroot  -p   --skip-lock-tables  performance_schema > performance_schema.sql 
或者过滤掉performance_schema这个库

# mysql -e "show databases;" -uroot -p| grep -Ev "Database|information_schema|mysql|test|performance_schema" | xargs mysqldump -uroot -p --databases > mysql_dump.sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值