單機多實例據說可以最大程度提高硬件使用,誰知道呢,但是以前的公司喜歡這樣搞,我最近也在學習復制什么的,電腦搞不起兩台虛擬機,剛好單機多實例可以解救我。下面就說說步驟。
承上文http://www.cnblogs.com/wingsless/p/4002806.html,我已經安裝好了MySQL,不過這個是單實例的,要更改也可以,但是擔心會出現問題,於是我將下面的東西刪掉:
1 #rm -f /etc/init.dmysql
2 $rm -f /home/mysql/data
建立這么幾個目錄:
$mkdir -p /home/mysql/mydata/data1/binlog /home/mysql/mydata/data1/relay_log /home/mysql/mydata/data1/socket
$mkdir -p /home/mysql/mydata/data2/binlog /home/mysql/mydata/data2/relay_log /home/mysql/mydata/data2/socket
接下來就可以將$MYSQL_HOME/suppuort-files/my-default.cnf復制到/etc下:
#cp suppuort-files/my-default.cnf /etc/my.cnf
修改這個文件,增加下面的內容:
[mysqld_multi] mysqld = /usr/mysql/bin/mysqld_safe mysqladmin = /usr/mysql/bin/mysqladmin log = /home/mysql/mydata/log/mysqld_multi.log socket = /home/mysql/mydata/data1/socket/mysqld.sock port = 3306 pid-file = /home/mysql/mydata/data1/mysqld.pid datadir = /home/mysql/mydata/data1 [mysqld2] socket = /home/mysql/mydata/data2/socket/mysqld.sock port = 3307 pid-file = /home/mysql/mydata/data2/mysqld.pid datadir = /home/mysql/mydata/data2
這樣配置,就可以保證3306監聽的是主庫,而3307監聽的是從庫。
下面就可以初始化數據庫了,依舊使用$MYSQL_HOME/script/mysql_install_db:
./mysql_install_db --basedir=/usr/mysql --datadir=/home/mysql/mydata/data1
./mysql_install_db --basedir=/usr/mysql --datadir=/home/mysql/mydata/data2
執行好以后這兩個目錄里會有很多文件自動生成:
然后執行:
#cp $MYSQL_HOME/support-files/mysqld_multi.server /etc/init.d/mysql
到這一步,所有的前期工作就已經做完了,下面就可以啟動數據庫了,兩個庫一起啟動的命令是:
#service mysql start 1,2
這樣就算好了。下面寫如何配置主從復制。
首先登錄3306:
$mysql -uroot -h127.0.0.1 -P3306
建立一個復制用戶:
mysql>grant replication slave, replication client on *.* to repl@'localhost' identified by 'repl';
mysql>flush privileges;
登錄從庫:
$mysql -uroot -h127.0.0.1 -P3307
mysql>change master to master_host='localhost', MASTER_PORT=3306, master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=0;
在主庫上執行:
mysql>show master status\G
mysql>show processlist;
主庫應該是這樣子的。在從庫上執行:
mysql>show slave status\G
應該是有這么一串,show processlist;
這樣就配置好了。下面可以驗證一下,在主庫上建立一張表:
use test; create table test ( id int );
這時從庫應該有對應的一張表也被復制了過來:
主庫上插入數據:insert into test select 1;
從庫上會自動更新:
這樣就配置好了一對主動數據庫,其他的優化參數可以參考《高性能MySQL》,這本書真的很不錯,可以說是MySQL除了官方文檔之外的唯一經典。
順便說一下,主從這個配置安裝什么的,官方MySQL和Percona Server我都試過,沒有區別。