欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【用实例管理器轻松管理多个MySQL实例】,下面是详细的分享!
用实例管理器轻松管理多个MySQL实例
一、MySQL数据库的实例管理器概述:
1、MySQL数据库的实例管理器(IM)是通过TCP/IP端口运行的后台程序,用来监视和管理MySQL数据库服务器实例。
2、假如IM挂了,则所有的实例都会挂掉;假如实例挂了,IM会尝试重新来启动它。
3、IM读取配置文件比如MY.CNF的[manager]段。
4、本文中的示例依据LINUX环境下试验。
二、配置说明:
1、配置文件如下:
|
[manager] user=mysql default-mysqld-path=/usr/local/mysql/bin/mysqld socket=/tmp/manager.sock pid-file=/tmp/manager.pid password-file=/etc/mysqlmanager.passwd monitoring-interval=2 port=1999 bind-address=192.168.0.231 log=/usr/local/mysql/bin/mysqlmanager.log run-as-service=true [mysqld1] ... [mysqld2] ... |
具体含义查看mysqlmanager --help
2、密码文件
IM将用户信息保存到密码文件中。密码文件的默认位置为/etc/mysqlmanager.passwd。
密码应类似于:
| petr:*35110DC9B4D8140F5DE667E28C72DD2597B5C848 |
我的mysqlmanager.passwd内容
|
user_all:*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
|
[root@localhost tmp]# /usr/local/mysql/bin/mysqlmanager
[2483/3086632640] [08/04/24 14:24:50] [INFO] Loading config file 'my.cnf'... [2483/3086632640] [08/04/24 14:24:50] [INFO] Manager: initializing... [2483/3086632640] [08/04/24 14:24:50] [INFO] Manager: detected threads model: POSIX threads. [2483/3086632640] [08/04/24 14:24:50] [INFO] Loading the password database... [2483/3086632640] [08/04/24 14:24:50] [INFO] Loaded user 'user_all'. [2483/3086632640] [08/04/24 14:24:50] [INFO] The password database loaded successfully. [2483/3086632640] [08/04/24 14:24:50] [INFO] Manager: pid file (/tmp/manager.pid) created. [2483/3086632640] [08/04/24 14:24:50] [INFO] mysqld instance 'mysqld1' has been added successfully. [2483/3086632640] [08/04/24 14:24:50] [INFO] mysqld instance 'mysqld2' has been added successfully. [2483/3076139920] [08/04/24 14:24:50] [INFO] Guardian: started. [2483/3076139920] [08/04/24 14:24:50] [INFO] Guardian: starting 'mysqld1'... [2483/3076058000] [08/04/24 14:24:50] [INFO] Instance 'mysqld1': Monitor: started. [2483/3076058000] [08/04/24 14:24:50] [INFO] Instance 'mysqld1': Monitor: starting mysqld... [2483/3076139920] [08/04/24 14:24:50] [INFO] Guardian: starting 'mysqld2'... [2483/3076058000] [08/04/24 14:24:50] [INFO] Instance 'mysqld1': Monitor: waiting for mysqld to stop... [2483/3075894160] [08/04/24 14:24:50] [INFO] Instance 'mysqld2': Monitor: started. [2483/3075894160] [08/04/24 14:24:50] [INFO] Instance 'mysqld2': Monitor: starting mysqld... [2483/3075894160] [08/04/24 14:24:50] [INFO] Instance 'mysqld2': Monitor: waiting for mysqld to stop... [2483/3086632640] [08/04/24 14:24:50] [INFO] Manager: started. [2483/3075976080] [08/04/24 14:24:50] [INFO] Listener: started. [2483/3075976080] [08/04/24 14:24:50] [INFO] Listener: accepting connections on ip socket (port: 1999)... [2483/3075976080] [08/04/24 14:24:50] [INFO] Listener: accepting connections on unix socket '/tmp/manager.sock'... ... InnoDB: than specified in the .cnf file 0 5242880 bytes! 080424 14:24:50 InnoDB: Started; log sequence number 0 46409 080424 14:24:50 [Note] Event Scheduler: Loaded 0 events 080424 14:24:50 [Note] /usr/local/mysql/bin/mysqld: ready for connections. Version: '5.1.23a-maria-alpha-log' socket: '/tmp/mysql1.sock' port: 3306 MySQL Community Server [Maria] (GPL) 080424 14:24:50 [Warning] 'user' entry 'root@localhost.localdomain' ignored in --skip-name-resolve mode. 080424 14:24:50 [Warning] 'user' entry '@localhost.localdomain' ignored in --skip-name-resolve mode. 080424 14:24:50 [Note] Event Scheduler: Loaded 0 events 080424 14:24:50 [Note] /usr/local/mysql/bin/mysqld: ready for connections. Version: '5.1.23a-maria-alpha-log' socket: '/tmp/mysql2.sock' port: 3309 MySQL Community Server [Maria] (GPL) [2483/3076139920] [08/04/24 14:24:52] [INFO] Guardian: 'mysqld1' is running, set state to STARTED. |
4、连接IM
| [root@localhost ~]# mysql -uuser_all -p -S/tmp/manager.sock -P1999 |
三、用IM来管理MySQL数据库
1、显示实例的状态和版本信息
|
[root@localhost ~]# mysql -uuser_all -p -S/tmp/manager.sock -P1999 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 1.0-beta
+---------------+--------+ | instance_name | state | +---------------+--------+ | mysqld1 | online | | mysqld2 | online | +---------------+--------+ 2 rows in set (0.00 sec) |
|
mysql> stop instance mysqld1; Query OK, 0 rows affected (0.30 sec)
+---------------+---------+ | instance_name | state | +---------------+---------+ | mysqld1 | offline | | mysqld2 | online | +---------------+---------+ 2 rows in set (0.00 sec) |
|
mysql> start instance mysqld1; Query OK, 0 rows affected (0.00 sec) Instance started
+---------------+--------+ | instance_name | state | +---------------+--------+ | mysqld1 | online | | mysqld2 | online | +---------------+--------+ 2 rows in set (0.00 sec) |
查看实例的版本信息
|
mysql> show instance status mysqld2; +---------------+--------+----------------+ | instance_name | state | version_number | version | mysqld_compatible | +---------------+--------+----------------+ | mysqld2 | online | 5.1.23 | 5.1.23a-maria-alpha for redhat-linux-gnu on i686 (MySQL Community Server [Maria] (GPL)) | no | +---------------+--------+----------------+ 1 row in set (0.00 sec) |
也可以显示实例的选项信息
|
mysql> show instance options mysqld1; +-----------------------+-----------------------------------+ | option_name | value | +-----------------------+-----------------------------------+ | instance_name | mysqld1 | | basedir | /usr/local/mysql | | datadir | /usr/local/mysql/data | | user | mysql | | default-character-set | utf8 | | port | 3306 | | socket | /tmp/mysql1.sock | | skip-locking | | | skip-name-resolve | | | key_buffer | 126M | | max_allowed_packet | 2M | | table_cache | 512 | | sort_buffer_size | 2M | | read_buffer_size | 2M | | read_rnd_buffer_size | 4M | | net_buffer_length | 2K | | thread_stack | 64K | | log-bin | mysql.log | | expire_logs_days | 5 | | wait_timeout | 20 | | pid-file | mysqld1-localhost.localdomain.pid | +-----------------------+-----------------------------------+ 21 rows in set (0.00 sec) |
也可以查询实例的日志相关信,不再赘述。
我们可以发现,管理实例其实非常方便。
2、管理用户
(1)、添加管理用户
|
[root@localhost ~]# /usr/local/mysql/bin/mysqlmanager --add-user
[3046/3086816960] [08/04/24 14:33:13] [INFO] Loading config file 'my.cnf'... Enter user name: shit_all [3046/3086816960] [08/04/24 14:33:18] [INFO] Loading the password database... [3046/3086816960] [08/04/24 14:33:18] [INFO] Loaded user 'user_all'. [3046/3086816960] [08/04/24 14:33:18] [INFO] The password database loaded successfully. Enter password: Re-type password: [3046/3086816960] [08/04/24 14:33:23] [INFO] IM: finished. [root@localhost ~]# cat /etc/mysqlmanager.passwd user_all:*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 shit_all:*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
|
[root@localhost ~]# mysql -ushit_all -p -S/tmp/manager.sock -P1999 Enter password: ERROR 1045 (28000): Access denied. Bad username/password pair |
(2)、修改用户密码
|
[root@localhost ~]# /usr/local/mysql/bin/mysqlmanager --edit-user
[3214/3086845632] [08/04/24 14:35:15] [INFO] Loading config file 'my.cnf'... Enter user name: shit_all [3214/3086845632] [08/04/24 14:35:19] [INFO] Loading the password database... [3214/3086845632] [08/04/24 14:35:19] [INFO] Loaded user 'user_all'. [3214/3086845632] [08/04/24 14:35:19] [INFO] Loaded user 'shit_all'. [3214/3086845632] [08/04/24 14:35:19] [INFO] The password database loaded successfully. Enter password: Re-type password: [3214/3086845632] [08/04/24 14:35:24] [INFO] IM: finished. |
(3)、删除用户
|
[root@localhost ~]# /usr/local/mysql/bin/mysqlmanager --drop-user
[3338/3086501568] [08/04/24 14:36:42] [INFO] Loading config file 'my.cnf'... Enter user name: shit_all [3338/3086501568] [08/04/24 14:36:45] [INFO] Loading the password database... [3338/3086501568] [08/04/24 14:36:45] [INFO] Loaded user 'user_all'. [3338/3086501568] [08/04/24 14:36:45] [INFO] Loaded user 'shit_all'. [3338/3086501568] [08/04/24 14:36:45] [INFO] The password database loaded successfully. [3338/3086501568] [08/04/24 14:36:45] [INFO] IM: finished. |
(4)、列出当前管理用户
|
[root@localhost ~]# /usr/local/mysql/bin/mysqlmanager --list-user
[3366/3086087872] [08/04/24 14:37:07] [INFO] Loading config file 'my.cnf'... [3366/3086087872] [08/04/24 14:37:07] [INFO] Loading the password database... [3366/3086087872] [08/04/24 14:37:07] [INFO] Loaded user 'user_all'. [3366/3086087872] [08/04/24 14:37:07] [INFO] The password database loaded successfully. user_all [3366/3086087872] [08/04/24 14:37:07] [INFO] IM: finished. [root@localhost ~]# |
四、远程管理
|
C:\Documents and Settings\Administrator>mysql -uuser_all -p -P1999 -h192.168.0.2 31 Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 1.0-beta
+---------------+--------+ | instance_name | state | +---------------+--------+ | mysqld1 | online | | mysqld2 | online | +---------------+--------+ 2 rows in set (0.00 sec)
|
总结:
MySQL数据库的实例管理器对于多个MySQL实例的管理是很方便的,但它本身存在两个不足:
1、不能直接进行数据库的SQL管理命令。
2、一定要确保IM进程不会突然挂掉。
以上所分享的是关于用实例管理器轻松管理多个MySQL实例,下面是编辑为你推荐的有价值的用户互动:
相关问题:一台电脑上可以有多个SQL实例名,是不是就是可以在...
答:一台电脑上可以有多个SQL实例名 的意思是,一台电脑上可以装多个数据库,应该是这么来理解,一个实例就是一个数据库。当然,安装不同的sql版本也可以实现安装多个数据库的目的,一般不建议,呵呵 >>详细
相关问题:oracle 一个监听程序可以为多个数据库实例服务吗?
答:一个数据库服务器上可能要跑多个应用,每个应用对应一个实例,这样管理上方便,互相不会有影响.所以会存在一个机器上存在多个实例的情况。我试着用Netconfiguration assistant配了一下,也成功了,但没有提示让我将这个监听对应到哪个数据库实例。 >>详细
相关问题:MySQL在一台db服务器上面如何启动多个实例
答:一、上传RPM包到服务器上 二、安装mysql服务器端rpm -ivhMySQL-server-5.5.8-1.rhel5.x86_64.rpm 三、安装mysql客户端 rpm -ivhMySQL-client-5.5.8-1.rhel5.x86_64.rpm 四、创建目录 在/data下创建目录,把原来的数据目录/var/lib/mysql 移到/da... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
