当前位置: 首页 > 文档资料 > MySQL 中文手册 >

5.2. mysqlmanager:MySQL实例管理器

优质
小牛编辑
131浏览
2023-12-01
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)