Mysql 常用命令整理 备份数据 1、备份所有数据库,并记录binlog文件明及其位置(增加从库时经常使用)
1 mysqldump -u root -p --all-databases --master-data=2 > all.sql
2、备份某一个数据库
1 mysqldump -u root -p test > test.sql
–routines:导出存储过程和函数 –single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务,然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。 –master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。
恢复数据 1、直接恢复
1 mysql -u root -p123456 test < test.sql
2、连接Mysql后通过source命令恢复
1 source /data0/back/all.sql
直接通过命令行执行sql,使用-e参数 1 mysql -uroot -p -e 'show databases'
该方式可以用于通过shell脚本监控数据库
设置数据库从库只读 1 set global read_only=1; #1是只读,0是读写
该参数在从库时非常有用,从库必须设置为只读状态,防止程序误写数据导致主从同步失败。注意即使设置了该参数,root用户仍然可写
开启并查看gen_log 1 2 SHOW VARIABLES LIKE "general_log%" SET GLOBAL general_log = 'ON';
创建数据库 1 create database xinhua default character set utf8mb4 collate utf8mb4_unicode_ci;
新增用户并授权 1 2 grant all privileges on dennis.* to 'dennis' identified by 'dennis'; flush privileges;
数据库字段内容替换 1 UPDATE xh_article SET cover=REPLACE(cover, 'oriString','desString') where id =1681;
查看mysql运行线程 1 2 show processlist show full processlist
id: 一个标识 user: 显示当前用户,如果不是root,这 个命令就只显示你权限范围内的sql语句。 host: 显示这个语句是从哪个ip的哪个端口上发出的 db: 显示 这个进程目前连接的数据库。 command:显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接 (connect)。 time: 此这个状态持续的时间,单位是秒。 state: 显示使用当前连接的sql语句的状态,只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成 info: 显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。
查看主库、从库同步状态 1 2 show master status show slave status
查看binlog日志信息 1 2 SHOW BINLOG EVENTS in 'mysql-bin.000050' limit 50; mysqlbinlog mysql-bin.000050 -vv | more
设置mysql密码强度 1 2 set global validate_password_policy=0 show VARIABLES like "%password%"
0:弱,1:中等,2:强
快速复制一个表 1 2 CREATE TABLE newadmin LIKE admin; NSERT INTO newadmin SELECT * FROM admin;
查询系统表中的锁信息 1 2 3 select * from information_schema.INNODB_LOCK_WAITS;select * from information_schema.INNODB_LOCKS;select * from information_schema.INNODB_TRX;
发生死锁时查询死锁发生的SQL和时间 1 show engine innodb status;
查询innodb的锁等待超时配置 1 show VARIABLES like '%innodb_lock_wait_timeout%' ;
杂七杂八 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 SELECT * FROM information_schema.INNODB_TRX; show OPEN TABLES where In_use > 0; show full processlist; SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; local table td_push read; show status like 'innodb_row_lock%'; select * from td_push_dic where id=5 lock in share mode; select * from td_push_dic where id=5 for update; Show engine innodb status\G; show global variables like "innodb_locks%"; show global variables like "autocommit"; show global variables like "%tx%"; set session transaction isolation level 'repeatable read'; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction show variables like '%log_bin%'; show binary logs; show variables like 'binlog_format'; show master status; SHOW BINLOG EVENTS in 'mysql-bin.000050' limit 50; mysqlbinlog mysql-bin.000050 -vv | more