您的位置:首页 > 数据库 > MySQL

MySQL相关命令使用

2012-04-14 22:20 375 查看
MySQL相关命令使用

mysqladmin

例:几个常用功能
使用ping检测MySQL Server是否正常提供服务:
[root@server ~]# mysqladmin -uroot -pabc123 -h localhost ping
mysqld is alive

status命令获取当前MySQL Server几个基本状态值:
[root@server ~]# mysqladmin -uroot -pabc123 -h localhost status
Uptime: 201960 Threads: 1 Questions: 754 Slow queries: 0 Opens: 385 Flush tables: 1 Open tables: 64 Queries per second avg: 0.004

processlist获取当前数据库的连接线程信息:
[root@server ~]# mysqladmin -uroot -pabc123 -h localhost processlist
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 9 | root | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+

mysqldump
功能将MySQL Server中数据以SQL语句的形式从数据库中dump成文本文件。所生成的文件全部是SQL语句,包括数据库和表的创建语句。
参数:
-T 生成非SQL形式指定文本文件
-d,--no-data 仅生成结构创建的语句
--default-character-set=name 指定字符集内容,防止以错误的字符集生成不可用的内容。

例:备份数据库test
[root@server ~]# mysqldump -uroot -pabc123 test > backup.sql

mysqlimport
将以特定格式的存放的文本数据导入到指定MySQL Server中的工具。
-d 新导入数据前删除表中所有信息
-f 强制继续插入数据
-l 数据被插入之前锁住表
--fields-terminated- by=char 指定分隔字符,默认是tab
--fields-enclosed- by= char 指定文本文件中数据的记录时以什么括起的, 很多情况下数据以双引号括起。 默认的情况下数据是没有被字符括起的。

例:将以下emp文件导入到test数据库下面的emp表中
[root@server ~]# cat /var/lib/mysql/test/emp.txt
lisa,2003-01-01,3000,1
dony,2002-03-01,2000,2
zzx,2002-03-05,3500,1

[root@server ~]# mysqlimport -uroot -pabc123 --fields-terminated-by=, test emp.txt
test.emp: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

mysql> select * from emp;
+-------+------------+---------+--------+
| ename | hiredate | sal | deptno |
+-------+------------+---------+--------+
| lisa | 2003-01-01 | 3000.00 | 1 |
| dony | 2002-03-01 | 2000.00 | 2 |
| zzx | 2002-03-05 | 3500.00 | 1 |
+-------+------------+---------+--------+
3 rows in set (0.00 sec)

格式:mysqlimport database text
说明:文本文件的数据格式必须与表中的记录格式一致

mysqlbinlog
分析MySQL Server所产生的二进制日志,可以进行数据恢复。可以解析binlog中指定时间段或指定日志起始和结束位置内容解析成SQL、语句,并导出到指定文件中,在解析过程中,还可以通过指定数据库名称来过滤输出内容。
参数:
--stop-date 指定恢复时间,恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。
--start-position和--stop-position 指定日志位置,使用日志位置是更准确的恢复方法,特别是当由于破坏性SQL语句同时发生许多事务的时候。

例:删除test数据库下的emp表,再通过mysqlbinlog恢复
1.开启二进制日志,在/etc/my.cnf加入
log_bin=/var/lib/mysql/mysql-bin.log
binlog-do-db=test

2.删除emp表
mysql> drop table emp;
Query OK, 0 rows affected (0.00 sec)

3.恢复删除的emp表
[root@server ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000001
#120409 12:24:43 server id 1 end_log_pos 573 Query thread_id=5 exec_time=0 error_code=0
SET TIMESTAMP=1333945483/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
drop table emp
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
可以看到120409 12:24:43删除时间

[root@server ~]# mysqlbinlog --stop-date="2012-04-09 12:24:40" /var/lib/mysql/mysql-bin.000001 |mysql -uroot -pabc123
指定恢复时间截止在2012-04-09 12:24:40,也就是被删除之前

查看是否恢复
[root@server ~]# mysql -uroot -pabc123 -e "use test;select * from emp;"
+-------+------------+---------+--------+
| ename | hiredate | sal | deptno |
+-------+------------+---------+--------+
| lisa | 2003-01-01 | 3000.00 | 1 |
| dony | 2002-03-01 | 2000.00 | 2 |
| zzx | 2002-03-05 | 3500.00 | 1 |
+-------+------------+---------+--------+

mysqlcheck
使用:mysqlcheck [OPTIONS] database [tables]
可以检查check,修复repair,分析analyze和优化optimize MySQL Server中的表,但并不是所有的存储引擎都支持这里所有四个功能,像Innodb不支持修复功能。

myisamchk
使用:myisamchk [OPTIONS] tables[.MYI]
类似“mysqlcheck -c/-r”对检查和修复MyISAM存储引擎的表。

myisampack
使用:myisampack [OPTIONS] filename...
对MyISAM表进行压缩处理,以缩减占用存储空间,主要用在归档备份,压缩后的表变为只读,不能进行任何修改。

mysqlhotcopy
使用:mysqlhotcopydb_name[./table_regex/][new_db_name|directory]
对MySQL中的MyISAM存储引擎的表进行在线备份操作,其备份操作实际上就是通过对数据库的表进行加锁,然后复制其结构,数据和索引文件来完成备份操作。

例:使用mysqlhotcopy备份test数据库
[root@server ~]# mysqlhotcopy -u root -p abc123 test /backup/
Locked 1 tables in 0 seconds.
Flushed tables (`test`.`emp`) in 0 seconds.
Copying 4 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 1 tables (4 files) in 0 seconds (0 seconds overall).

恢复时,只需要使用cp覆盖原数据

本文出自 “网络收藏夹” 博客,请务必保留此出处http://liyaoyi.blog.51cto.com/442933/834691
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: