Mysql主從服務器的構架

主從服務器配置的原理

Mysql的Replication是一個異步的複製過程,從一個Master服務器上覆制到另一個slave服務器上。在主與從之間的實現整個過程主要有三個線程來完成,其中兩個線程(SQL線程和IO線程)在從服務器上,另一個IO線程在主服務器上。

要實現Mysql的Replication,首先必須打開主服務器的Binarylog功能,否則無法實現,因爲整個複製過程實現。因爲整個複製過程實際上就是從服務器從主服務器上獲取該日誌然後再在自己身上完全順序的執行日誌中所記錄的各種操作。打開MysqlR Binary Log可以通過在啓動Mysql Server的過程中的Mysqld參數組增加“log-bin"參數項。

MySQL複製的基本過程如下:

1、從服務器上面的IO線程連接主服務器上,並請求從指定日誌文件的指定位置之後的日誌內容

2、Master接收到來自Slave的IO線程的請求後,通過負責複製的IO線程是根據請求信息讀取指定日誌指定位置之後的日誌信息,返回給從服務器的IO線程。返回信息中除了日誌所包含的信息外,還包括本次返回的信息在主服務器上Binary Log文件的名稱以及在BinaryLog中的位置

3、從服務器的IO線程接收到信息後,將接收到的日誌內容依次寫入到從服務器的RelayLog文件的最末端,並將讀取到的主服務器端的bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時候能夠清楚的高速從主服務器哪個位置開始往後的日誌內容讀取

4、從服務器的SQL線程檢測到RelayLog中新增加了內容後,會馬上解析該Log文件中的內容成爲在主服務器真實執行時候的那些可執行的Query語句,並在自身執行這些Query。這樣,實際就是在主服務器和從服務器執行同樣的Query,所以兩端的數據是完全一樣的。

二、MySQL主從配置的優點

1、解決web應用系統,數據庫出現的性能瓶頸,採用數據庫集羣的方式來實現查詢負載;一個系統中數據庫的查詢操作比更新操作要多得多,通過多臺查詢服務器將數據庫的查詢分擔到不同的查詢服務器上從而提高查詢效率。

2、MySQL數據庫支持數據庫的主從複製功能,使用主數據庫進行數據的插入、刪除與更新操作,而從數據庫則專門用來進行數據查詢操作,這樣可以將更新操作和查詢操作分擔到不同的數據庫上,從而提高了查詢效率。

說明:主服務器是172.16.6.1,在主服務器運行一段時間的時候纔開始建從服務器,因此主服務器要做一次備份,從服務器要導入。

主服務器的配置:172.16.6.1

1、安裝mysql,並啓動
下載mysql-5.5.15-linux2.6-i686.tar.gz
tar xf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local解壓並保存到/usr/local
cd /usr/local
ls                          文件名太長創建軟連接
ln -sv mysql-5.5.15-linux2.6-i686 mysql
groupadd mysql  要想使用mysql必須創建mysql組和用戶
useradd -g mysql -s /sbin/nologin -M mysql
  -M不指定家目錄
id mysql
cd mysql
ls
chown -R mysql:mysql .  mysql目錄屬主屬組爲mysql
ll 查看
fdisk /dev/sda
   n 創建分區
   t 改變類型爲8e

  創建邏輯卷
partprobe /dev/sda
pvcreate /dev/sda5
vgcreate myvg /dev/sda5
lvcreate -L 3G -n mydata myvg

lvs  查看
mke2fs -j -L MYDATA -b 2048 /dev/myvg/mydata創建文件系統格式化
mkdir /mydata
vim /etc/fstab
  LABEL=MYDATA /mydata ext3 default 0 0 開機自動掛載
mount -a掛載
mkdir /mydata/data創建目錄用來存放數據
chown -R mysql:mysql /mydata/data改變屬主屬組以mysql用戶運行
ll /mydata/data查看一下
scripts/mysql_install_db --user=mysql --datadir=/mydata/data數據初始化
chown -R root .把屬主改爲root
cd support-files/ | ls  mysql的配置文件
cp my-large.cnf /etc/my.cnf添加主配置文件
vim /etc/my.cnf
 datadir = /mydata/data添加數據的目錄
cp mysql.server /etc/init.d/mysqld控制mysql服務啓動的腳本
service mysqld start驗證啓動
chkconfig --add mysqld添加開機自動啓動
chkconfig --list mysqld
netstat -tnlp監聽在3306端口
vim /etc/profile
 PATH=$PATH:/usr/local/mysql/bin
. /etc/profile重讀文件
echo $PATH查看一下
mysql  連接mysql
cd ..切換到子目錄
ls
ln -sv /usr/local/mysql/include /usr/include/mysql爲頭文件創建軟連接
ls /usr/include/mysql/
vim /etc/ld.so.conf.d/mysql.conf
  /usr/local/mysql/lib配置庫文件路徑
ldconfig -v重新裝載
ls man/
vim /etc/man.config
 MANPATH /usr/local/mysql/man添加man文檔的路徑
man mysqld測試一下

2、修改配置文件
 vim /etc/my.cnf
  log-bin=mysql-bin打開二進制日誌
  server-id = 1

3、創建用戶帳號,注意權限
mysql> grant replication client,replication slave on *.* to 'back'@'172.16.%.%' identified by 'redhat';
mysql> flush privileges;

4、做備份
mysql> flush tables with read lock;
mysql> show master status;查看log,Pos文件對應的位置

+------------------+----------+--------------+------------------+
| File                       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      190 |              |                  |
+------------------+----------+--------------+------------------+
mysqldump --all-databases --single-transaction --master-data=2 > /all.sql
mysql> unlock tables;

從服務器的配置:
1、安裝mysql,並啓動

2、修改配置文件
 vim /etc/my.cnf
  #log-bin=mysql-bin關閉二進制日誌
  relay_log=relay-log啓動中繼日誌
  server-id = 2
  read_only = ON從服務器不能寫

3、scp 172.16.6.1:/all.sql ./
mysql < all.sql
mysql <show databases;驗證是否複製過來

4、mysql -uroot -predhat
less all.sql查看得到log的文件及pos文件或在服務啓動之前show master status\G;
mysql> change master to master_user='back',master_host='172.16.6.1',master_password='redhat',master_log_file='mysql-bin.000002 ',master_log_pos=190;

5、啓動從服務器
mysql> start slave;
mysql> show slave status\G;

6、查看從服務器是否有錯誤
cd /mydata/data/
tail 主機名.err查看錯誤日誌

6、在主服務器創建一個數據庫,在從服務器驗證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章