2013-10-04 25 views
-1

我一直在嘗試在Ubuntu上製作多個mysql實例。這些是我遵循的步驟。ubuntu上的多個實例mysql錯誤

mv /etc/init.d/mysql /etc/init.d/mysql_mono.server 
cp /usr/share/mysql/mysqld_multi.server /etc/init.d/mysql 

用你喜歡的文本編輯器,編輯/etc/init.d/mysql,然後找到行:

basedir=/usr/local/mysql 
bindir=/usr/local/mysql/bin 

並更改爲:

basedir=/usr 
bindir=/usr/bin 

如果您有root用戶密碼,編輯文件/ usr/bin/mysqld_multi,然後找到該行:

$opt_password = undef() 

並更改爲:

$opt_password = "password" 

由 '根' @改變 「密碼」 'localhost' 的密碼。

現在創建一個數據庫目錄,每增加mysqld的實例:

# cp -pr /var/lib/mysql /var/lib/mysql1 
# cp -pr /var/lib/mysql /var/lib/mysql2 

我的配置文件(my.cnf中)是:

[client] 
port  = 3306 
socket  = /var/run/mysqld/mysqld.sock 

# Here is entries for some specific programs 
# The following values assume you have at least 32M ram 

# This was formally known as [safe_mysqld]. Both versions are currently parsed. 

[mysqld_safe] 
socket  = /var/run/mysqld/mysqld.sock 
nice  = 0 



[mysqld1] 
user = root 
pid-file = /var/run/mysqld1.pid 
socket = /var/run/mysqld1.sock 
port = 3301 
datadir = /var/lib/mysql1 
log = /var/log/mysql/mysql1.log 
server-id = 1 
log_bin = /var/log/mysql/mysql1-bin.log 

[mysqld2] 
user = root 
pid-file = /var/run/mysqld2.pid 
socket = /var/run/mysqld2.sock 
port = 3302 
datadir = /var/lib/mysql2 
log = /var/log/mysql/mysql2.log 
server-id = 2 
log_bin = /var/log/mysql/mysql2-bin.log 


# This replaces the startup script and checks MyISAM tables if needed 
# the first time they are touched 
myisam-recover   = BACKUP 
#max_connections  = 100 
#table_cache   = 64 
#thread_concurrency  = 10 
# 
# * Query Cache Configuration 
# 
query_cache_limit = 1M 
query_cache_size  = 16M 
# 
# * Logging and Replication 
# 
# Both location gets rotated by the cronjob. 
# Be aware that this log type is a performance killer. 
# As of 5.1 you can enable the log at runtime! 
#general_log_file  = /var/log/mysql/mysql.log 
#general_log    = 1 

log_error    = /var/log/mysql/error.log 


[mysqldump] 
quick 
quote-names 
max_allowed_packet = 16M 

[mysql] 
#no-auto-rehash # faster start of mysql but no tab completition 

[isamchk] 
key_buffer  = 16M 


``!includedir /etc/mysql/conf.d/ 

不過當我運行以下命令我得到這個錯誤:

mysql --socket=/var/run/mysqld1.sock -uroot 


ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld1.sock' (2) 

回答

0

通過http://dev.mysql.com/doc/refman/5.5/en/multiple-unix-servers.html

一種方法是運行多個MySQL實例在Unix上是編譯與不同的默認的TCP/IP端口和Unix套接字文件 不同 服務器,這樣每個人在不同的網絡接口監聽。 在每個安裝的不同基本目錄中編譯時, 也會自動生成一個單獨的編譯數據目錄,每個服務器的log 文件和PID文件位置。

假設現有的5.1服務器配置爲默認的 TCP/IP端口號(3306)和Unix套接字文件(/tmp/mysql.sock)。要 配置一個新的35年5月5日服務器具有不同的運行參數, 使用CMake的命令是這樣的:

shell> cmake . -DMYSQL_TCP_PORT=port_number \ 
      -DMYSQL_UNIX_ADDR=file_name \ 
      -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.35