mysql主從服務器的配置

                                                      配置主從服務器
爲什麼使用主從複製?
1、主服務器/從服務器設置增加了健壯性。主服務器出現問題時,你可以切換到從服務器進行恢復。
2、通過在主服務器和從服務器之間切分處理客戶查詢的負荷,可以得到更好的客戶響應時間。但是不要同時在主從服務器上進行更新,這樣可能引起衝突。
3、使用複製的另一個好處是可以使用一個從服務器執行備份,而不會干擾主服務器。在備份過程中主服務器可以繼續處理更新。
配置條件:有至少兩臺主機,一主,一從;一個主服務器可以有多個從服務器,但是一個從服務器不可以有多個主服務器。保證主服務器和從服務器的mysql版本至少一樣,從服務器的mysql版本必須等於或高於主服務器的mysql版本。
這裏演示是在純淨的、原來沒有mysql運行的主機。假設主服務器是172.16.27.1,從服務器ip:172.16.27.2
一、安裝mysql,主從服務器安裝mysql的步驟相同
1、下載好mysql包,主從用同一個版本的mysql
2、創建用戶
  # mkdir /mydata/data
  # groupadd -r mysql
  # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
  # chown -R mysql:mysql /mydata/data
3、安裝並初始化mysql-5.5.20
# tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.5.19-linux2.6-i686  mysql
# cd mysql
# chown -R mysql:mysql  .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
--user指定用戶是mysql --datadir指定數據存放目錄爲/mydata/data
# chown -R root  . 將當前文件的屬主改爲root
# chown -R mysql data 因爲data是數據的默認存放目錄,爲了安全將屬主改爲mysql
4、爲mysql提供主配置文件:
# cd /usr/local/mysql
# cp support-files/my-large.cnf  /etc/my.cnf
# vim /etc/my.cnf 打開配置文件將thread_concurrency的值
改爲CPU個數乘以2的值
如我的主機就一個cpu,所以我這裏改爲thread_concurrency==2
另外還需要添加如下行指定mysql數據文件的存放位置:
datadir = /mydata/data
5、爲mysql提供sysv服務腳本:
# cd /usr/local/mysql
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
6、添加至服務列表:
# chkconfig --add mysqld
# chkconfig mysqld on
# service mysqld start
二、mysql安裝好後
1、主從服務器上都有的操作:
# vim /etc/my.cnf
找到#innodb_lock_wait_timeout = 50這行,在其下面添加一行如下:
innodb_file_per_table=1
主從服務器二者的server-id不能相同
主服務器的server-id = 1不改,將從服務器上的server-id改爲任意數,注意不要和主服務器
的server-id離得太近,這裏從服務器上的server-id=11
主服務器還要打開二進制文件即binlog-bin=mysql-bin
從服務器要注視掉這一行,即不要啓用二進制日誌,要啓用中繼日誌
2、編輯從服務器的配置文件
# vim  /etc/my.cnf
找到 binlog-bin=mysql-bin將其註釋掉,並在其下添加如下兩行打開中繼日誌
relay-log=relay-bin
relay-log-index=relay-bin.index
3、重啓服務器
# server mysqld  restart
4、在主服務器上創建用戶,使其具有複製的功能
# mysql
mysql>GRANT REPLICATION CLIENT,REPLICATIONSLAVE ON *.* repl@‘172.16.%.%' IDENTIFIED BY'123456';
mysql>FLUSH  PRIVILEGS;讓其生效
mysql>SHOW GRANTS FOR repl@'172.16.%.%'; 爲了確保沒有問題用此命令驗證一下
若沒有問題了
5、連接到從服務器
#mysql
mysql>CHANGE MASTER TO MASTER_HOST='172.16.27.1',MASTER_USER='repl',MASTER_PASSWORD='123456';
mysql>SHOW SLAVE STATUS\G;會出現如圖所示,此時兩項都是no的狀態

mysql>START SLAVE;明確說明要啓用從服務器進程
mysql>SHOW SLAVE STATU\G; 此時兩項都必須爲yes,有一項不是yes都是錯的,如圖所示

6、此時就可以測試了,怎樣測試呢?
在主服務器上創建一個數據庫
# mysql
mysql> CREATE DATABASE magedu;
mysql> use magedu;
mysql> CREATE TABLE tb1 ID INT,Name VARCHAR(100);
7、在從服務器上查看是否有這樣一個數據庫和表
# mysql
mysql> SHOW DATABASES;
mysql> use maged;
mysql> SHOW  TABLES;
此時你會發現和主服務器上的一樣,這就實現主從複製。到此主從服務器的配置就結束了。
8、如果在上面第5步啓動從服務器後,下面這兩項是這種情況:
Slave_IO_Running: Yes
Slave_SQL_Running:No
先把從服務器停掉  mysql>STOP SLAVE;
這時再在主服務器上清空日誌
# mysql
mysql> FLUSH MASTER;
mysql>SHOW MASTER STATUS; 顯示如圖所示
mysql> \q
從服務器:
# mysql
mysql> FLUSH SLAVE;
mysql> SHOW MASTER STATUS;此時顯示爲空,什麼也沒有
mysql> SHOW SLAVE  STATUS\G; 此時Relay_log_file 從relay-bin.000001開始
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章