README
导出数据
- 只导出表结构,不导出数据
mysqldump -uroot -pxxx -d database > database.sql - 只导出表数据,不导出结构
mysqldump -uroot -pxxx -t database > database.sql - 导出整个数据库,表结构&数据
mysqldump -uroot -pxxx database > database.sql - 导出整个数据库,忽略
table1&table2mysqldump -uroot -pxxx database -ignore-table=database.table1 -ignore-table=database.table2 > database.sql
- 导出指定表中的数据
mysqldump -uroot -pxxx -t database table1 table2 > databases.sql
mysqldump 常用参数说明
--host, -h需要导出的主机信息--port, -P链接数据库端口号--user, -u指定连接的用户名--password, -p指定链接mysql的密码--socket, -S指定连接mysql的socket文件位置,默认路径为/tmp/mysql.sock--tables覆盖--databases (-B)参数,指定需要导出的表名--no-data, -d不导出数据,只导出数据库表结构--no-create-info, -t只导出数据,而不添加CREATE TABLE语句--default-character-set设置默认字符集,默认值为utf8
导入数据
mysql -uroot -pxxx -d databases < database.sql
MySQL查看库表索引大小
通过MySQL的 information_schema 数据库,可查询数据库中每个表占用的空间、表记录的行数;该库中有一个 TABLES 表,这个表主要字段分别是:
- TABLE_SCHEMA : 数据库名
- TABLE_NAME:表名
- ENGINE:所使用的存储引擎
- TABLES_ROWS:记录数
- DATA_LENGTH:数据大小
- INDEX_LENGTH:索引大小
1、查看所有库的大小
MySQL [information_schema]> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;
+----------+
| data |
+----------+
| 276.82MB |
+----------+
1 row in set (0.03 sec)
2、查看指定库的大小
MySQL [information_schema]> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='envops';
+----------+
| data |
+----------+
| 270.56MB |
+----------+
1 row in set (0.00 sec)
3、查看指定库的指定表的大小
MySQL [information_schema]> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='envops' and table_name='trace';
+----------+
| data |
+----------+
| 269.83MB |
+----------+
1 row in set (0.00 sec)
4、查看指定库的索引大小
MySQL [information_schema]> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES WHERE table_schema = 'envops';
+------------------+
| Total Index Size |
+------------------+
| 314.30 MB |
+------------------+
1 row in set (0.00 sec)
5、查看指定库的指定表的索引大小
MySQL [information_schema]> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES WHERE table_schema = 'envops' and table_name='srvc_instance';
+------------------+
| Total Index Size |
+------------------+
| 0.02 MB |
+------------------+
1 row in set (0.00 sec)
6、查看一个库中的情况
MySQL [information_schema]> SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', CONCAT(ROUND(table_rows/1000000,4),'M') AS 'Number of Rows', CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size', CONCAT(ROUND(index_length/(1024*1024*1
024),4),'G') AS 'Index Size', CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G') AS'Total'FROM information_schema.TABLES WHERE table_schema LIKE 'envops';
+-----------------------+----------------+-----------+------------+---------+
| Table Name | Number of Rows | Data Size | Index Size | Total |
+-----------------------+----------------+-----------+------------+---------+
| envops.api | 0.0000M | 0.0000G | 0.0000G | 0.0000G |
| envops.cluster | 0.0001M | 0.0000G | 0.0000G | 0.0000G |
| envops.configmap | 0.0000M | 0.0000G | 0.0000G | 0.0000G |
| envops.data | 0.0005M | 0.0001G | 0.0000G | 0.0001G |
| envops.doc_env_info | 0.0000M | 0.0000G | 0.0000G | 0.0000G |
| envops.dye | 0.0000M | 0.0000G | 0.0000G | 0.0000G |
| envops.env | 0.0013M | 0.0001G | 0.0000G | 0.0001G |
| envops.env_srvc | 0.0004M | 0.0001G | 0.0000G | 0.0001G |
| envops.env_srvc_ins | 0.0002M | 0.0000G | 0.0000G | 0.0000G |
| envops.trace | 1.2651M | 0.2635G | 0.3066G | 0.5701G |
| envops.user | 0.0002M | 0.0000G | 0.0000G | 0.0000G |
| envops.user_api | 0.0000M | 0.0000G | 0.0000G | 0.0000G |
| envops.user_env | 0.0000M | 0.0000G | 0.0000G | 0.0000G |
| envops.user_project | 0.0000M | 0.0000G | 0.0000G | 0.0000G |
+-----------------------+----------------+-----------+------------+---------+
14 rows in set (0.00 sec)
存储过程
在命令行下写mysql存储过程的时候因为默认结尾为
;导致语句不完成。这里可以从新定义结束符来解决这个问题
DELIMITER $$ (这个是自定义的结束符)
如表
contry表的建表语句如下CREATE TABLE `country` ( `name` char(52) NOT NULL, `population` int(11) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8创建一个存储过程
mysql> create procedure mako() -> begin -> declare i int; -> set i = 0; -> while i < 5 do -> insert into country(name, population) values('AAA', i); -> set i=i+1; -> end while; -> end; -> $$调用存储过程
- call mako()$$
查看结果
mysql> select * from country$$ +------+------------+ | name | population | +------+------------+ | AAA | 0 | | AAA | 1 | | AAA | 2 | | AAA | 3 | | AAA | 4 | +------+------------+ 5 rows in set (0.00 sec)