在資料庫伺服器上,可以架構多個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_multi]的配置項,需要在每個資料庫裡配置乙個multi_admin來管理mysqlmysqld = /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
下面新建資料庫:
mysql_install_db --user=mysql --datadir=/data2/mysql1啟動mysql伺服器mysql_install_db --user=mysql --datadir=/data2/mysql2
mysqld_multi start 1,2這個時候使用 mysqld_report來檢視是否已啟動是會失敗的,因為還沒有新建 multi_admin來查詢狀態;我們可以通過 netstat來檢視埠
# netstat -tulnp | grep mysql可以看到3306和3307埠已經監聽;同時目錄下生成了相應的.socket檔案;tcp 0 0 :::3306 :::* listen 716784/mysqld
tcp 0 0 :::3307 :::* listen 3669/mysqld
tcp 0 0 :::3317 :::* listen 714503/mysqld
下面我們可以連線mysql來配置multi_admin使用者;由於有多個例項,連線需要使用socket連線
mysql -u root -s /tmp/mysql1.sock同樣道理配置另一台3307;grant shutdown on *.* to multi_admin@'localhost' identified by'my_password';
flush privileges;
quit
也可以拷貝乙份mysql來建立新的例項,這樣裡面的使用者也會被拷貝。注意目錄許可權必須是mysql , chown -r mysql.mysql /data2/mysql2
下面可以使用
mysqld_multi --defaults-file=/etc/my.cnf start 啟動全部例項
如果啟動出錯的話,可以到對應目錄下檢視日誌檔案,看**出錯了。
使用mysqld_multi需要手動啟動資料庫,也可以加入開機啟動項:
echo "mysqld_multi" >> /etc/rc.local
mysql單機多例項 MYSQL單機多例項
一 建立安裝目錄 mkdir usr local mysql s 5.6.32 mkdir usr local mysql m 5.6.32 wget tar zxv f mysql 5.6.32.tar.gz 二 編譯命令 1 主編引數 cmake dcmake install prefix da...
MySQL 單機多例項
關於mysql 單機多例項的優缺點等介紹具體可以知乎一下或參考mysql單機多例項配置 實現單機多例項可以通過docker輕鬆做到,這裡主要是分享使用自帶工具mysqld multi的過程及兩個坑點 系統 ubuntu 16.04lts xenial 版本 percorna server 5.7.2...
mysql實踐 單機多例項
最近在學習mycat原始碼,有單台雲主機上要跑多個例項的需求,參考了以下的文章 4.修改my.cnf vim usr local mysql etc my.cnf 注釋以下內容 client password your password port 3306 socket tmp mysql.sock...