環境:linux主機上已經yum安裝了mysql,而且數據庫正在運行。
在不關閉/重啟mysql的情況下,重新啟動一個新的mysql實例,使用3307端口,實現一臺機器上同時運行兩個數據庫實例。
1、創建新的mysql實例數據存儲目錄:
mkdir -p /data/mysql_3307
2、把my.cnf配置文件復制一份,開幾個端口要復制幾份。
cp /etc/my.cnf /data/mysql_3307/my.cnf
3、修改/data/mysql_3307/my.cnf文件,把默認的3306端口改成?3307,根據實際情況修改socket,basedir,datadir 。
[client]
port = 3307
socket = /tmp/mysql_3307.sock
default-character-set = utf8
# The MySQL server
[mysqld]
port = 3307
user = mysql
socket = /tmp/mysql_3307.sock
basedir = /usr
datadir = /data/mysql_3307
character-set-server = utf8
log-error = /data/mysql_3307/error.log
pid-file = /data/mysql_3307/localhost.localdomain.pid
4、初始化數據庫:
mysql_install_db --basedir=/usr --datadir=/data/mysql_3307 --user=mysql
mysql是yum安裝的,所以basedir=/usr就可以,它會自動在/usr下找mysql的安裝目錄。
如果是源碼包編譯安裝的mysql,假如安裝路徑是在/usr/local/mysql
cd /usr/local/mysql/scripts/
./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3307 --user=mysql
5、啟動mysql,要指定.cnf文件啟動
mysqld_safe --defaults-file=/data/mysql_3307/my.cnf --user=mysql &
6、停止MYSQL,需要指定對應的sock文件。
mysqladmin -uroot -S /tmp/mysql_3307.sock shutdown
7、登陸3307端口的mysql
mysql -S /tmp/mysql_3307.sock -P 3307
啟動、停止、重啟mysql腳本:
#!/bin/bash
#mysql 停止\啟動\重啟腳本 此腳本只針對yum安裝的mysql,而且已經為root設置過密碼。
#init
port=3307
mysql_user="root"
mysql_pwd="123456"
CmdPath="/usr/bin"
mysql_sock="/tmp/mysql_${port}.sock"
#startup function function_start_mysql() { ? ? if [ ! -e "$mysql_sock" ];then ? ? ? ? printf "Starting MySQL...\n" ? ? ? ? ${CmdPath}/mysqld_safe --defaults-file=/data/mysql_3307/my.cnf --user=mysql 2>&1 >/dev/null & ? ? else ? ? ? ? printf "MySQL is running...\n" ? ? ? ? exit ? ? fi } #stop function function_stop_mysql() { ? ? if [ ! -e "$mysql_sock" ];then ? ? ? ? printf "MySQL is stopped...\n" ? ? ? ? exit ? ? else ? ? ? ? printf "Stoping MySQL...\n" ? ? ? ? ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown ? ? fi } #restart function function_restart_mysql() { ? ? printf "Restarting MySQL...\n" ? ? function_stop_mysql ? ? sleep 2 ? ? function_start_mysql } case $1 in start) ? ? function_start_mysql ;; stop) ? ? function_stop_mysql ;; restart) ? ? function_restart_mysql ;; *) ? ? printf "Usage: /data/mysql_3307 {start|stop|restart}\n" esac