MySQL搭建系列之多实例
? ? ? ? ? 所謂多實例。就是在一臺server上搭建、執行多個MySQL實例,每一個實例使用不同的服務port。通過不同的socket監聽;物理上,每一個實例擁有獨立的參數配置文件及數據庫。
通常情況下。一臺server是不建議執行多個MySQL實例的。尤其是生產環境,由于這會造成資源相互強占問題。但在一些高可用環境中。卻有這種需求,比方:利用Heartbeat搭建的故障轉移集群環境。若主備server僅僅執行一個MySQL實例,則備用server尋常處于閑置狀態,造成了資源浪費;若各自執行一個MySQL實例,則在一方故障時,要求還有一方接管其任務。即同一時候執行兩個MySQL實例。基于這個需求,應合理配置MySQLserver,使其具備同一時候執行多個實例的能力。
怎樣才干在一臺server上搭建、執行多個MySQL實例,其關鍵在于怎樣為每一個實例分配獨立的參數文件,下面是幾種經常使用的多實例方案,分別來學習、熟悉一下。
系統環境
OS:CentOS 5.8 (x86_64)???? 內核:2.6.18-308.el5???? DB:MySQL 5.5.17
一. 採用源代碼包安裝MySQL實現多實例
源代碼包是最靈活的安裝包,可定制編譯一些路徑參數,可安裝到不論什么路徑,因此可在一臺server搭建多個MySQL實例。本例安裝兩個MySQL實例。過程例如以下:
1.? 準備工作
從MySQL 5.5開始,改用cmake工具來編譯源代碼包,所以要首先安裝它,可參考其他文檔。此處不做解說。另外。編譯之前還需安裝ncurses-devel、bison兩個依賴包。否則會編譯失敗。
――安裝依賴包
# rpm -ivh ncurses-devel-5.5-24.20060715.x86_64.rpm
# rpm -ivh bison-2.3-2.1.x86_64.rpm
――創建mysql系統組及用戶
# 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實例1:
(port:3306。安裝文件夾:/usr/local/mysqla,數據文件文件夾:/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
――創建系統數據庫及系統表
# cd /usr/local/mysqla/
# scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysqla --datadir=/data/lib/mysqla
l??MySQL實例2:
(port:3307,安裝文件夾:/usr/local/mysqlb,數據文件文件夾:/data/lib/mysqlb)
――刪除舊的緩存及對象文件
再次編譯之前。要清除原來的緩存信息及對象文件,例如以下:
# 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
――創建系統數據庫及系統表
# cd /usr/local/mysqlb/
# scripts/mysql_install_db --user=mysql--datadir=/data/lib/mysqlb
3.? 配置參數文件
經過上面兩次編譯并創建系統數據庫。安裝、搭建了兩個MySQL實例,接下來分別為其配置參數文件。
――查看參數文件缺省位置
# /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
從中能夠看出,兩個MySQL實例的4個缺省參數文件里有3個是同樣的。所以不能採用。否則就無法區分了;當然。多個實例間同樣的參數部分可如此配置,僅僅只是不便于管理。
為了使每一個MySQL實例擁有一個獨立的參數文件。僅僅能採用第3個缺省參數文件,即將參數文件存放到各實例自己的安裝文件夾下(basedir)。
另外。還需保證不存在第4個參數文件。由于它的優先級別較高,若存在則會覆蓋前面的參數文件設置。
關于參數文件的具體配置此處不做說明了,如果已為兩個MySQL實例配置好了各自的參數文件,并分別存放在各自的安裝文件夾下。即/usr/local/mysqla|mysqlb文件夾下。
4.? 啟動實例
啟動MySQL實例。須要為datadir文件夾設置正確的權限。否則實例啟動失敗。這一步缺省應該已經設置。檢查一下。若未設置。則通過例如以下命令設置。
# chown -R mysql.mysql mysql/
――啟動兩個MySQL實例
# /usr/local/mysqla/bin/mysqld_safe --user=mysql &
# /usr/local/mysqlb/bin/mysqld_safe --user=mysql &
――查看進程
# 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
能夠看出,成功啟動了兩個MySQL實例(進程)
――若要關閉服務,可運行例如以下命令
# /usr/local/mysqla/bin/mysqladmin shutdown
# /usr/local/mysqlb/bin/mysqladmin shutdown
5.? 改動為服務管理方式
為了方便管理,將其改動為服務管理方式,例如以下:
――拷貝服務文件
# 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
――加入服務
# 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
――啟動服務
# service mysqla start
Starting MySQL..??????????????????????????????????????????[? OK? ]
[root@db ~]# service mysqlb start
Starting MySQL..??????????????????????????????????????????[? OK? ]
至此,我們通過源代碼包成功搭建了兩個MySQL實例。它們擁有獨立的port、參數文件及數據庫。
二. 採用二進制包安裝MySQL實現多實例
二進制包事實上就是已經過編譯的源代碼包,不能再通過定制參數文件缺省路徑的方法來隔離各個實例的參數文件了;但有一點須要說明的是:第3個參數文件的缺省路徑指的是basedir(安裝文件夾)。可通過它來隔離各實例的參數文件,因此一臺server也就可搭建多個MySQL實例了。
相同安裝兩個MySQL實例,過程例如以下:
1.? 準備工作
――創建mysql系統組及用戶
# groupadd -g 497 mysql
# useradd -u 499 -g mysql mysql
――解壓安裝包
將二進制安裝包解壓到/usr/local/文件夾中。并改名為mysql,這是二進制包編譯時basedir參數的缺省文件夾。
# 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。生成例如以下兩個文件夾,以用作兩個實例的安裝文件夾
# 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這個文件夾,是為了配置硬連接,以便在不論什么文件夾下,都能夠訪問mysqlclient程序。
2.? 創建系統數據庫
為兩個MySQL實例創建系統數據庫,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.? 配置參數文件
為了使每一個MySQL實例擁有獨立的參數文件,將其存放在各自的安裝文件夾下(basedir),且需保證缺省路徑下不存在參數文件,以防讀取錯誤。
如果參數文件已配置好。port分別為3306、3307,basedir分別為/usr/local/mysqla、/usr/local/mysqlb。datadir分別為/data/lib/mysqla、/data/lib/mysqlb。
4.? 啟動實例
這樣的情況下,可在啟動實例時通過--defaults-file為其指定一個參數文件。例如以下:
# /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 &
關閉實例時。相同須要指定其參數文件,否則會失敗。
# /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.? 改動為服務管理方式
二進制包沒有採用缺省參數文件。所以改動為服務管理方式略微有點復雜,須要改動服務啟動文件里的basedir、datadir參數。例如以下:
――拷貝服務文件
# 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
――加入服務
# chkconfig --add mysqla
# chkconfig --add mysqlb
――改動服務啟動文件
編輯兩個服務啟動文件,改動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
備注:通過顯式設置basedir,以使每一個MySQL實例擁有獨立的參數文件。
――啟動服務
# 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? ]
改動為服務管理方式后,啟動、關閉服務方便了,但在本地登錄數據庫。還需指定socket文件,由于缺省的/tmp/mysql.sock并不存在,如:
# mysql --socket=/data/lib/mysqla/mysql.sock
# mysql --socket=/data/lib/mysqlb/mysql.sock
三. 採用RPM包安裝MySQL實現多實例
RPM包的文件布局是固定的,無法改動,因此一臺server通常僅僅能安裝一個MySQL實例。但我們知道。不管何種方式,MySQL實例都是通過調用mysqld_safe命令來啟動的,而mysqld_safe命令可通過--defaults-file參數來顯式指定一個參數文件,因此相同可在一臺server安裝、執行多個MySQL實例,僅僅只是要對服務啟動文件做一些調整。以下就來嘗試一下這種方法。
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
――啟動服務
# service mysql start
Starting MySQL..??????????????????????????????????????????[? OK? ]
――查看basedir和datadir參數值
# 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.? 創建系統數據庫
缺省情況下。RPM包已創建了系統數據庫,位于/var/lib/mysql文件夾下。拷貝這個文件夾到/data/lib文件夾下。并分別命名為mysqla、mysqlb。以此來創建兩個實例的系統數據庫。
# service mysql stop
Shutting down MySQL.?????????????????????????????????????? [? OK? ]
# cp -r /var/lib/mysql/ /data/lib/mysqla
# cp -r /var/lib/mysql/ /data/lib/mysqlb
當然,也可通過mysql_install_db工具來創建。它位于/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.? 配置參數文件
配置兩個參數文件,分別命名為mya.cnf、myb.cnf,存放到/etc/文件夾下。port號分別為3306、3307,datadir路徑分別為/data/lib/mysqla、/data/lib/mysqlb。
4.? 啟動實例
同二進制包多實例一樣,此時啟動、關閉實例時僅僅能通過--defaults-file指定參數文件。例如以下:
# /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.? 改動服務管理方式
為了方便,還是要將其改動為服務管理方式。運行例如以下改動操作。
――創建服務啟動文件
依據服務啟動文件mysql,創建兩個相應服務啟動文件mysqla、mysqlb
# cd /etc/rc.d/init.d/
# cp mysql mysqla
# cp mysql mysqlb
――加入服務
# chkconfig --add mysqla
# chkconfig --add mysqlb
――刪除原來的服務啟動文件及服務(避免誤啟動)
# chkconfig --del mysql
# rm /etc/rc.d/init.d/mysql
――改動服務啟動文件
編輯服務啟動文件,進行例如以下調整。主要有下面幾個地方:
# vi /etc/rc.d/init.d/mysqla
l??1:加入一個變量。設置為參數文件
my_cnf=/etc/mya.cnf
l??2:改動extra_args參數值,目的是讓parse_server_arguments函數從中解析出datadir等參數值
(紅色字體為加入部分)
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以便顯式指定一個參數文件
$bindir/mysqld_safe --defaults-file=$my_cnf--datadir="$datadir" --pid-file="$mysqld_pid_file_path"$other_args >/dev/null 2>&1 &
注意:一定要將--defaults-file參數緊跟mysqld_safe,中間不能有其它參數。否則啟動失敗。
l??4:改動lock_file_path,若未改動,雖還不清楚有啥影響。但以防萬一,還是改動之
lock_file_path="$lockdir/mysqla"
l??5:找到'status',將獲取mysqld進程的命令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的進程號,進而推斷MySQL實例的狀態,因為路徑及名稱都是固定的,所以無法區分每一個實例相應的進程。導致Status混亂。用ps命令的過濾功能可實現這個需求,針對每一個實例找到其相應的進程。
依照相同的方法。為第二個MySQL實例調整服務啟動文件。
――啟動服務
[root@db mysqla]# service mysqla start
Starting MySQL..??????????????????????????????????????????[? OK? ]
[root@db mysqla]# service mysqlb start
Starting MySQL..??????????????????????????????????????????[? OK? ]
至此。我們通過RPM包在一臺server上安裝了兩個MySQL實例。
四. 採用mysqld_multi工具實現多實例
mysqld_multi是MySQL自帶的一個統一管理多個MySQL實例的服務腳本。它會從MySQL的參數文件里搜索[mysqld#]段序列(#即GNR,能夠是隨意的正整數),作為自己的參數。以此來區分不同的段,進而控制特定的mysqld進程(MySQL實例)的啟動、停止或者獲取報告信息。
以下我們採用來了解一下它是怎樣管理多個MySQL實例的。
1.? 配置參數文件
mysqld_multi與安裝包類型無關,所以不管是源代碼包、二進制包,還是RPM包都自帶了這個程序腳本,如果MySQL已安裝成功。
鑒于mysqld_multi的工作機制,要求MySQL的參數文件里配置[mysqld_multi]項。及多個[mysqld#]段。每一個[mysqld]段相應一個MySQL實例。使用不同的port及unix socket監聽文件。
本例配置兩個[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]項指定了mysqld_safe及mysqladmin命令工具,mysqld_multi也就是通過這兩個工具來管理MySQL實例的。兩個[mysqld#]段,分別相應兩個MySQL實例,port分別為3306、3307。datadir分別為/data/lib/mysqla、/data/lib/mysqlb。
2.? 使用mysqld_multi
――通過mysqld_multi啟動、關閉MySQL實例
# /usr/bin/mysqld_multi start|stop 1
# /usr/bin/mysqld_multi start|stop 2
備注:此處的1、2分別表示參數配置文件里的[mysqld1]、[mysqld2]。相應著兩個MySQL實例;若此處不輸入要操作的段序列。則缺省啟動、關閉全部[mysqld]段。
為了方便。將其改動為服務管理方式。詳細操作例如以下:
――拷貝服務文件
將mysqld_multi.server文件復制到/etc/rc.d/init.d/文件夾下。并改個簡單點的名字
(mysqld_multi.server文件的詳細位置因安裝方式不同而不同)
# cp /usr/share/mysql/mysqld_multi.server/etc/rc.d/init.d/mysqld_m
――加入服務
# chkconfig --add mysqld_m
# chkconfig --list mysqld_m
mysqld_m??????? 0:off??1:off?? 2:on??? 3:on???4:on??? 5:on??? 6:off
――改動服務文件
改動/etc/rc.d/init.d/mysqld_m文件里的兩個參數。例如以下:
# vi /etc/rc.d/init.d/mysqld_m
basedir=/usr/
bindir=/usr/bin
備注:這兩個參數的缺省值分別為/usr/local/mysql、/urs/local/mysql/bin,不同類型的安裝包,實際值可能不同,依據自己的實際情況,改動這兩個參數的值。以便啟動腳本可以找到/usr/bin/mysqld_multi文件。并賦予該文件操作權限。
――啟動、關閉實例
改動完畢后,我們就能夠通過mysqld_multi啟動mysqld實例了。其語法例如以下:
#mysqld_m [options][GNR[,GNR]...]
# service mysqld_m start|stop 1
# service mysqld_m start|stop 2
3.? 不足之處
mysqld_multi統一管理多個MySQL實例,雖有方便之處,但在使用過程中。也發現了一些不足之處,一是選項過于簡單,僅僅有start、stop、report。而沒有status項,所以無法查看服務的狀態。二是在啟動、關閉服務時,僅僅是運行start、stop這么一個操作,而不跟蹤操作結果,所以無法確保操作成功運行。
總結
以上是生活随笔為你收集整理的MySQL搭建系列之多实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何更有价值采集数据、高效分析数据?
- 下一篇: 域名系统DNS简介