README

导出数据

  • 只导出表结构,不导出数据 mysqldump -uroot -pxxx -d database > database.sql
  • 只导出表数据,不导出结构 mysqldump -uroot -pxxx -t database > database.sql
  • 导出整个数据库,表结构&数据 mysqldump -uroot -pxxx database > database.sql
  • 导出整个数据库,忽略table1& table2
    • mysqldump -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指定连接 mysqlsocket文件位置,默认路径为 /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)