mysql單機多實例

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

能夠經過mysqld_multi來進行多實例的管理,mysqld_multi是用perl寫的腳本,原理是經過mysql_admin來進行多個數據庫的操做;多實例的配置文件也有點不一樣,能夠看做是多個mysql配置的集合;mysqld_multi命令使用以下:sql

mysqld_multi report/start/stop

 

能夠使用 mysqld_multi --example來查看配置文件的例子;也能夠直接複製下來看成本身的配置;注意備份之前的配置;shell

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服務器socket

mysqld_multi start 1,2

 

這個時候使用 mysqld_report來查看是否已啓動是會失敗的,由於尚未新建 multi_admin來查詢狀態;咱們能夠經過 netstat來查看端口tcp

# 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文件; ide

下面咱們能夠鏈接mysql來配置multi_admin用戶;因爲有多個實例,鏈接須要使用socket鏈接ui

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

相關文章
相關標籤/搜索