文章

mysql常用命令

1. mysql内部

1.1 查看当前连接数和线程状态

1
2
show full processlist;
SHOW PROCESSLIST;

1.2 查看当前活跃的连接数:

1
show status like 'Threads_connected';

1.3 查看 MySQL 的最大连接数:

1
show variables like 'max_connections';

1.4 查看binlog配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
mysql> SHOW VARIABLES LIKE 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.02 sec)

mysql> SHOW VARIABLES LIKE 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.01 sec)

mysql> SHOW VARIABLES LIKE 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 0     |
+------------------+-------+
1 row in set (0.02 sec)

binlog_format
> ROW 模式是指在二进制日志中记录每一行数据的变化情况,包括修改前后的完整数据。这种模式可以确保数据的完整性和一致性,但是会产生大量的日志数据,对磁盘空间和性能都有一定的影响

> STATEMENT 模式是指在二进制日志中记录 SQL 语句的执行情况,包括执行前后的 SQL 语句文本。这种模式可以减少日志数据的量,但是可能会因为执行计划的变化而导致数据不一致

> MIXED 模式是指 MySQL 根据具体情况自动选择 `ROW` 或 `STATEMENT` 模式。这种模式可以兼顾数据完整性和日志数据量的平衡,但是可能会因为执行计划的变化而导致数据不一致


expire_logs_days
`Value` 字段为 `0`,则表示 MySQL 不会自动清理二进制日志文件

1.5 删除表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
情况一:
清空表中的所有记录,可以使用下面的两种方法:
> delete from tablename
> truncate table tablename

情况二:
删除表中的部分记录,只能使用delete语句。
> table1 WHERE ;

情况三:
只想删除数据,但是表中数据太多,会进行锁表,可以分批操作
> START TRANSACTION; 
> delete from t_chaos_scheduler_trigger_log LIMIT 10000; 
> COMMIT; 

备注:
truncate table是将表结构重新建一次速度要比使用delete from快很多,而delete from是一行一行的删除,速度很慢.


查看表结构

1
2
3
4
DESCRIBE table_name;

# 或者缩写
DESC table_name;

创建表时的 SQL 语句

1
SHOW CREATE TABLE table_name;

2. 终端

1.1 备份 mysqldump

导出表结构及表数据 mysqldump 用法

1
mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名;

1、导出数据库为 dbname 的表结构(其中用户名为root,密码为dbpasswd,生成的脚本名为db.sql)

1
mysqldump -uroot -pdbpasswd -d dbname >db.sql;

2、导出数据库为 dbname 的某张表(test)结构;

1
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

3、导出数据库为 dbname 所有表结构及表数据(不加-d)

1
mysqldump -uroot -pdbpasswd  dbname >db.sql;

4、导出数据库为 dbname 某张表(test)结构及表数据(不加-d)

1
mysqldump -uroot -pdbpasswd dbname test>db.sql; 

5、导出表数据

1
mysqldump -uroot -pdbpasswd -t dbname test>db.sql; 

–set-gtid-purged=OFF

1
加了--set-gtid-purged=OFF时,在会记录binlog日志,如果不加,不记录binlog日志,所以在我们做主从用了gtid时,用mysqldump备份时就要加--set-gtid-purged=OFF,否则你在主上导入恢复了数据,主没有了binlog日志,同步则不会被同步。
本文由作者按照 CC BY 4.0 进行授权