精通MySQL多實例配置
[root@localhost ~]# mkdir -p /data/{3306,3307}/data
[root@localhost ~]# tree /data/
/data/ 多實例根目錄
|-- 3306 3306實例的目錄
| `-- data 3306實例的數據文件目錄
`-- 3307 3307 實例的目錄
`-- data 3307實例的數據文件目錄
4 directories, 0 files
[root@localhost ~]# unzip data.zip
Archive: data.zip
creating: data/
creating: data/3306/
inflating: data/3306/my.cnf
inflating: data/3306/mysql
creating: data/3307/
inflating: data/3307/my.cnf
inflating: data/3307/mysql
[root@localhost ~]# cp data/3306/my.cnf /data/3306/
[root@localhost ~]# cp data/3307/my.cnf /data/3307/
[root@localhost ~]# cp data/3306/mysql /data/3306/
[root@localhost ~]# cp data/3307/mysql /data/3307/
[root@localhost ~]# tree /data
/data
|-- 3306
| |-- data
| |-- my.cnf
| `-- mysql
`-- 3307
|-- data
|-- my.cnf
`-- mysql
4 directories, 4 files
多實例啟動文件的mysql服務實質
mysqld_safe --defaults-file=/data/3306/my.cnf 2&1 > /dev/null &
mysqld_safe --defaults-file=/data/3307/my.cnf 2&1 > /dev/null &
多實例啟動文件的停止服務實質
mysqladmin -uroot -p1 -S /data/3306/mysql.sock shutdown
mysqladmin -uroot -p1 -S /data/3307/mysql.sock shutdown
授權相關文件
[root@localhost ~]# chown -R mysql.mysql /data
[root@localhost ~]# find /data/ -type f -name "mysql" | xargs chmod 750
[root@localhost ~]# find /data/ -type f -name "mysql" | xargs ls -l
-rwxr-x--- 1 mysql mysql 1301 Jul 31 22:54 /data/3306/mysql
-rwxr-x--- 1 mysql mysql 1300 Jul 31 22:54 /data/3307/mysql
初始化數據庫
[root@localhost ~]# cd /usr/local/mysql/scripts/
[root@localhost scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
[root@localhost scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
啟動服務
[root@localhost ~]# /data/3306/mysql start
Starting MySQL...
[root@localhost ~]# /data/3307/mysql start
Starting MySQL...
[root@localhost ~]# netstat -anutp | grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 37099/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 37818/mysqld
測試登錄
[root@localhost ~]# mysql -S /data/3306/mysql.sock
mysql>
[root@localhost ~]# mysql -S /data/3307/mysql.sock
mysql>
設定密碼
[root@localhost ~]# mysqladmin -uroot -S /data/3306/mysql.sock password '1'
[root@localhost ~]# mysqladmin -uroot -S /data/3307/mysql.sock password '1'
測試停止服務
[root@localhost ~]# /data/3306/mysql stop
Stoping MySQL...
[root@localhost ~]# /data/3307/mysql stop
Stoping MySQL...
實戰增加第三個實例
[root@localhost ~]# mkdir /data/3308/data -p
[root@localhost ~]# cp /data/3306/my.cnf /data/3308/
[root@localhost ~]# cp /data/3306/mysql /data/3308/
[root@localhost ~]# ls /data/3308/
data my.cnf mysql
[root@localhost ~]# chown -R mysql.mysql /data/3308/
[root@localhost ~]# vim /data/3308/my.cnf
[root@localhost ~]# vim /data/3308/mysql
[root@localhost ~]# cd /usr/local/mysql/scripts/
[root@localhost scripts]# ./mysql_install_db \
> --basedir=/usr/local/mysql/ \
> --datadir=/data/3308/data \
> --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
[root@localhost ~]# /data/3308/mysql start
Starting MySQL...
[root@localhost 3308]# netstat -anutp | grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 39537/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 40254/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 42028/mysqld
[root@localhost ~]# mysqladmin -uroot -S /data/3308/mysql.sock password '1'
[root@localhost ~]# mysql -uroot -p1 -S /data/3308/mysql.sock
mysql> quit
Bye
[root@localhost ~]# /data/3308/mysql stop
Stoping MySQL...
MySQL啟動基本原理說明
/etc/init.d/mysqld 是一個shell啟動腳本,啟動後最終會調用mysqld_safe腳本,最後調用mysqld服務啟動mysql
初始化數據庫時MySQL系統輸出給出的啟動方法:
mysqld_safe --user=mysql &
提示:
1. 當找回root密碼時,會經常使用mysqld_safe --user=mysql &帶參數啟動
2. 我們自己開發腳本啟動數據庫時可能會用到這個啟動方法。
3. /etc/init.d/mysqld和mysqld_safe --user=mysql &的啟動實質是一樣的。
MySQL關閉基本原理
優雅關閉
1. mysqladmin方法
[root@localhost ~]# mysqladmin -uroot -p123 shutdown
2. 自帶的腳本
/etc/init.d/mysqld stop
3. kill、killall、pkill等進程管理命令(不建議使用,特別是生產環境,高並發情況會導致數據丟失,甚至無法啟動)
覺得本文章不錯的可以分享給您的朋友或訂閱我,後期會分享更多的Linux技術文章
精通MySQL多實例配置