1. 程式人生 > >精通MySQL多實例配置

精通MySQL多實例配置

arc 導致 mys new 生產環境 rom ive localhost shu

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多實例配置