在一臺server上啓動多個mysql服務

首先給第二個mysql建立一個數據目錄,並把所有者給mysql用戶

例如:

mkdir data2

chown mysql:mysql data2

然後在data2目錄裏,初始化數據庫文件。

mysql_install_db --datadir=/XXX/data2 --user=mysql

執行結束後在data2目錄下,會出現一些系統schema,如mysql,performance_schema。還有一個test schema

準備工作結束後,開始寫配置文件,我的配置文件如下

[mysqld_multi]

#說白了還是調用mysqld_safe其服務,所以要指定其位置。
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

#[mysqld]原來的配置頭後面要加個數字,啓動時好識別配置的位置

[mysqld1]

server-id=3
log-bin=mysql-bin
replicate-do-db=c

read-only=1

lower_case_table_names=1

datadir = "XXX/data"
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
user=mysql

[mysqld2]
port = 3307
socket = "xxx/data2/mysql.sock2"
server-id=3
pid-file = "/xxx/data2/db2.pid"
datadir = "/xxx/data2"
user=mysql

配置改好後,就可以啓動了

mysqld_multi start 1-2

1-2表示要啓動的服務器,[mysqld]後面的數字。

這裏要注意配置文件似乎要放到/etc/下才行,我以前放在/usr/下怎麼也起不起來。

關閉的時候,使用mysqld_multi stop 1-2

可以用以下命令查看進程狀態。

 ps -aux|grep mysql

root     14819  0.5  0.0 106228  1392 pts/3    S    16:50   0:00 /bin/sh /usr/bin/mysqld_safe --server-id=3 --log-bin=mysql-bin --replicate-do-db=c --read-only=1 --log_bin_trust_function_creators=1 --lower_case_table_names=1 --datadir=/mnt/erp/programdata/data --port=3306 --sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES --user=mysql
root     14826  0.2  0.0 106228  1388 pts/3    S    16:50   0:00 /bin/sh /usr/bin/mysqld_safe --port=3307 --socket=/data2/mysql.sock2 --server-id=3 --pid-file=//data2/db2.pid --datadir=//data2 --user=mysql
mysql    15133  9.5  5.5 1011800 448172 pts/3  Sl   16:50   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=//data2 --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --server-id=3 --log-error=//data2/SlaveDB.err --pid-file=//data2/db2.pid --socket=/data2/mysql.sock2 --port=3307
mysql    15180 10.5  5.6 1340840 454176 pts/3  Sl   16:50   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=//data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --server-id=3 --log-bin=mysql-bin --replicate-do-db=c --read-only=1 --log-bin-trust-function-creators=1 --lower-case-table-names=1 --sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES --log-error=//data/SlaveDB.err --pid-file=//data/SlaveDB.pid --port=3306
root     15233  0.0  0.0 103256   856 pts/3    S+   16:50   0:00 grep mysql

其實就是從配置文件裏讀出參數,然後以命令行加一大段參數的方式啓動mysql罷了。

無需配置文件,直接mysqld_safe也是一樣的效果。

最後,新建的數據庫需要連上去設root密碼。

MySQL –u root -P3307的話,居然會連上老數據庫。

這是因爲,沒有指定Socket文件

MySQL –u root -P3307 -S xxx/data2/mysql.sock2

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

 保存即可

話說,用下面的語句修改密碼,改完後總是用新密碼登不上去,不知道爲什麼。

UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章