2013年9月11日星期三

mysqld_multi的

Original post: http://anothermysqldba.blogspot.com/2013/09/mysqldmulti.html

所以我最近mysqld_multi的工作,我意識到,這是一個功能,我沒有看到在很多博客文章,這些天。 他們確實存在,我列出了一些在底部的這篇文章,供大家參考。

你的原因可能各不相同,也值得商榷的,當它涉及到的概念: 應在同一硬件上運行一個以上的MySQL實例

為了避免混淆,如果你想安裝另一個MySQL實例用於測試目的,不作為生產實例,那麼你應該只是工作與MySQL沙箱 如果出於某種原因不能正常工作,你可以執行另一台服務器一樣,很多人通常做的:創建新的my.cnf文件並啟動mysql服務器mysqld_safe的和自定義命令。

mysqld_multi的輕鬆了許多,您可以運行多個服務器。

例如:
你有一個輔助服務器在端口3306上運行。 它是一個的READ_ONLY奴隸和在原地等待成為新的主服務器,目前的主要失敗時,你有很多的硬件。 你也想利用Percona的工具包 ,有一個複製的輔助服務器在延遲模式下運行的。 如果你可以升級到MySQL 5.6,那麼你不會需要PT-奴隸延遲 ,但目前這是不是一種選擇。

在這兩種情況下,你有預算限制和,不允許另一台服務器。 所以你放棄了嗎? 有足夠的磁盤空間來容納另一個版本的服務器上的二次盒,所以為什麼不呢? 啟動和停止的定制版本等的想法,可以把一些。 因此,你可以設立一個新版本的my.cnf文件,但首先你可以做以下。

挑選你喜歡的編輯器(即:VI)
vi /etc/multi_my.cnf
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = mysql
log = /var/log/multi_mysql.log

# Port 3306 Server
[mysqld1]
>socket = /tmp/mysql_3306.sock
port = 3306
pid-file = /var/lib/mysql/mysql_3306.pid
datadir = /var/lib/mysql/
user = mysql
現在你可以從你的my.cnf文件的[mysqld]部分,並把它複製到這個位置。

cat /etc/my.cnf >> /etc/multi_my.cnf
如果你使用上面的命令編輯進行清理,所以你只需要複製過來的[mysqld]部分。

然後,您可以創建的3307端口部分。
# Port 3307 Server
[mysqld2]
socket = /tmp/mysql_3307.sock
port = 3307
pid-file = /var/lib/mysql2/mysql_3307.pid
datadir = /var/lib/mysql2/
user = mysql
配置的例子可以在這裡找到:
http://dev.mysql.com/doc/refman/5.6/en/mysqld-multi.html

在這個例子中,我將假定您將創建一個備份Xtrabackup Percona的3306端口服務器,並將其放置到新的datadir的。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=<password> --port=3306 --no-timestamp /var/lib/mysql2/
innobackupex --apply-log /var/lib/mysql2/
現在你可以測試這個現在mysqld_multi的二進制文件(/ usr / bin中/ mysqld_multi的),或設置在啟動和停止腳本。 模板自帶你的MySQL安裝的/ usr /共享/ mysql /下mysqld_multi.server

您可以複製此init.d目錄或從當前位置進行測試。
該腳本將默認在/ etc / my.cnf文件。 所以開始測試 - default_file = /等/ multi_my.cnf的報告

“報告”選項是類似的狀態參數,如果服務器運行。 如果您選擇運行作為默認的過程中,你可以把它鏈接或複製/ etc / multi_my.cnf中,作為新的/ etc / my.cnf中
/etc/init.d/mysqld_multi.server report 1,2
/etc/init.d/mysqld_multi.server report 1
/etc/init.d/mysqld_multi.server report 2

以上,然後給你的運行狀態,每個給予說法,當然不同的MySQL實例的引用。 你可以做同樣的以下選項:開始|停止|舉報|重啟}

如果一切順利,你可以“開始2”將開始在端口3307上的實例。 然後登錄和改變主binlog的位置信息提供在xtrabackup_binlog_info文件。
CHANGE MASTER TO
MASTER_HOST='localhost',
MASTER_PORT=3306,
MASTER_LOG_FILE='<log filename>',
MASTER_LOG_POS=<position>;

Start slave;
現在你有次要從屬服務器的副本。 如果使用PT-從延遲,你可以執行下面的命令,默認的是一個小時的延遲。
pt-slave-delay --port=3307 --socket=/tmp/mysql_3307.sock --host=localhost

希望這至少可以讓你開始。