程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MYSQL5運行多個實例

MYSQL5運行多個實例

編輯:關於MYSQL數據庫
在Mysql中有一mysqld_multi命令,可用於在一台物理服務器運行多個MySQL服務。 操作系統: Redhat Enterprise AS 3-U8
數據庫   : Mysql 5.0.40 規劃:在一個 Mysql 上運行2個實例,運行端口分別是3306,3307。 一.在 Linux 系統下安裝 Mysql5 : 安裝mysql數據庫。(采用源碼安裝) shell> groupadd mysql shell> useradd -g mysql mysql shell> tar zxvf mysql-5.0.40.tar.gz shell> cd mysql-5.0.40 shell> ./configure --prefix=/usr/local/mysql --datadir=/usr/local/mysql/var --sysconfdir=/etc shell> make shell> make install shell> cp support-files/my-medium.cnf /etc/my.cnf shell> cd /usr/local/mysql shell> chown -R mysql . shell> chgrp -R mysql . shell> bin/mysql_install_db --user=mysql shell> chown -R root . shell> chown -R mysql var shell> bin/mysqld_safe --user=mysql & 二.配置 mysqld2. 我們在一台服務器上運行多個mysql的實例時,如果安裝的是同一個版本的mysql,不用安裝多次,只安裝一次就可以了。主要區別的是數據存放的位置,可以把已經安裝好的MySQL數據庫存放數據的文件復制幾份就可以,同時要修改其權限。如下: [mysqld1] 是一個默認的 , 在我們安裝 MySQL 時已經有了,所以不用管它 .

Sqlclub


[mysqld2], 只要根據配置就的路徑為它建立一個目錄就可以了 . 將把該目錄改為 mysql 管理 權 [root@mysql mysql]#cd /usr/local/mysql [root@mysql mysql]#cp –R var var1 [root@mysql mysql]#chown mysql:MySQL var1 三. 啟動數據庫,然後對用戶進行授權。 用一個帳號來啟動所有的mysql服務器,因為是用一相同的帳號。那個麼這帳號必須都是每個MySQL服務都要用的帳號,最好是管理帳號,下面的口令相同 Sqlclub.cn
guzh是MySQL下的用戶,非Linux下的用戶
# 這個mysql要通過 root 給它賦權限,讓它具有shutdown 和start MySQL 的權限
#grant shutdown on *.* to 'guzh' IDENTIFIED BY 'qazwsx' [root@mysql mysql]#service mysqld start [root@mysql mysql]#/usr/local/mysql/bin/mysql –uroot –p [root@mysql mysql]#grant shutdown on *.* to guzh indentifIEd bu ‘qazwsx’; 注:兩個實例都要做相同的操作。 四.mysqld_multi 介紹:      根據Mysql管理手冊中提到:每個Mysql的服務都可為獨立的,所以它都調用一個my.cnf中各自不同的啟動選項--就是下文中將提到的GNR值,使用不同的端口,生成各自的套接文件,服務的數據庫都是獨立的(更多可查閱mysql官方網站的英文管理手冊).      mysqld_multi 是管理多個mysqld的服務進程,這些服務進程程序不同的unix socket或是監聽於不同的端口。他可以啟動、停止和監控當前的服務狀態。      程序在my.cnf(或是在--config-file自定義的配置文件)中搜索[mysqld#]段,"#"可以是任意的正整數。這個正整數就是在下面提及的段序列,即GNR。段的序號做為mysqld_multi的參數,來區別不同的段,這樣你就可以控制特定mysqld進程的啟動、停止或得到他的報告信息。這些組裡的參數就像啟動一個mysqld所需要的組的參數一樣。但是,如果使用多服務,必須為每個服務指定一個unix socket或端口 配置/etc/my.cnf(具體配置如下) [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = guzh passWord = qazwsx [mysqld1] port             = 3306 socket           = /var/lib/mysql/mysql.sock pid-file = /usr/local/mysql/var/mysql.pid datadir = /usr/local/mysql/var skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M [mysqld2] port             = 3307 socket            = /var/lib/mysql/mysql1.sock pid-file = /usr/local/mysql/var1/mysql1.pid datadir = /usr/local/mysql/var1 skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M 從以上配置可以看出,我的配置文件中有mysqld1,mysqld2兩個實例。就是說我將啟動2個MySQL服務在同一服務器的不同端口--3306和3307,每個datadir所指定的數據庫文件路徑都是不相同的 五、利用 Mysqld_multi 啟動/停止 多實例 MySQL Sqlclub.cn 說明:
使用如下參數來啟動mysqld_multi: (注:該命令在mysql的bin目錄中,根據上面所提到./configure --prefix=/usr/local/MySQL ,所以該文件應該在 /usr/local/mysq/bin, 這得根據你安裝時所指定的路徑 )
db-app:/ # mysqld_multi [options] {start|stop|report} [GNR[,GNR]...] start,stop 和report是指你想到執行的操作。你可以在單獨的服務或是多服務上指定一個操作,區別於選項後面的GNR列表。如果沒有指定GNR列表,那麼mysqld_multi將在所有的服務中根據選項文件進行操作。 每一個GNR的值是組的序列號或是一個組的序列號范圍。此項的值必須是組名字最後的數字,比如說如果組名為mysqld17,那麼此項的值則為17.如果指定一個范圍,使用"-"(破折號)來連接二個數字。如GNR的值為10-13,則指組mysqld10到組mysqld13。多個組或是組范圍可以在命令行中指定,使用","(逗號)隔開。不能有空白的字符(如空格或tab),在空白字符後面的參數將會被忽略。 (注:GNR值就是我們定義my.cnf中mysqld#中的值,我這裡只有1-2) 啟動 MySQL

Sqlclub


[root@mysql bin]#/usr/local/mysql/bin/musqld_multi –config-file=/etc/my.cnf start 1-2 停止 mysql [root@mysql/usr/local/mysql/bin/MySQLd_multi –config-file=/etc/my.cnf stop 1-2 六、客戶端訪問 說明:
任何客戶端訪問都需要指定訪問端口。方才能進入指定數據庫服務.否則將使用到Mysql默認的端口(3306)所服務的MYSQL,如: [root@mysql bin]#/usr/local/mysql/bin/MySQL –uguzh –pqazwsx –P3306 –h 127.0.0.1
[root@mysqlbin]#/usr/local/mysql/bin/mysql–uguzh –pqazwsx –P3307–h 127.0.0.1 七、常見問題: Sqlclub學習社區      a 、/usr/bin/mysqld_multi 的啟動錯誤       b 、啟動 Mysql 客戶端,老報 /var/lib/MySQL/temp.sock 的錯誤
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved