5.2. mysqlmanager:MySQL实例管理器
- 5.2.1. 用MySQL实例管理器启动MySQL服务器
- 5.2.2. 连接到MySQL实例管理器并创建用户账户
- 5.2.3. MySQL实例管理器命令行选项
- 5.2.4. MySQL实例管理器配置文件
- 5.2.5. MySQL实例管理器识别的命令
MySQL实例管理器(IM)是通过TCP/IP端口运行的后台程序,用来监视和管理MySQL数据库服务器实例。MySQL实例管理器 适合Unix-类操作系统和Windows。
可以在mysqld_safe脚本使用MySQL实例管理器来启动和停止MySQL服务器,甚至可以从一个远程主机。MySQL实例管理器还执行mysqld_multi脚本的功能(和大多数语法)。下面为MySQL实例管理器的详细描述。
5.2.1. 用MySQL实例管理器启动MySQL服务器
一般情况,用mysql.server脚本启动MySQL Database Server(MySQL数据库服务器),通常驻留在/etc/init.d/文件夹。默认情况下该脚本调用mysqld_safe脚本。但是,你可以在脚本中将use_mysqld_safe变量设置为0(零)以便使用MySQL实例管理器来启动服务器。
在这种情况下,Instance Manager的行为取决于MySQL配置文件中的选项。如果没有配置文件,MySQL实例管理器创建mysqld实例并试图用默认(编译嵌入的)配置来启动。这说明如果mysqld没有安装到默认位置,IM不能猜出它的位置。如果你已经在非标准位置安装了MySQL服务器,你应使用配置文件。参见2.1.5节,“安装布局”。
如果有配置文件,IM将分析配置文件搜索[mysqld]部分(例如[mysqld]、[mysqld1]、[mysqld2]等)。每个部分指定一个实例。启动时IM将启动所有找到的实例。IM关闭时默认停止所有实例。
请注意有一个特殊选项mysqld-path(mysqld-path = path-to-mysqld- binary),只能用IM识别。使用该变量让IM知道mysqld二进制驻留在哪儿。你还应该为服务器设置basedir和datadir选项。
启用MySQL实例管理器的典型MySQL服务器启动/关闭循环为:
· 用/etc/init.d/mysql脚本启动MySQL实例管理器。
· MySQL实例管理器启动所有实例并监视它们。
·如果某个服务器实例失败,MySQL实例管理器重启它。
·如果MySQL实例管理器被关闭(例如用/etc/init.d/mysql stop命令),所有实例被MySQL实例管理器关闭。
5.2.2. 连接到MySQL实例管理器并创建用户账户
使用MySQL客户端-服务器协议来处理同MySQL实例管理器之间的通信。你不能使用标准mysql客户端程序和MySQL C API来连接IM。IM支持客户端工具和mysql-4.1或以后的版本所分发的库所用的MySQL客户端-服务器协议版本。
IM将用户信息保存到密码文件中。密码文件的默认位置为/etc/mysqlmanager.passwd。
密码应类似于:
petr:*35110DC9B4D8140F5DE667E28C72DD2597B5C848
要想生成密码用--passwd选项调用IM。则输出可以重定向到/etc/mysqlmanager.passwd文件以添加新用户。下面为示例命令。
./mysqlmanager --passwd >> /etc/mysqlmanager.passwd
Creating record for new user.
Enter user name: mike
Enter password: <password>
Re-type password: <password>
下面的行将加到/etc/mysqlmanager.passwd:
mike:*00A51F3F48415C7D4E8908980D443C29C69B60C9
如果/etc/mysqlmanager.passwd文件中没有该条,则不能连接IM。
5.2.3. MySQL实例管理器命令行选项
MySQL实例管理器支持许多命令行选项。执行./mysqlmanager --help命令可以简单列出。有下面的选项:·--help,-?
显示帮助消息并退出。
·--bind-address=name
绑定地址用于连接。
·--default-mysqld-path=name
在Unix中,如果实例部分没有路径,则为寻找MySQL服务器二进制的地点。例如:default-mysqld-path = /usr/sbin/mysqld
·--defaults-file=file_name
从给定文件读Instance Manager和MySQL服务器设定值。所有Instance Manager更改的配置将加入该文件。只能用于Instance Manager的第一选项。
·--install
在Windows中,将Instance Manager安装为Windows服务。
·--log=name
IM日志文件的路径。结合--run-as-service选项使用。
·--monitoring-interval=Seconds
监视实例的间隔,单位为秒。Instance Manager将尝试连接每个监视的实例来检查它们是否是活动的/没有挂起。出现故障,IM将重启几次(实际上是多次)实例。可以用nonguarded选项为特定实例禁用该行为。如果未给定任何值,默认使用20秒。
·--passwd,-P
编写passwd文件并退出。
·--password-file=name
从该文件中寻找Instance Manager用户和密码。默认文件是/etc/mysqlmanager.passwd。
·--pid-file=name
使用的进程ID文件。默认情况下,该文件文件名为mysqlmanager.pid。
·-- port=port_num
用于连接的端口号。(IANA分配的默认端口号为2273)。
·--print-defaults
打印当前的默认值并退出。只能用作Instance Manager的第一选项。
·--remove
在Windows中,删掉Instance Manager Windows服务。假定前面已经用--install运行了Instance Manager。
·--run-as-service
使完善进程变为后台程序并启动。完善进程很简单,不易崩溃。出现故障后它将自己重启IM。
·--socket=name
Unix中用于连接的套接字文件。默认情况下,文件名为/tmp/mysqlmanager.sock。
·--standalone
在Windows中以单机模式运行Instance Manager。
·--user=name
启动并运行mysqlmanager的用户名。建议使用运行mysqld服务器的用户账户来运行mysqlmanager。
·--version,-V
输出版本信息并退出。
5.2.4. MySQL实例管理器配置文件
Instance Manager使用标准my.cnf文件。它使用[manager]部分为自己读取选项并读取[mysqld]部分来创建实例。[manager]部分包含上述列出的选项。下面为[manager]部分示例:# MySQL Instance Manager options section
[manager]
default-mysqld-path = /usr/local/mysql/libexec/mysqld
socket=/tmp/manager.sock
pid-file=/tmp/manager.pid
password-file = /home/cps/.mysqlmanager.passwd
monitoring-interval = 2
port = 1999
bind-address = 192.168.1.5
MySQL实例管理器只在Unix中读取并管理/etc/my.cnf文件。在Windows中,MySQL实例管理器从Instance Manager的安装目录读取my.ini文件。用--defaults-file=file_ name选项可以更改默认选项文件的位置。
实例部分指定启动时给每个实例的选项。这些主要是普通MySQL服务器选项,但有一些IM-专用选项:
·mysqld-path = <path-to-mysqld-binary>
mysqld服务器二进制的路径。
·shutdown-delay = Seconds
IM应等待实例关闭的秒数。默认为35秒。超过延迟时间后,IM假定实例正挂起并试图“kill–9”它。如果你使用带large表的InnoDB,你应当增加该值。
·nonguarded
如果你想要为某个实例禁用IM监视功能,应设置该选项。
下面给出了几个实例示例。
[mysqld]
mysqld-path=/usr/local/mysql/libexec/mysqld
socket=/tmp/mysql.sock
port=3307
server_id=1
skip-stack-trace
core-file
skip-bdb
log-bin
log-error
log=mylog
log-slow-queries
[mysqld2]
nonguarded
port=3308
server_id=2
mysqld-path= /home/cps/mysql/trees/mysql-5.1/sql/mysqld
socket = /tmp/mysql.sock5
pid-file = /tmp/hostname.pid5
datadir= /home/cps/mysql_data/data_dir1
language=/home/cps/mysql/trees/mysql-5.1/sql/share/english
log-bin
log=/tmp/fordel.log
5.2.5. MySQL实例管理器识别的命令
一旦你已经为MySQL实例管理器设置了一个密码文件并且IM正在运行,你可以连接它。你可以使用mysql客户端工具通过标准MySQL API来连接。以下是MySQL实例管理器目前可以接收的命令的清单和例子。·START INSTANCE <instance_name>
该命令将试图启动一个实例:
mysql> START INSTANCE mysqld4;
Query OK, 0 rows affected (0,00 sec)
·STOP INSTANCE <instance_name>
将试图停止一个实例:
mysql> STOP INSTANCE mysqld4;
Query OK, 0 rows affected (0,00 sec)
·SHOW INSTANCES
显示所有载入的实例名:
mysql> show instances;
+---------------+---------+
| instance_name | status |
+---------------+---------+
| mysqld3 | offline |
| mysqld4 | online |
| mysqld2 | offline |
+---------------+---------+
3 rows in set (0,04 sec)
·SHOW INSTANCE STATUS <instance_name>
显示选定的实例的状态和版本信息:
mysql> SHOW INSTANCE STATUS mysqld3;
+---------------+--------+---------+
| instance_name | status | version |
+---------------+--------+---------+
| mysqld3 | online | unknown |
+---------------+--------+---------+
1 row in set (0.00 sec)
·SHOW INSTANCE OPTIONS <instance_name>
显示实例使用的选项:
mysql> SHOW INSTANCE OPTIONS mysqld3;
+---------------+---------------------------------------------------+
| option_name | value |
+---------------+---------------------------------------------------+
| instance_name | mysqld3 |
| mysqld-path | /home/cps/mysql/trees/mysql-4.1/sql/mysqld|
| port | 3309 |
| socket| /tmp/mysql.sock3 |
| pid-file | hostname.pid3 |
| datadir | /home/cps/mysql_data/data_dir1/ |
| language | /home/cps/mysql/trees/mysql-4.1/sql/share/english |
+---------------+---------------------------------------------------+
7 rows in set (0.01 sec)
·SHOW <instance_name> LOG FILES
该命令提供实例使用的所有日志文件。结果包含日志文件的路径和日志文件的大小。如果没有在配置文件中指定日志文件的路径 (例如log=/var/mysql.log),IM试图猜出它的位置。如果IM不能猜出日志文件的位置,你应明确指定日志文件的位置。
mysql> SHOW mysqld LOG FILES;
+-------------+------------------------------------+----------+
| Logfile | Path | Filesize |
+-------------+------------------------------------+----------+
| ERROR LOG | /home/cps/var/mysql/owlet.err | 9186 |
| GENERAL LOG | /home/cps/var/mysql/owlet.log | 471503 |
| SLOW LOG | /home/cps/var/mysql/owlet-slow.log | 4463 |
+-------------+------------------------------------+----------+
3 rows in set (0.01 sec)
·SHOW <instance_name> LOG {ERROR | SLOW | GENERAL} size[,offset_from_end]
该命令查找指定的日志文件的一部分。因为大多数用户关注最新的日志消息,用size参数定义你想要从日志末尾开始索取的字节数。你可以指定可选offset_from_end参数从日志文件中部索取数据。下面的示例可以索取21个字节的数据,从日志文件末尾开始23个字节,2个字节用于结束:
mysql> SHOW mysqld LOG GENERAL 21, 2;
+---------------------+
| Log |
+---------------------+
| using password: YES |
+---------------------+
1 row in set (0.00 sec)
·SET instance_name.option_name=option_value
该命令编辑指定的实例的配置文件以更改/增加实例选项。IM假定配置文件位于/etc/my.cnf。你应检查文件是否存在,并具有合适的权限。
mysql> SET mysqld2.port=3322;
Query OK, 0 rows affected (0.00 sec)
在MySQL服务器重启前,对配置文件进行的更改不会生效。并且,执行FLUSH INSTANCES命令后,才会将这些更改保存到Instance Manager的实例设定值的本地缓存中。
·UNSET instance_name.option_name
该命令从实例的配置文件删除一个选项。
mysql> UNSET mysqld2.port;
Query OK, 0 rows affected (0.00 sec)
在MySQL服务器重启前,对配置文件进行的更改不会生效。并且,执行FLUSH INSTANCES命令后,才会将这些更改保存到Instance Manager的实例设定值的本地缓存中。
·FLUSH INSTANCES
该命令强制IM重读配置文件并清空内部结构。编辑配置文件后应执行该命令。该命令不重启实例:
mysql> FLUSH INSTANCES;
Query OK, 0 rows affected (0.04 sec)