關於MYSQL主從備份,其實跟MYSQL主主互備的過程類似,最大的區別在主從備份中,主機不能複製從機的數據,所以主機一般用來專注於數據庫的業務操作,從機一般用來專注於數據庫的查詢操作。
下面直接介紹主從配置:
一、主從機環境以及軟件版本信息:
1、主機系統:32位Centos 6.3 版本;
兩個虛擬機:
主機(master):IP地址: 192.168.31.139;
從機(salver):IP地址: 192.168.31.137;
2、MYSQL版本:mysql-5.5.11版;
3、虛擬機版本:VMware® Workstation 9.0.0 build-812388;
4、虛擬機與主機名稱和IP地址的設置:http://blog.csdn.net/limingzhong198/article/details/19919761。
二、配置過程:
1、主機master與salver均關閉防火牆iptables,執行service iptables stop命令:
2、設置SELINUX文件的SELINUX=disabled,如圖所示:
3、在master和salver分別安裝MYSQL軟件:http://blog.csdn.net/limingzhong198/article/details/19823629:
4、主機(master)配置:
A:在/usr/local/mysql目錄下建立MYSQL複製的日誌配置文件/usr/local/mysql/mysql-bin.log並賦予權限以及改變文件的所有者:
[root@master mysql] touch mysql-bin.log
[root@master mysql] chmod 755 mysql-bin.log
[root@master mysql] chown -R mysql:mysql .
配置結果如圖所示:
B:配置/etc/my.cnf文件:
[root@master mysql] vi /etc/my.cnf
在文件中添加如下屬性項:
log-bin = /usr/local/mysql/mysql-bin.log
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
C:啓動並登陸MYSQL系統:
[root@master mysql] service mysql start
顯示:Starting MySQL.... SUCCESS! 就表明啓動成功
[root@master mysql] mysql -u root -padmin
注:-p 表示密碼項,後面的'admin'表明root用戶的密碼是admin
D:在主機master上添加主機salver的同步賬號:
mysql> grant replication slave on *.* to'slave'@'192.168.31.137' identified by 'admin';
執行如下命令查看:
可以看見備份賬戶以及設置完成。下面對數據庫表加鎖只讀。
mysql鎖表只讀(其他賬戶登錄mysql後無法進行寫表操作,防止備份數據庫後,主mysql表更新,導致和從數據庫內容不一致)
mysql> flush tables with read lock;
E:查看狀態:
[root@master mysql] mysql -u root -padmin -e "show master status"
結果如圖:
注:File字段的日誌名稱(mysql-bin.000001)就是從機備份所需要的日誌文件。
5、從機(salver)配置:
A:在/usr/local/mysql目錄下建立MYSQL複製的日誌配置文件/usr/local/mysql/mysql-bin.log並賦予權限以及改變文件的所有者:
注:這一步驟與配置主機(master)完全一樣。
B:配置/etc/my.cnf文件:
[root@salver mysql] vi /etc/my.cnf
在文件中添加或修改相應的配置項,如圖所示:
注:log-bin被註釋是因爲主機不需要複製備份從機的數據。
C:啓動並登陸MYSQL系統:
注:這一步驟與配置主機(master)完全一樣。
D:在MYSQL的SHELL下執行如下圖命令:
注:其中change master to master_host='192.168.31.139',
master_user='slave',
master_password='admin',
master_log_file="mysql-bin.000001",
master_log_pos=107 ;
中的master_log_file項就是前面提到的日誌複製備份所需的名稱。
6、主機(salver)配置:
A:解鎖數據庫:
mysql> unlock tables;
B:查詢數據庫狀態:
mysql> show slave status \G
結果如圖:
注:兩臺主機均出現如下內容,則主主配置成功:
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果出現Slave_IO_Running: Connecting的情況,則很可能是因爲防火牆未關閉的原因。
7、測試過程:
A:在主機上的test數據庫中,建立test表,並插入測試數據,在從機上查看是否備份成功;
B:在從機上的test數據庫中,在test表插入測試數據,在主機上查看是否備份成功;
C:主機的數據在從機的數據庫上備份成功,從機的數據在主機上沒有被複製備份,則說明配置成功。
D:主機的數據在從機的數據庫上備份成功,從機的數據在主機上也被複製備份,則說明配置失敗。
E:主機的數據在從機的數據庫上備份失敗,則說明配置失敗。