登上服务器,查出大于1G的表:
select TABLE_NAME,DATA_LENGTH, concat(round(((DATA_LENGTH+index_LENGTH)/1024/1024/1024), 2), 'G') as data from information_schema.TABLES where TABLE_SCHEMA='dbname' and DATA_LENGTH > 1000000000;
+-------------------------+-------------+-------+
| TABLE_NAME | DATA_LENGTH | data |
+-------------------------+-------------+-------+
| finance_confirmed_order | 2502950912 | 3.53G |
| finance_refuse_sheet | 1265631232 | 1.18G |
| reg_user | 1194328064 | 2.70G |
| reg_user_source | 1477443584 | 1.51G |
| uc_yb_log | 2307915776 | 5.84G |
+-------------------------+-------------+-------+
5 rows in set (0.07 sec)
mysql>
查出来后发现大于1G的表并不多,这些表是要求只要结构的。
把所有的表名放到一个文件中
]# mysql -uegou -pegou -e 'show tables from dbname' > /home/XXX/dbnametables.sql
将上面查出的大于1G的表从文件中去掉
导出除大于1G的表的结构和数据
]#cat dump.sh
#!/bin/bash
tables=`cat /home/XXX/dbnametables.sql `
/data/bin/mysqldump -uroot -pXXX --socket=/data/mysql/tmp/mysql.sock --default-character-set=utf8 --quick --single-transaction --routines --triggers --events $tables > /data/2.sql
]#mysqldump -uroot -pXXX -d dbname > /data/1.sql
导入的时候,先导入1.sql 是所有表的结构,再倒入2.sql 除大于1G的表的数据
阅读(1469) | 评论(0) | 转发(0) |