技术开发 频道

浅析MySQL数据库常用管理

 

【IT168 开源数据库】好久没有整理东西,感觉自己越来越懒,正好近期有个MYSQL的项目(一个ORACLE的应用迁移到MYSQL),以前没有接触过MYSQL,但是也知道MYSQL数据库目前广泛的应用在各种个人、商务系统中,各种技术都比较成熟。把自己学习的一些过程总结一下。 

    我们在前面已经简单介绍了一些MYSQL数据库的基本操作,这一章我们将针对MYSQL数据库管理员详细介绍下MYSQL数据库的常用管理内容。 



    MYSQL的管理工具很多,我自己从网上下载了一个。mysql-gui-tools-noinstall-5.0-r12-win32,是一个不用安装的管理软件,包含四个基本工具: 

    •MySQLAdministrator 
    •MySQLMigrationTool 
    •MySQLQueryBrowser 
    •MySQLSystemTrayMonitor 

    这些工具的具体使用都很简单,操作比较灵活,这里就不对这些工具的功能做详细介绍了,如果有兴趣大家可以自己下载下来,多使用几次就熟悉了。 

    1 MYSQL命令行管理工具 

    (1) 首先介绍几个MYSQL命令行工具: 

    mysqld_safe、mysql.server和mysqld_multi是服务器启动脚本。 

    注意:在Windows中不使用服务器启动脚本,我们可以使用WINDOWS命令来 
    
    启动MYSQL服务: 
    net start mysql 

    停止MYSQL服务: 
    net stop mysql 
    
    或者:

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqladmin -uroot -p shutdown
Enter password: ****** 

    注:mysqld是MySQL服务器。 

    下面的表格列举了几种WINDOS平台支持的MYSQL服务器:


    WINDOWS下执行二进制安装后,在WINDOWS服务中默认的就是使用的mysqld-nt服务器。 

    这个命令的使用我们将在后边的MYSQL服务器中详细讲解。 

    mysql_install_db初始化数据目录和初始数据库。 

    mysql是一个命令行客户程序,用于交互式或以批处理模式执行SQL语句, 

    这个命令我们在前边的例子中已经有很多应用了,这里就不多讲述了。我们给出一个例子:

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -p -e "SELECT * FROM
TEST limit
5;select * from test where id=1000" mytest Enter password: ****** +------+------+---------------------+---------------------+ | ID | MC | DT | RQ | +------+------+---------------------+---------------------+ | 1000 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | | 999 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | | 998 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | | 997 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | | 996 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | +------+------+---------------------+---------------------+ +------+------+---------------------+---------------------+ | ID | MC | DT | RQ | +------+------+---------------------+---------------------+ | 1000 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | | 1000 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | | 1000 | test | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | +------+------+---------------------+---------------------+

    mysqladmin是用于管理功能的客户程序。 

    我们可以通过mysqladmin –help来获得相关的信息,mysqladmin可以完成数据库的创建删除,修改用户密码,检查服务器状态,刷新系统变量等很多管理功能:

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqladmin -uroot -p ping Enter password: ****** mysqld is alive
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqladmin -uroot -p status Enter password: ****** Uptime: 17842 Threads: 2 Questions: 12 Slow queries: 0 Opens: 13 Flush tabl es: 1 Open tables: 1 Queries per second avg: 0.001
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqladmin -uroot -p version Enter password: ****** mysqladmin Ver 8.41 Distrib 5.0.27, for Win32 on ia32 Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.0.27-community-nt Protocol version 10 Connection localhost via TCP/IP TCP port 3306 Uptime: 4 hours 58 min 21 sec Threads: 2 Questions: 13 Slow queries: 0 Opens: 13 Flush tables: 1 Open tab les: 1 Queries per second avg: 0.001

    该命令我们将在MYSQL数据库用户管理、备份恢复中涉及到它的一些其他基本功能。 

    mysqlcheck执行表维护操作:

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqlcheck -uroot -p mytest Enter password: ****** mytest.aaa OK mytest.customer OK mytest.mytable OK mytest.sys_tests OK mytest.test OK mytest.test1 OK mytest.test_isam OK

    mysqldump数据库备份 
    mysqlhotcopy数据库备份 
    mysqlimport导入数据文件 

    这几个命令工具我们将在后边的备份恢复中详细讲解。 

    mysqlshow显示信息数据库和表的相关信息。

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqlshow -uroot -p mytest Enter password: ****** Database: mytest +-----------+ | Tables | +-----------+ | aa | | aaa | | customer | | mytable | | sys_tests | | test | | test1 | | test_isam | +-----------+

    以下是几个可以独立于MYSQL服务器(客户端可以执行)进行操作的工作。 

    myisamchk执行表维护操作。 
    myisampack产生压缩、只读的表。 
    mysqlbinlog是处理二进制日志文件的实用工具。 

    在MySQL中binlog的作用和Oracle中的归档日志类似, Oracle中提供了DBMS_LOGMNR来对日志文件进行分析, 来解出Redo SQL和Undo SQL, MySQL中也提供了一个名为mysqlbinlog的工具, 用来解释或取出存放在binlog中的SQL语句, 有没有Undo SQL我到是没有研究过. 最基本的使用语法如下:

mysqlbinlog [options] log_file ...

    在选项中, 可以指定一些过滤条件, 来解出你所想用的东西, 这样的选项有: 

--database=db_name, -d db_name --offset=N, -o N --[start|stop]-datetime=datetime --[start|stop]-position=N

    解出来的就是一条一条SQL语句了, 将这些语句执行一下, 就等于增量恢复了, 估计不是用绑定变量的, 可能在MySQL中是不是绑定变量不是很重要了。 然重要的一点是不要运行多个进程去跑, 因为这样的话, 顺序就得不到保证了。如下所示: 

$ mysqlbinlog binlog.000001 > /tmp/statements.sql $ mysqlbinlog binlog.000002 >> /tmp/statements.sql $ mysql -e "source /tmp/statements.sql"

    Oracle的LogMiner不太爽是因为它不是离线的, 做成MySQL这样的倒是比较方便多了. 看到这儿也应当可以想象到, MySQL中的复制大约是什么回事了吧?

    Mysqldumpslow 

    MySQL自带slow log的分析工具mysqldumpslow,但是没有说明。本文通过分析该脚本,介绍了其用法。slow log是MySQL根据SQL语句的执行时间设定,写入的一个文件,用于分析执行较慢的语句。 

    只要在 my.ini 文件中配置好: 

log-slow-queries = [slow_query_log_filename]

    即可记录超过默认的 10s 执行时间的 SQL 语句。 
    如果要修改默认设置,可以添加: 

long_query_time = 5

    设定为 5s 。 

    如果要记录所有 SQL 语句,可以写入: 

log-long-format # t=time, l=lock time, r=rows

    # at, al, 以及 ar 是对应的平均值 

    mysqldumpslow 可以接受的参数有: 

'v+', # verbose 'd+', # debug 's=s', # 排序 (t, at, l, al, r, ar etc) 'r!', # 倒排序 (largest last instead of first) 't=i', # 显示最高的 n 个查询 'a!', # 不把所有的数字以 N ,字符串以 'S' 显示 'n=i', # abstract numbers with at least n digits within names 'g=s', # grep: only consider stmts that include this string 'h=s', # hostname of db server for *-slow.log filename (can be wildcard) 'i=s', # name of server instance (if using mysql.server startup script) 'l!', # don't subtract lock time from total time

    perror显示错误代码的含义。 

    我们这里对MYSQL的命令做了个简单介绍,如果要看更多内容,几乎所有MYSQL命令我们都可以用—help来获得帮助,另外我们可以从MYSQL联机文档中获得更多信息。 

0
相关文章