mysql的多實例管理

mysqld_multi 可以管理多個幀聽不同Unix套接字文件和TCP/IP端口的連接的mysqld  進程。它可以啓動或停止服務器,或報告它們的當前狀態。

 


第一步:手動編寫這個多啓動配置文件
# vim /usr/local/mysql/etc/mysqld_multi.cnf

[mysqld_multi]  --多啓動的參數組,不要寫錯
mysqld=/usr/local/mysql/bin/mysqld_safe  --啓動時使用的程序
mysqladmin=/usr/local/mysql/bin/mysqladmin --管理程序
user=multi_admin   --定義管理用戶名
password=multipass   --管理用戶的密碼


[mysqld00]
port=3300
datadir=/data00
pid-file=/var/run/mysqld/mysql00.pid
socket=/var/run/mysqld/mysql00.socket
general_log
general_log_file=/var/log/mysqld/mysql00.log
log-error=/var/log/mysqld/mysql00-err.log


[mysqld01]
port=3301
datadir=/data01
pid-file=/var/run/mysqld/mysql01.pid
socket=/var/run/mysqld/mysql01.socket
general_log
general_log_file=/var/log/mysqld/mysql01.log
log-error=/var/log/mysqld/mysql01-err.log


[mysqld02]
port=3302
datadir=/data02
pid-file=/var/run/mysqld/mysql02.pid
socket=/var/run/mysqld/mysql02.socket
general_log
general_log_file=/var/log/mysqld/mysql02.log
log-error=/var/log/mysqld/mysql02-err.log

 

第二步:
創建目錄,並修改其權限
# mkdir /data00 /data01  /data02 /var/run/mysqld  /var/log/mysqld

# chown mysql.mysql /data00 /data01 /data02 /var/run/mysqld /var/log/mysqld /usr/local/mysql/etc/mysqld_multi.cnf

 

第三步:
初始化要管理的多個數據庫

# /usr/local/mysql/bin/mysql_install_db --datadir=/data00/  --user=mysql

# /usr/local/mysql/bin/mysql_install_db --datadir=/data01/  --user=mysql

# /usr/local/mysql/bin/mysql_install_db --datadir=/data02/  --user=mysql

 

第四步,用mysqld_multi啓動多個數據庫

# /usr/local/mysql/bin/mysqld_multi --config-file=/usr/local/mysql/etc/mysqld_multi.cnf start 0,1,2


也可以使用下面的命令來啓動;--config-file參數將會被--defaults-extra-file參數替代
[root@li ~]# /usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/usr/local/mysql/etc/mysqld_multi.cnf start 0,1,2


# netstat -ntlup |grep 33
tcp        0      0 0.0.0.0:3300                0.0.0.0:*                   LISTEN      3855/mysqld        
tcp        0      0 0.0.0.0:3301                0.0.0.0:*                   LISTEN      3494/mysqld        
tcp        0      0 0.0.0.0:3302                0.0.0.0:*                   LISTEN      3507/mysqld   

報告數據庫狀態用report
# /usr/local/mysql/bin/mysqld_multi --config-file=/usr/local/mysql/etc/mysqld_multi.cnf report 0,1,2
Reporting MySQL servers
MySQL server from group: mysqld00 is running
MySQL server from group: mysqld01 is running
MySQL server from group: mysqld02 is running


分別使用這多個數據的方法:
就是使用mysql連接時,指定不同的socket

# /usr/local/mysql/bin/mysql --socket=/var/run/mysqld/mysql00.socket

# /usr/local/mysql/bin/mysql --socket=/var/run/mysqld/mysql01.socket

# /usr/local/mysql/bin/mysql --socket=/var/run/mysqld/mysql02.socket


第五步:
授權關閉數據的權限
# /usr/local/mysql/bin/mysqld_multi --config-file=/usr/local/mysql/etc/mysqld_multi.cnf stop 0,1,2


--使用上面命令stop後發現並不能關閉這多個數據庫,因爲每個數據庫還需要對multi_admin用戶進行授權

 

連接第一個數據庫授權
# /usr/local/mysql/bin/mysql --socket=/var/run/mysqld/mysql00.socket

mysql> grant shutdown on *.* to 'multi_admin'@'localhost' identified by 'multipass';

mysql> flush privileges;


--每個數據庫都要重複做一次上面的操作,都要授權

都授權後,可以很靈活的關閉和開啓指定的數據庫
# /usr/local/mysql/bin/mysqld_multi --config-file=/usr/local/mysql/etc/mysqld_multi.cnf stop 0,2


# /usr/local/mysql/bin/mysqld_multi --config-file=/usr/local/mysql/etc/mysqld_multi.cnf report 0,1,2
Reporting MySQL servers
MySQL server from group: mysqld00 is not running
MySQL server from group: mysqld01 is running
MySQL server from group: mysqld02 is not running


-------------------------------------------------------------

上面的程序是沒有服務腳本的,要支持chkconfig,就得手動寫

vim /etc/init.d/mysqld_multi
#!/bin/bash


# chkconfig: - 86 16
# description: start and stop the mysqld_multi service.

start () {
        /usr/local/mysql/bin/mysqld_multi --config-file=/usr/local/mysql/etc/mysqld_multi.cnf start 0,1,2
}

stop () {
        /usr/local/mysql/bin/mysqld_multi --config-file=/usr/local/mysql/etc/mysqld_multi.cnf stop 0,1,2
}

case "$1" in
        start )
                start
                sleep 2
                echo " ...........................[OK]"
        ;;
        stop )
                stop
                sleep 2
                echo " ...........................[OK]"
        ;;
        restart )
                stop
                sleep 5
                start
                echo ".........................[OK]"
        ;;
        *  )
        echo "USAGE:start|stop|restart"
        ;;
esac


# chmod  755   /etc/init.d/mysqld_multi

 


==========================================================

 

=============================================================

--------------------------------------------------------------

 

MySQL實例管理器(IM)是通過TCP/IP端口運行的後臺程序,用來監視和管理MySQL數據庫服務器實例。MySQL實例管理器 適合Unix-類操作系統和Windows。

rpm 版默認也支持,源碼版需要在編譯時加上--withmysqlmanager 


# /usr/local/mysql/libexec/mysqlmanager  --啓動程序

第一步:
手動編寫配置文件
# vim /usr/local/mysql/etc/mysqlmanager.cnf

[manager]
default-mysqld-path=/usr/local/mysql/libexec/mysqld
socket=/var/run/mysqld/manager.socket
pid-file=/var/run/mysqld/manager.pid
password-file=/usr/local/mysql/etc/my.passwd --定義密碼文件
monitoring-interval=2  --監控時間間隔
port=1999   --管理端口
bind-address=2.2.2.10 --管理IP


[mysqld03]
port=3303
datadir=/data03
socket=/var/run/mysqld/mysql03.socket
pid-file=/var/run/mysqld/mysql03.pid
general_log
general_log_file=/var/log/mysqld/mysql03.log
log-error=/var/log/mysqld/mysql03-err.log
user=mysql  --這一句不加啓動會報錯

[mysqld04]
port=3304
datadir=/data04
socket=/var/run/mysqld/mysql04.socket
pid-file=/var/run/mysqld/mysql04.pid
general_log
general_log_file=/var/log/mysqld/mysql04.log
log-error=/var/log/mysqld/mysql04-err.log
user=mysql

[mysqld05]
port=3305
datadir=/data05
socket=/var/run/mysqld/mysql05.socket
pid-file=/var/run/mysqld/mysql05.pid
general_log
general_log_file=/var/log/mysqld/mysql05.log
log-error=/var/log/mysqld/mysql05-err.log
user=mysql


第二步:
創建相關目錄,修改權限
# mkdir /data03 /data04 /data05 /var/log/mysqld /var/run/mysqld/

# chown mysql.mysql /data03 /data04 /data05 /var/log/mysqld /var/run/mysqld/ /usr/local/mysql/etc/mysqlmanager.cnf

 

第三步:
初始化數據庫
# /usr/local/mysql/bin/mysql_install_db --datadir=/data03 --user=mysql

# /usr/local/mysql/bin/mysql_install_db --datadir=/data04 --user=mysql

# /usr/local/mysql/bin/mysql_install_db --datadir=/data05 --user=mysql


第四步:創建密碼文件
# /usr/local/mysql/libexec/mysqlmanager --passwd >> /usr/local/mysql/etc/my.passwd

# cat /usr/local/mysql/etc/my.passwd
li:*23AE809DDACAF96AF0FD78ED04B6A265E05AA257


--因爲mysql5.1.x版本上面的mysqlmanager程序有BUG,不能生成,所以就用rpm版mysqlmanager程序來替代生成
# /usr/libexec/mysqlmanager --passwd > /usr/local/mysql/etc/my.passwd
Creating record for new user.
Enter user name: li
Enter password:
Re-type password:

 

第五步:啓動數據庫
# /usr/local/mysql/libexec/mysqlmanager --defaults-file=/usr/local/mysql/etc/mysqlmanager.cnf &

 


第六步:通過管理IP地址登錄
# /usr/local/mysql/bin/mysql -h 2.2.2.10 -P 1999 -u li -p123


mysql> show instances;
mysql> show instance status mysqld03;
mysql> stop instance  mysqld03;
mysql> start instance  mysqld03;
mysql> show instance options mysqld03;
mysql> show mysqld1 log files;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章