MySQL單機多實例

jopen 9年前發布 | 14K 次閱讀 MySQL 數據庫服務器

在數據庫服務器上,可以架構多個Mysql服務器,進行單機多實例的讀寫分離;

可以通過mysqld_multi來進行多實例的管理,mysqld_multi是用perl寫的腳本,原理是通過mysql_admin來進行多個數據庫的操作;多實例的配置文件也有點不同,可以看作是多個mysql配置的集合;mysqld_multi命令使用如下:

mysqld_multi report/start/stop

可以使用 mysqld_multi --example來查看配置文件的例子;也可以直接復制下來當作自己的配置;注意備份以前的配置;

mv /etc/my.cnf /etc/my.cnf.bak
mysqld_multi --example > /etc/my.cnf

按自己的需要修改配置文件,改成多個數據庫;

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld1]
socket     = /tmp/mysql1.sock
port       = 3306
pid-file   = /data2/mysql1/mysql.pid
datadir    = /data2/mysql1

[mysqld2]
socket     = /tmp/mysql2.sock
port       = 3307
pid-file   = /data2/mysql2/mysql.pid
datadir    = /data2//mysql2

這里多出了一個[mysqld_multi]的配置項,需要在每個數據庫里配置一個multi_admin來管理mysql

下面新建數據庫:

mysql_install_db --user=mysql --datadir=/data2/mysql1
mysql_install_db --user=mysql --datadir=/data2/mysql2

啟動mysql服務器

mysqld_multi start 1,2

這個時候使用 mysqld_report來查看是否已啟動是會失敗的,因為還沒有新建 multi_admin來查詢狀態;我們可以通過 netstat來查看端口

# netstat -tulnp | grep mysql
tcp        0      0 :::3306                     :::*                        LISTEN      716784/mysqld
tcp        0      0 :::3307                     :::*                        LISTEN      3669/mysqld
tcp        0      0 :::3317                     :::*                        LISTEN      714503/mysqld

可以看到3306和3307端口已經監聽;同時目錄下生成了相應的.socket文件; 

下面我們可以連接mysql來配置multi_admin用戶;由于有多個實例,連接需要使用socket連接

mysql -u root -S /tmp/mysql1.sock
grant shutdown on *.* to multi_admin@'localhost' identified by'my_password';
flush privileges;
quit

同樣道理配置另一臺3307;

也可以拷貝一份mysql來創建新的實例,這樣里面的用戶也會被拷貝。注意目錄權限必須是mysql , chown -R mysql.mysql /data2/mysql2 

下面可以使用

mysqld_multi --defaults-file=/etc/my.cnf start 啟動全部實例

如果啟動出錯的話,可以到對應目錄下查看日志文件,看哪里出錯了。

使用mysqld_multi需要手動啟動數據庫,也可以加入開機啟動項: 

echo "mysqld_multi" >>  /etc/rc.local

來自:http://my.oschina.net/ifeixiang/blog/369833

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!