標籤:mysql 主從備份 高可用 雙機熱備
MySQL雙機熱備
環境說明
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C1/wKioL1RE0zbAm9B1AAJWSS3H_Mc796.jpg" title="1.jpg" alt="wKioL1RE0zbAm9B1AAJWSS3H_Mc796.jpg" />
Msql主備結構
1、Master:
Mysql主節點,Master接收到來自Slave的IO進程的請求後,通過負責複製的IO進程根據請求資訊讀取制定日誌指定位置之後的日誌資訊,返回給Slave 的IO進程。返回資訊中除了日誌所包含的資訊之外,還包括本次返回的資訊已經到Master端的bin-log檔案的名稱以及bin-log的位置;
2、Slave:
Slave節點, Slave的IO進程接收到資訊後,將接收到的日誌內容依次添加到Slave端的relay-log檔案的最末端,並將讀取到的Master端的 bin-log的檔案名稱和位置記錄到master-info檔案中,以便在下一次讀取的時候能夠清楚的告訴Masterbin-log的位置。
1、MySQL主伺服器
系統:CentOS 6.2
IP:192.168.1.251
主機名稱:MySQLMaster
MySQL 版本:mysql-5.5.22
2、MySQL從伺服器
系統:CentOS 6.2
IP:192.168.1.252
主機名稱:MySQLSlave
MySQL 版本:mysql-5.5.22
一、配置MySQL 主從伺服器
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C1/wKioL1RE00Tie8-dAAWWTrGltR0552.jpg" title="2.png" alt="wKioL1RE00Tie8-dAAWWTrGltR0552.jpg" />
修改兩台伺服器的IP 然後使用rpm包安裝好mysql資料庫,
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C1/wKioL1RE07eTVL4PAAIyNUeA_CM597.jpg" title="3.png" alt="wKioL1RE07eTVL4PAAIyNUeA_CM597.jpg" />
使用mysql–u root –p 登入 密碼預設為空白,
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C1/wKioL1RE08PRc1jpAABpoOyKMWA691.jpg" title="4.png" alt="wKioL1RE08PRc1jpAABpoOyKMWA691.jpg" />
建立資料庫smiledb;
#create database smiledb;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C0/wKiom1RE04WC2GgFAAEg0g2EbQw606.jpg" title="5.png" alt="wKiom1RE04WC2GgFAAEg0g2EbQw606.jpg" />
授權使用者rsync只能從192.168.1.252 這個IP
訪問主伺服器192.168.1.251 上面的資料庫,並且只具有Database Backup的許可權,
# grant replication slave on *.* to ‘rsync‘@‘192.168.1.252‘ identified by ‘123456‘ with grant option;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C1/wKioL1RE0-uCR7lpAACReTE_GE0845.jpg" title="6.png" alt="wKioL1RE0-uCR7lpAACReTE_GE0845.jpg" />
重新整理系統授權表,
#flush privileges;
備忘:在匯出之前可以先進入MySQL 控制台執行下面命令
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C0/wKiom1RE066SmDtZAACDnxQCKbw818.jpg" title="7.png" alt="wKiom1RE066SmDtZAACDnxQCKbw818.jpg" />
資料庫唯讀鎖定命令,防止匯出資料庫的時候有資料寫入,
#flush tables withread lock;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C0/wKiom1RE07-DT-nmAAB4lsRb0Is394.jpg" title="8.png" alt="wKiom1RE07-DT-nmAAB4lsRb0Is394.jpg" />
#在MySQL主服務
器進行操作,匯出資料庫smiledb 到/root/smile.sql
#mysql -u root -p smiledb > /root/smile.sql
將備份的smile.sql 上傳至從伺服器(上傳大家都會我就不示範)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C0/wKiom1RE09yy55O1AABaIqGCfSI751.jpg" title="9.png" alt="wKiom1RE09yy55O1AABaIqGCfSI751.jpg" />
在從伺服器先建立smiledb庫;
#create database smiledb;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C0/wKiom1RE1GeCRjBHAABQfNKuQLQ235.jpg" title="8補.png" alt="wKiom1RE1GeCRjBHAABQfNKuQLQ235.jpg" />
使用 use smildb;進入庫
#use smiledb;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C1/wKioL1RE1MzRhb0kAAGC6RP-Glg050.jpg" title="10.png" alt="wKioL1RE1MzRhb0kAAGC6RP-Glg050.jpg" />
匯入備份檔案到從資料庫,
#source /root/smile.sql
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C0/wKiom1RE1KSCeKIgAACBJqGDKxk307.jpg" title="11.png" style="float:none;" alt="wKiom1RE1KSCeKIgAACBJqGDKxk307.jpg" />
測試在從伺服器上登入到主伺服器,
二、配置MySQL (主)--伺服器的my.cnf 檔案
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C1/wKioL1RE1O6zf7qsAAKTM5zGrsQ981.jpg" title="12.png" style="float:none;" alt="wKioL1RE1O6zf7qsAAKTM5zGrsQ981.jpg" />
,修改my.cnf檔案,(上面描述的非常詳細)
將主伺服器 /usr/share/mysql/my-my-large.cnf修改為my.cnf並且移動到/etc/ 目錄下
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C0/wKiom1RE1KXR3cX7AACpNNM-LMw251.jpg" title="13.png" style="float:none;" alt="wKiom1RE1KXR3cX7AACpNNM-LMw251.jpg" />
然後重啟MySQL
#service mysql restart
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C1/wKioL1RE1O_xH2syAAFTuyjByHw776.jpg" title="14.png" style="float:none;" alt="wKioL1RE1O_xH2syAAFTuyjByHw776.jpg" />
再次進入mysql控制台,使用 show master status; 必須把庫鎖住否則會出現變動
查看master資料庫當前正在使用的二進位日誌及當前執行二進位日誌位置;
三、配置MySQL (從)--伺服器的my.cnf 檔案
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C0/wKiom1RE1KWTk323AAJujk3M5w8485.jpg" title="15.png" style="float:none;" alt="wKiom1RE1KWTk323AAJujk3M5w8485.jpg" />
,修改my.cnf檔案,(上面描述的非常詳細)
將從伺服器 /usr/share/mysql/my-my-large.cnf修改為my.cnf並且移動到/etc/ 目錄下
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C1/wKioL1RE1O_gf2ZoAAC0zKgdoZA027.jpg" title="16.png" style="float:none;" alt="wKioL1RE1O_gf2ZoAAC0zKgdoZA027.jpg" />
然後重啟MySQL
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C1/wKioL1RE1O-wMdGdAACB_p-OIjk661.jpg" title="17.png" style="float:none;" alt="wKioL1RE1O-wMdGdAACB_p-OIjk661.jpg" />
進入mysql控制台 停止slave同步進程 # slave stop
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C0/wKiom1RE1KWAWPCpAAE8wMlvaUA024.jpg" title="18.png" style="float:none;" alt="wKiom1RE1KWAWPCpAAE8wMlvaUA024.jpg" />
執行同步語句;
#change master to master_host=‘192.168.1.210‘,master_user=‘rsync‘, master_password=‘123456‘,master_port=5656, master_log_file=‘mysql-bin.000001‘,master_log_pos=107;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C0/wKiom1RE1cGTuTNrAAB5ph5xXWE070.jpg" title="19.png" alt="wKiom1RE1cGTuTNrAAB5ph5xXWE070.jpg" />
開啟slave同步資訊;
#slave start
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C1/wKioL1RE1PDi7PHEAAB2S37RauE160.jpg" title="20.png" style="float:none;" alt="wKioL1RE1PDi7PHEAAB2S37RauE160.jpg" />
完成後別忘記解除主伺服器庫的鎖定;
#unlock tables;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/C0/wKiom1RE1KixJghaAAJoTXQN7bs034.jpg" title="21.png" style="float:none;" alt="wKiom1RE1KixJghaAAJoTXQN7bs034.jpg" />
最後使用 SHOW SLAVE STATUS\G 查看同步資訊;
注意查看:
Slave_IO_Running: Yes Slave_SQL_Running: Yes
以上這兩個參數的值為Yes,即說明配置成功!
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C1/wKioL1RE1PLSul0oAAE90I628pA967.jpg" title="22.png" style="float:none;" alt="wKioL1RE1PLSul0oAAE90I628pA967.jpg" />
進入主伺服器 建立test表 查看從伺服器是否同步過來;
# use smiledb;#create table test ( id int not null primary key,namechar(20) );
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C1/wKioL1RE1PKwogm7AAQW64Y8lUs654.jpg" title="23.png" style="float:none;" alt="wKioL1RE1PKwogm7AAQW64Y8lUs654.jpg" />
show tables; #查看smiledb 表結構,會看到有一個建立的表test,表示資料庫同步成功
至此,MySQL 資料庫配置主從伺服器實現雙機熱備執行個體教程完成。
注意哦:需要同步那些資料庫 記得在my.cnf中自己添加哦
本文出自 “Linux營運” 部落格,請務必保留此出處http://linuxdarker.blog.51cto.com/8340258/1565975
MySQL主從備份