工作中经常会对数据库进行备份,迁移等工作,那么当我们接到这样的需求时,直接上去就进行备份?其实不是的,我们来看看如何对数据库进行备份。
1.查看数据库的大小
// 进入information_schema 数据库(存放了其他的数据库的信息)
use information_schema;
1.1 查看每个特定数据库的大小
// 比如查看数据库testdb的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='testdb';
1.2 查看指定数据库的某个表的大小
// 比如查看数据库testdb中 test_table 表的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='testdb' and table_name='test_table';
1.3 查看所有数据库的大小
// 查询所有数据的大小:
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;
2.数据库的备份
对于数据库的备份,在之前的博客中也有介绍到可以用mysqldump和xtrabackup指令备份
2.1 备份到新的数据库
在数据量不太大的情况下,且迁移到一个新的数据库中,则可以把数据目录直接拷贝到新的数据库中即可。
2.2 备份也分几种备份指令
完整导出一个库 , 包括建库语句、表结构、数据
mysqldump -uroot -proot --host=127.0.0.1 --port=3306 --databases testdb > testdb.sql
导出一个数据库的表结构以及数据,不包括建库语句
mysqldump -uzabbix –pzabbix zabbix > zabbix.sql
导出多个数据库的表结构以及数据,包括建库语句
mysqldump -uroot -proot --host=127.0.0.1 -B testdb1 testdb2 >test.sql
备份所有的数据库:
mysqldump -uroot -p1234 --all-databases>/opt/wyl/backup.sql
还原所有的数据库
mysql -uroot -p1234 </opt/wyl/backup.sql
备份多个数据库
mysqldump -uroot –p1234 --databases student zabbix > student_zabbix.sql
导出一个数据库中一个表的结构,导出 test_table 表的结构和数据
mysqldump -uroot -proot --host=127.0.0.1 testdb test_table> test.sql
导出一个数据库中多个表的数据和结构
mysqldump -uroot -proot --host=127.0.0.1 game --tables table1 table2 > test.sql
mysqldump -uroot -proot --host=127.0.0.1 game table1 table2 > test.sql
导出一个数据库中多个表的结构
mysqldump -uroot -proot --host=127.0.0.1 -d testdb table1 table2 > test.sql
导出一个数据库中多个表的数据
mysqldump -uroot -proot --host=127.0.0.1 -t testdb table1 table2 > test.sql