日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL搭建系列之多实例

發(fā)布時(shí)間:2025/3/17 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL搭建系列之多实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? 所謂多實(shí)例。就是在一臺(tái)server上搭建、執(zhí)行多個(gè)MySQL實(shí)例,每一個(gè)實(shí)例使用不同的服務(wù)port。通過不同的socket監(jiān)聽;物理上,每一個(gè)實(shí)例擁有獨(dú)立的參數(shù)配置文件及數(shù)據(jù)庫。

通常情況下。一臺(tái)server是不建議執(zhí)行多個(gè)MySQL實(shí)例的。尤其是生產(chǎn)環(huán)境,由于這會(huì)造成資源相互強(qiáng)占問題。但在一些高可用環(huán)境中。卻有這種需求,比方:利用Heartbeat搭建的故障轉(zhuǎn)移集群環(huán)境。若主備server僅僅執(zhí)行一個(gè)MySQL實(shí)例,則備用server尋常處于閑置狀態(tài),造成了資源浪費(fèi);若各自執(zhí)行一個(gè)MySQL實(shí)例,則在一方故障時(shí),要求還有一方接管其任務(wù)。即同一時(shí)候執(zhí)行兩個(gè)MySQL實(shí)例。基于這個(gè)需求,應(yīng)合理配置MySQLserver,使其具備同一時(shí)候執(zhí)行多個(gè)實(shí)例的能力。

怎樣才干在一臺(tái)server上搭建、執(zhí)行多個(gè)MySQL實(shí)例,其關(guān)鍵在于怎樣為每一個(gè)實(shí)例分配獨(dú)立的參數(shù)文件,下面是幾種經(jīng)常使用的多實(shí)例方案,分別來學(xué)習(xí)、熟悉一下。

系統(tǒng)環(huán)境

OS:CentOS 5.8 (x86_64)???? 內(nèi)核:2.6.18-308.el5???? DB:MySQL 5.5.17

一. 採用源代碼包安裝MySQL實(shí)現(xiàn)多實(shí)例

源代碼包是最靈活的安裝包,可定制編譯一些路徑參數(shù),可安裝到不論什么路徑,因此可在一臺(tái)server搭建多個(gè)MySQL實(shí)例。本例安裝兩個(gè)MySQL實(shí)例。過程例如以下:

1.? 準(zhǔn)備工作

從MySQL 5.5開始,改用cmake工具來編譯源代碼包,所以要首先安裝它,可參考其他文檔。此處不做解說。另外。編譯之前還需安裝ncurses-devel、bison兩個(gè)依賴包。否則會(huì)編譯失敗。

――安裝依賴包

# rpm -ivh ncurses-devel-5.5-24.20060715.x86_64.rpm

# rpm -ivh bison-2.3-2.1.x86_64.rpm

――創(chuàng)建mysql系統(tǒng)組及用戶

# groupadd -g 497 mysql

# useradd –u 499 -g mysql mysql

――解壓安裝包

# tar -zxvf mysql-5.5.17.tar.gz

# cd mysql-5.5.17

2.? 編譯、安裝

l??MySQL實(shí)例1:

(port:3306。安裝文件夾:/usr/local/mysqla,數(shù)據(jù)文件文件夾:/data/lib/mysqla)

――定制編譯

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysqla-DMYSQL_TCP_PORT=3306 -DMYSQL_DATADIR=/data/lib/mysqla-DMYSQL_UNIX_ADDR=/data/lib/mysqla/mysql.sock -DSYSCONFDIR=/usr/local/mysqla-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1-DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci-DEXTRA_CHARSETS=all

# make

# make install

――創(chuàng)建系統(tǒng)數(shù)據(jù)庫及系統(tǒng)表

# cd /usr/local/mysqla/

# scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysqla --datadir=/data/lib/mysqla

l??MySQL實(shí)例2:

(port:3307,安裝文件夾:/usr/local/mysqlb,數(shù)據(jù)文件文件夾:/data/lib/mysqlb)

――刪除舊的緩存及對(duì)象文件

再次編譯之前。要清除原來的緩存信息及對(duì)象文件,例如以下:

# cd mysql-5.5.17

# make clean

# rm -rf CMakeCache.txt

――定制編譯

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysqlb-DMYSQL_TCP_PORT=3307 -DMYSQL_DATADIR=/data/lib/mysqlb-DMYSQL_UNIX_ADDR=/data/lib/mysqlb/mysql.sock -DSYSCONFDIR=/usr/local/mysqlb-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1-DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci-DEXTRA_CHARSETS=all

# make

# make install

――創(chuàng)建系統(tǒng)數(shù)據(jù)庫及系統(tǒng)表

# cd /usr/local/mysqlb/

# scripts/mysql_install_db --user=mysql--datadir=/data/lib/mysqlb

3.? 配置參數(shù)文件

經(jīng)過上面兩次編譯并創(chuàng)建系統(tǒng)數(shù)據(jù)庫。安裝、搭建了兩個(gè)MySQL實(shí)例,接下來分別為其配置參數(shù)文件。

――查看參數(shù)文件缺省位置

# /usr/local/mysqla/bin/mysql --help|grep '/my.cnf'

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysqla/my.cnf ~/.my.cnf

# /usr/local/mysqlb/bin/mysql --help|grep '/my.cnf'

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysqlb/my.cnf ~/.my.cnf

從中能夠看出,兩個(gè)MySQL實(shí)例的4個(gè)缺省參數(shù)文件里有3個(gè)是同樣的。所以不能採用。否則就無法區(qū)分了;當(dāng)然。多個(gè)實(shí)例間同樣的參數(shù)部分可如此配置,僅僅只是不便于管理。

為了使每一個(gè)MySQL實(shí)例擁有一個(gè)獨(dú)立的參數(shù)文件。僅僅能採用第3個(gè)缺省參數(shù)文件,即將參數(shù)文件存放到各實(shí)例自己的安裝文件夾下(basedir)。

另外。還需保證不存在第4個(gè)參數(shù)文件。由于它的優(yōu)先級(jí)別較高,若存在則會(huì)覆蓋前面的參數(shù)文件設(shè)置。

關(guān)于參數(shù)文件的具體配置此處不做說明了,如果已為兩個(gè)MySQL實(shí)例配置好了各自的參數(shù)文件,并分別存放在各自的安裝文件夾下。即/usr/local/mysqla|mysqlb文件夾下。

4.? 啟動(dòng)實(shí)例

啟動(dòng)MySQL實(shí)例。須要為datadir文件夾設(shè)置正確的權(quán)限。否則實(shí)例啟動(dòng)失敗。這一步缺省應(yīng)該已經(jīng)設(shè)置。檢查一下。若未設(shè)置。則通過例如以下命令設(shè)置。

# chown -R mysql.mysql mysql/

――啟動(dòng)兩個(gè)MySQL實(shí)例

# /usr/local/mysqla/bin/mysqld_safe --user=mysql &

# /usr/local/mysqlb/bin/mysqld_safe --user=mysql &

――查看進(jìn)程

# ps -ef|grep mysql

root????? 1694 26876? 0 13:04 pts/2??? 00:00:00 more/usr/local/mysqla/support-files/mysql.server

root????? 2270 13474? 0 13:13 pts/1??? 00:00:00 /bin/sh/usr/local/mysqla/bin/mysqld_safe --user=mysql

mysql???? 2805? 2270? 113:13 pts/1??? 00:00:00 /usr/local/mysqla/bin/mysqld--basedir=/usr/local/mysqla --datadir=/data/lib/mysqla--plugin-dir=/usr/local/mysqla/lib/plugin --user=mysql--log-error=/data/lib/mysqla/mysql.err --pid-file=/data/lib/mysqla/mysql.pid--socket=/data/lib/mysqla/mysql.sock --port=3306

root????? 2828 13474? 0 13:13 pts/1??? 00:00:00 /bin/sh/usr/local/mysqlb/bin/mysqld_safe --user=mysql

mysql???? 3361? 2828 25 13:13 pts/1??? 00:00:00 /usr/local/mysqlb/bin/mysqld--basedir=/usr/local/mysqlb --datadir=/data/lib/mysqlb --plugin-dir=/usr/local/mysqlb/lib/plugin--user=mysql --log-error=/data/lib/mysqlb/mysql.err--pid-file=/data/lib/mysqlb/mysql.pid --socket=/data/lib/mysqlb/mysql.sock--port=3307

root????? 3381 13474? 0 13:13 pts/1??? 00:00:00 grep mysql

能夠看出,成功啟動(dòng)了兩個(gè)MySQL實(shí)例(進(jìn)程)

――若要關(guān)閉服務(wù),可運(yùn)行例如以下命令

# /usr/local/mysqla/bin/mysqladmin shutdown

# /usr/local/mysqlb/bin/mysqladmin shutdown

5.? 改動(dòng)為服務(wù)管理方式

為了方便管理,將其改動(dòng)為服務(wù)管理方式,例如以下:

――拷貝服務(wù)文件

# cp /usr/local/mysqla/support-files/mysql.server/etc/rc.d/init.d/mysqla

# cp /usr/local/mysqlb/support-files/mysql.server/etc/rc.d/init.d/mysqlb

――加入服務(wù)

# chkconfig --add mysqla

# chkconfig --list mysqla

mysqla????????? 0:off?? 1:off??2:on??? 3:on??? 4:on???5:on??? 6:off

# chkconfig --add mysqlb

# chkconfig --list mysqlb

mysqlb????????? 0:off?? 1:off??2:on??? 3:on??? 4:on???5:on??? 6:off

――啟動(dòng)服務(wù)

# service mysqla start

Starting MySQL..??????????????????????????????????????????[? OK? ]

[root@db ~]# service mysqlb start

Starting MySQL..??????????????????????????????????????????[? OK? ]

至此,我們通過源代碼包成功搭建了兩個(gè)MySQL實(shí)例。它們擁有獨(dú)立的port、參數(shù)文件及數(shù)據(jù)庫。

二. 採用二進(jìn)制包安裝MySQL實(shí)現(xiàn)多實(shí)例

二進(jìn)制包事實(shí)上就是已經(jīng)過編譯的源代碼包,不能再通過定制參數(shù)文件缺省路徑的方法來隔離各個(gè)實(shí)例的參數(shù)文件了;但有一點(diǎn)須要說明的是:第3個(gè)參數(shù)文件的缺省路徑指的是basedir(安裝文件夾)。可通過它來隔離各實(shí)例的參數(shù)文件,因此一臺(tái)server也就可搭建多個(gè)MySQL實(shí)例了。

相同安裝兩個(gè)MySQL實(shí)例,過程例如以下:

1.? 準(zhǔn)備工作

――創(chuàng)建mysql系統(tǒng)組及用戶

# groupadd -g 497 mysql

# useradd -u 499 -g mysql mysql

――解壓安裝包

將二進(jìn)制安裝包解壓到/usr/local/文件夾中。并改名為mysql,這是二進(jìn)制包編譯時(shí)basedir參數(shù)的缺省文件夾。

# tar zxvf mysql-5.5.17-linux2.6-x86_64.tar.gz -C /usr/local/

# cd /usr/local/

# mv mysql-5.5.17-linux2.6-x86_64 mysql

――拷貝解壓后的mysql。生成例如以下兩個(gè)文件夾,以用作兩個(gè)實(shí)例的安裝文件夾

# cd /usr/local/

# cp -R mysql mysqla

# cp -R mysql mysqlb

# ll

drwxr-xr-x 12 root root?????4096 Sep 27 14:33 mysql

drwxr-xr-x 12 root root?????4096 Sep 27 14:36 mysqla

drwxr-xr-x 12 root root?????4096 Sep 27 14:37 mysqlb

備注:此處保留mysql這個(gè)文件夾,是為了配置硬連接,以便在不論什么文件夾下,都能夠訪問mysqlclient程序。

2.? 創(chuàng)建系統(tǒng)數(shù)據(jù)庫

為兩個(gè)MySQL實(shí)例創(chuàng)建系統(tǒng)數(shù)據(jù)庫,basedir分別為/usr/loca/mysqla|mysqlb。datadir分別為/data/lib/mysqla|mysqlb。例如以下:

# cd /usr/local/mysql/

# scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysqla --datadir=/data/lib/mysqla

# scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysqlb --datadir=/data/lib/mysqlb

3.? 配置參數(shù)文件

為了使每一個(gè)MySQL實(shí)例擁有獨(dú)立的參數(shù)文件,將其存放在各自的安裝文件夾下(basedir),且需保證缺省路徑下不存在參數(shù)文件,以防讀取錯(cuò)誤。

如果參數(shù)文件已配置好。port分別為3306、3307,basedir分別為/usr/local/mysqla、/usr/local/mysqlb。datadir分別為/data/lib/mysqla、/data/lib/mysqlb。

4.? 啟動(dòng)實(shí)例

這樣的情況下,可在啟動(dòng)實(shí)例時(shí)通過--defaults-file為其指定一個(gè)參數(shù)文件。例如以下:

# /usr/local/mysql/bin/mysqld_safe--defaults-file=/usr/local/mysqla/my.cnf &

# /usr/local/mysql/bin/mysqld_safe--defaults-file=/usr/local/mysqlb/my.cnf &

關(guān)閉實(shí)例時(shí)。相同須要指定其參數(shù)文件,否則會(huì)失敗。

# /usr/local/mysql/bin/mysqladmin--defaults-file=/usr/local/mysqla/my.cnf shutdown

# /usr/local/mysql/bin/mysqladmin--defaults-file=/usr/local/mysqlb/my.cnf shutdown

5.? 改動(dòng)為服務(wù)管理方式

二進(jìn)制包沒有採用缺省參數(shù)文件。所以改動(dòng)為服務(wù)管理方式略微有點(diǎn)復(fù)雜,須要改動(dòng)服務(wù)啟動(dòng)文件里的basedir、datadir參數(shù)。例如以下:

――拷貝服務(wù)文件

# cp /usr/local/mysql/support-files/mysql.server/etc/rc.d/init.d/mysqla

# cp /usr/local/mysql/support-files/mysql.server/etc/rc.d/init.d/mysqlb

――加入服務(wù)

# chkconfig --add mysqla

# chkconfig --add mysqlb

――改動(dòng)服務(wù)啟動(dòng)文件

編輯兩個(gè)服務(wù)啟動(dòng)文件,改動(dòng)basedir、datadir參為合適的路徑,例如以下:

# vi /etc/rc.d/init.d/mysqla

basedir=/usr/local/mysqla

datadir=/data/lib/mysqla

# vi /etc/rc.d/init.d/mysqlb

basedir=/usr/local/mysqlb

datadir=/data/lib/mysqlb

備注:通過顯式設(shè)置basedir,以使每一個(gè)MySQL實(shí)例擁有獨(dú)立的參數(shù)文件。

――啟動(dòng)服務(wù)

# service mysqla start

Starting MySQL..??????????????????????????????????????????[? OK? ]

# service mysqlb start

Starting MySQL..??????????????????????????????????????????[? OK? ]

# service mysqlb status

MySQL running (30326)????????????????????????????????????? [? OK? ]

# service mysqla status

MySQL running (29755)????????????????????????????????????? [? OK? ]

改動(dòng)為服務(wù)管理方式后,啟動(dòng)、關(guān)閉服務(wù)方便了,但在本地登錄數(shù)據(jù)庫。還需指定socket文件,由于缺省的/tmp/mysql.sock并不存在,如:

# mysql --socket=/data/lib/mysqla/mysql.sock

# mysql --socket=/data/lib/mysqlb/mysql.sock

三. 採用RPM包安裝MySQL實(shí)現(xiàn)多實(shí)例

RPM包的文件布局是固定的,無法改動(dòng),因此一臺(tái)server通常僅僅能安裝一個(gè)MySQL實(shí)例。但我們知道。不管何種方式,MySQL實(shí)例都是通過調(diào)用mysqld_safe命令來啟動(dòng)的,而mysqld_safe命令可通過--defaults-file參數(shù)來顯式指定一個(gè)參數(shù)文件,因此相同可在一臺(tái)server安裝、執(zhí)行多個(gè)MySQL實(shí)例,僅僅只是要對(duì)服務(wù)啟動(dòng)文件做一些調(diào)整。以下就來嘗試一下這種方法。

1.? 安裝MySQL

――安裝server及client包

# rpm -ivh MySQL-server-5.5.17-1.rhel5.x86_64.rpm

# rpm -ivh MySQL-client-5.5.17-1.rhel5.x86_64.rpm

――啟動(dòng)服務(wù)

# service mysql start

Starting MySQL..??????????????????????????????????????????[? OK? ]

――查看basedir和datadir參數(shù)值

# mysql

mysql> show variables like 'basedir';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| basedir?????? |/usr? |

+---------------+-------+

1 row in set (0.00 sec)

?

mysql> show variables like 'datadir';

+---------------+-----------------+

| Variable_name | Value??????????|

+---------------+-----------------+

| datadir?????? |/var/lib/mysql/ |

+---------------+-----------------+

1 row in set (0.01 sec)

從中能夠看出basedir缺省為/usr。datadir缺省為/var/lib/mysql。

2.? 創(chuàng)建系統(tǒng)數(shù)據(jù)庫

缺省情況下。RPM包已創(chuàng)建了系統(tǒng)數(shù)據(jù)庫,位于/var/lib/mysql文件夾下。拷貝這個(gè)文件夾到/data/lib文件夾下。并分別命名為mysqla、mysqlb。以此來創(chuàng)建兩個(gè)實(shí)例的系統(tǒng)數(shù)據(jù)庫。

# service mysql stop

Shutting down MySQL.?????????????????????????????????????? [? OK? ]

# cp -r /var/lib/mysql/ /data/lib/mysqla

# cp -r /var/lib/mysql/ /data/lib/mysqlb

當(dāng)然,也可通過mysql_install_db工具來創(chuàng)建。它位于/usr/bin文件夾下,例如以下:

# /usr/bin/mysql_install_db --user=mysql--datadir=/data/lib/mysqla

# /usr/bin/mysql_install_db --user=mysql--datadir=/data/lib/mysqlb

3.? 配置參數(shù)文件

配置兩個(gè)參數(shù)文件,分別命名為mya.cnf、myb.cnf,存放到/etc/文件夾下。port號(hào)分別為3306、3307,datadir路徑分別為/data/lib/mysqla、/data/lib/mysqlb。

4.? 啟動(dòng)實(shí)例

同二進(jìn)制包多實(shí)例一樣,此時(shí)啟動(dòng)、關(guān)閉實(shí)例時(shí)僅僅能通過--defaults-file指定參數(shù)文件。例如以下:

# /usr/bin/mysqld_safe --defaults-file=/etc/mya.cnf &

# /usr/bin/mysqld_safe --defaults-file=/etc/myb.cnf &

# /usr/bin/mysqladmin --defaults-file=/etc/mya.cnf shutdown

# /usr/bin/mysqladmin --defaults-file=/etc/myb.cnf shutdown

5.? 改動(dòng)服務(wù)管理方式

為了方便,還是要將其改動(dòng)為服務(wù)管理方式。運(yùn)行例如以下改動(dòng)操作。

――創(chuàng)建服務(wù)啟動(dòng)文件

依據(jù)服務(wù)啟動(dòng)文件mysql,創(chuàng)建兩個(gè)相應(yīng)服務(wù)啟動(dòng)文件mysqla、mysqlb

# cd /etc/rc.d/init.d/

# cp mysql mysqla

# cp mysql mysqlb

――加入服務(wù)

# chkconfig --add mysqla

# chkconfig --add mysqlb

――刪除原來的服務(wù)啟動(dòng)文件及服務(wù)(避免誤啟動(dòng))

# chkconfig --del mysql

# rm /etc/rc.d/init.d/mysql

――改動(dòng)服務(wù)啟動(dòng)文件

編輯服務(wù)啟動(dòng)文件,進(jìn)行例如以下調(diào)整。主要有下面幾個(gè)地方:

# vi /etc/rc.d/init.d/mysqla

l??1:加入一個(gè)變量。設(shè)置為參數(shù)文件

my_cnf=/etc/mya.cnf

l??2:改動(dòng)extra_args參數(shù)值,目的是讓parse_server_arguments函數(shù)從中解析出datadir等參數(shù)值

(紅色字體為加入部分)

extra_args=""

if test -r "$basedir/my.cnf"

then

? extra_args="-e$basedir/my.cnf"

else

? if test -r"$datadir/my.cnf"

? then

??? extra_args="-e$datadir/my.cnf"

? else

???extra_args="-e $my_cnf"

? fi

fi

l??3:在mysqld_safe命令中使用--defaults-file以便顯式指定一個(gè)參數(shù)文件

$bindir/mysqld_safe --defaults-file=$my_cnf--datadir="$datadir" --pid-file="$mysqld_pid_file_path"$other_args >/dev/null 2>&1 &

注意:一定要將--defaults-file參數(shù)緊跟mysqld_safe,中間不能有其它參數(shù)。否則啟動(dòng)失敗。

l??4:改動(dòng)lock_file_path,若未改動(dòng),雖還不清楚有啥影響。但以防萬一,還是改動(dòng)之

lock_file_path="$lockdir/mysqla"

l??5:找到'status',將獲取mysqld進(jìn)程的命令pidof替換為ps

#mysqld_pid=`pidof $libexecdir/mysqld`

mysqld_pid=`ps --user=mysql -f|grep "$libexecdir/mysqld--defaults-file=$my_cnf"|awk '{print $2}'`

說明:pidof命令用于獲取$libexecdir/mysqld的進(jìn)程號(hào),進(jìn)而推斷MySQL實(shí)例的狀態(tài),因?yàn)槁窂郊懊Q都是固定的,所以無法區(qū)分每一個(gè)實(shí)例相應(yīng)的進(jìn)程。導(dǎo)致Status混亂。用ps命令的過濾功能可實(shí)現(xiàn)這個(gè)需求,針對(duì)每一個(gè)實(shí)例找到其相應(yīng)的進(jìn)程。

依照相同的方法。為第二個(gè)MySQL實(shí)例調(diào)整服務(wù)啟動(dòng)文件。

――啟動(dòng)服務(wù)

[root@db mysqla]# service mysqla start

Starting MySQL..??????????????????????????????????????????[? OK? ]

[root@db mysqla]# service mysqlb start

Starting MySQL..??????????????????????????????????????????[? OK? ]

至此。我們通過RPM包在一臺(tái)server上安裝了兩個(gè)MySQL實(shí)例。

四. 採用mysqld_multi工具實(shí)現(xiàn)多實(shí)例

mysqld_multi是MySQL自帶的一個(gè)統(tǒng)一管理多個(gè)MySQL實(shí)例的服務(wù)腳本。它會(huì)從MySQL的參數(shù)文件里搜索[mysqld#]段序列(#即GNR,能夠是隨意的正整數(shù)),作為自己的參數(shù)。以此來區(qū)分不同的段,進(jìn)而控制特定的mysqld進(jìn)程(MySQL實(shí)例)的啟動(dòng)、停止或者獲取報(bào)告信息。

以下我們採用來了解一下它是怎樣管理多個(gè)MySQL實(shí)例的。

1.? 配置參數(shù)文件

mysqld_multi與安裝包類型無關(guān),所以不管是源代碼包、二進(jìn)制包,還是RPM包都自帶了這個(gè)程序腳本,如果MySQL已安裝成功。

鑒于mysqld_multi的工作機(jī)制,要求MySQL的參數(shù)文件里配置[mysqld_multi]項(xiàng)。及多個(gè)[mysqld#]段。每一個(gè)[mysqld]段相應(yīng)一個(gè)MySQL實(shí)例。使用不同的port及unix socket監(jiān)聽文件。

本例配置兩個(gè)[mysqld#]段,例如以下:

# vi /etc/my.cnf

[mysqld_multi]

mysqld???? =/usr/bin/mysqld_safe

mysqladmin = /usr/bin/mysqladmin

?

[mysqld1]

port??????????? = 3306

server-id?????? = 3306

?

datadir???????? =/data/lib/mysqla

socket????????? =/data/lib/mysqla/mysql.sock

pid-file??????? =/data/lib/mysqla/mysql.pid

?

character-set-server?? =utf8

default_storage_engine = InnoDB

?

log-bin????????? =/data/lib/mysqla/mysql-bin

binlog_format??? = row

sync-binlog????? = 1

?

slow-query-log????? = on

slow-query-log-file = /data/lib/mysqla/mysql-slow.log

log_error??????? =/data/lib/mysqla/mysql.err

?

max_connections???????? =2000

back_log??????????????? =50

?

skip-external-locking

skip-name-resolve

#skip-networking

?

key_buffer_size???????? =256M

max_allowed_packet????? =1M

table_open_cache??????? = 2000

sort_buffer_size??????? =1M

read_buffer_size??????? =1M

read_rnd_buffer_size??? =4M

myisam_sort_buffer_size = 64M

thread_cache_size?????? =8

query_cache_size??????? =16M

thread_concurrency????? =8

?

innodb_data_home_dir?????= /data/lib/mysqla

innodb_data_file_path????= ibdata1:10M:autoextend

innodb_log_group_home_dir = /data/lib/mysqla

innodb_buffer_pool_size????????= 256M

innodb_additional_mem_pool_size = 20M

innodb_log_file_size???????????= 64M

innodb_log_buffer_size?????????= 8M

innodb_flush_log_at_trx_commit?= 1

innodb_lock_wait_timeout???????= 50

?

[mysql2]

port??????????? = 3307

server-id?????? = 3307

?

datadir???????? =/data/lib/mysqlb

socket????????? =/data/lib/mysqlb/mysql.sock

pid-file??????? =/data/lib/mysqlb/mysql.pid

?

character-set-server?? =utf8

default_storage_engine = InnoDB

?

log-bin????????? =/data/lib/mysqlb/mysql-bin

binlog_format??? = row

sync-binlog????? = 1

?

slow-query-log????? = on

slow-query-log-file = /data/lib/mysqlb/mysql-slow.log

log_error??????? =/data/lib/mysqlb/mysql.err

?

max_connections???????? =2000

back_log??????????????? =50

?

skip-external-locking

skip-name-resolve

#skip-networking

?

key_buffer_size???????? =256M

max_allowed_packet????? =1M

table_open_cache??????? = 2000

sort_buffer_size??????? =1M

read_buffer_size??????? =1M

read_rnd_buffer_size??? =4M

myisam_sort_buffer_size = 64M

thread_cache_size?????? =8

query_cache_size??????? =16M

thread_concurrency????? =8

?

innodb_data_home_dir?????= /data/lib/mysqlb

innodb_data_file_path????= ibdata1:10M:autoextend

innodb_log_group_home_dir = /data/lib/mysqlb

innodb_buffer_pool_size????????= 256M

innodb_additional_mem_pool_size = 20M

innodb_log_file_size???????????= 64M

innodb_log_buffer_size?????????= 8M

innodb_flush_log_at_trx_commit?= 1

innodb_lock_wait_timeout???????= 50

[mysqld_multi]項(xiàng)指定了mysqld_safe及mysqladmin命令工具,mysqld_multi也就是通過這兩個(gè)工具來管理MySQL實(shí)例的。兩個(gè)[mysqld#]段,分別相應(yīng)兩個(gè)MySQL實(shí)例,port分別為3306、3307。datadir分別為/data/lib/mysqla、/data/lib/mysqlb。

2.? 使用mysqld_multi

――通過mysqld_multi啟動(dòng)、關(guān)閉MySQL實(shí)例

# /usr/bin/mysqld_multi start|stop 1

# /usr/bin/mysqld_multi start|stop 2

備注:此處的1、2分別表示參數(shù)配置文件里的[mysqld1]、[mysqld2]。相應(yīng)著兩個(gè)MySQL實(shí)例;若此處不輸入要操作的段序列。則缺省啟動(dòng)、關(guān)閉全部[mysqld]段。

為了方便。將其改動(dòng)為服務(wù)管理方式。詳細(xì)操作例如以下:

――拷貝服務(wù)文件

將mysqld_multi.server文件復(fù)制到/etc/rc.d/init.d/文件夾下。并改個(gè)簡單點(diǎn)的名字

(mysqld_multi.server文件的詳細(xì)位置因安裝方式不同而不同)

# cp /usr/share/mysql/mysqld_multi.server/etc/rc.d/init.d/mysqld_m

――加入服務(wù)

# chkconfig --add mysqld_m

# chkconfig --list mysqld_m

mysqld_m??????? 0:off??1:off?? 2:on??? 3:on???4:on??? 5:on??? 6:off

――改動(dòng)服務(wù)文件

改動(dòng)/etc/rc.d/init.d/mysqld_m文件里的兩個(gè)參數(shù)。例如以下:

# vi /etc/rc.d/init.d/mysqld_m

basedir=/usr/

bindir=/usr/bin

備注:這兩個(gè)參數(shù)的缺省值分別為/usr/local/mysql、/urs/local/mysql/bin,不同類型的安裝包,實(shí)際值可能不同,依據(jù)自己的實(shí)際情況,改動(dòng)這兩個(gè)參數(shù)的值。以便啟動(dòng)腳本可以找到/usr/bin/mysqld_multi文件。并賦予該文件操作權(quán)限。

――啟動(dòng)、關(guān)閉實(shí)例

改動(dòng)完畢后,我們就能夠通過mysqld_multi啟動(dòng)mysqld實(shí)例了。其語法例如以下:

#mysqld_m [options][GNR[,GNR]...]

# service mysqld_m start|stop 1

# service mysqld_m start|stop 2

3.? 不足之處

mysqld_multi統(tǒng)一管理多個(gè)MySQL實(shí)例,雖有方便之處,但在使用過程中。也發(fā)現(xiàn)了一些不足之處,一是選項(xiàng)過于簡單,僅僅有start、stop、report。而沒有status項(xiàng),所以無法查看服務(wù)的狀態(tài)。二是在啟動(dòng)、關(guān)閉服務(wù)時(shí),僅僅是運(yùn)行start、stop這么一個(gè)操作,而不跟蹤操作結(jié)果,所以無法確保操作成功運(yùn)行。

總結(jié)

以上是生活随笔為你收集整理的MySQL搭建系列之多实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 蜜桃麻豆视频 | 污网站在线看 | 性做久久久久久久免费看 | 国产综合在线观看视频 | 一区二区国产在线观看 | 午夜a级片 | 自拍av在线 | 春宵av| 九七影院在线观看免费观看电视 | 色综合久久88| 国产精品视频网站 | 欧美黄片一区二区三区 | 欧美偷拍视频 | 中文av字幕| 免费看黄视频的网站 | 免费在线观看黄色网址 | 久热久操 | 亚洲视频免费播放 | 国产aⅴ无码片毛片一级一区2 | 美女脱了裤子让男人桶 | 91av不卡| 中文字幕91视频 | 69精品在线 | 国产一区亚洲二区三区 | 88av视频| 国产亚洲精品美女久久久 | julia一区二区三区中文字幕 | av爽妇网| 精品爆乳一区二区三区无码av | 最新中文字幕av专区 | 日本a级无毛 | 国产一区视频免费观看 | 欧洲亚洲自拍 | 亚洲国产理论 | 亚洲精品视频免费 | av一区二区三区在线 | 日本不卡123 | 草草在线观看 | 欧美三级韩国三级日本三斤 | 国产人妻一区二区三区四区五区六 | 久草精品在线 | 韩国三级视频在线 | 亚洲精品乱码久久久久久麻豆不卡 | 日韩欧美第一页 | 国产91在线免费观看 | 国产精品入口麻豆 | 亚洲欧美日韩专区 | 日韩v| 一个色综合导航 | 可以免费看的毛片 | 精品人妻一区二区三区换脸明星 | 成人小视频在线 | 91精品在线视频观看 | 春草| 女警白嫩翘臀呻吟迎合 | 日韩视频第一页 | 欧美亚洲一区二区在线观看 | 在线观看国产三级 | 高潮在线视频 | 91日本在线观看 | 日韩中文字幕一区二区三区四区 | 六月婷婷久久 | 日本五十熟hd丰满 | 蜜桃麻豆视频 | 亚洲色图二区 | 538国产视频| 99热精品久久 | 99ri在线 | 一女三黑人理论片在线 | 四川操bbb | 成人午夜av在线 | 亚洲精品视频一二三区 | 欧美aaaaa| 高潮毛片无遮挡高清免费 | 午夜视频一区二区三区 | 韩国主播青草55部完整 | 日韩少妇一区二区 | 91麻豆影视 | 亚洲色图偷 | 久久综合激的五月天 | 噜噜噜久久 | 一级黄色大片免费 | 成年视频在线播放 | 日韩在线免费av | 97成人在线视频 | 久久一二三区 | 国产精品视频免费观看 | 久久久久久久久福利 | 国产亚洲视频在线观看 | 免费午夜视频在线观看 | www.麻豆av.com| 青娱乐最新地址 | 国产真实偷伦视频 | 人妻互换一二三区激情视频 | av官网在线观看 | 色综合中文综合网 | 色秀视频网 | 国产av 一区二区三区 | www.超碰在线观看 |