MySQL數據庫雙機熱備------主-從備份配置mysql
實驗環境:sql
主數據庫 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35數據庫
從數據庫 192.168.1.2 WindowsXP x64 +MySQL5.5.13windows
1、安裝數據庫centos
1.在centos6.5 x86_64 上面安裝MySQL5.5.35數據庫,下載rpm包的形式安裝,在MySQL的官網上面下載。服務器
MySQL-client-5.5.35-1.el6.x86_64.rpmide
MySQL-server-5.5.35-1.el6.x86_64.rpm測試
2.WindowsXP x64 上面安裝MySQL5.5.13,軟件在網上獲取。spa
2、兩個數據庫都修改root密碼,而且開啓遠程訪問權限。線程
1.# mysqladmin -u root -ppassword newpassword
Windows上面的是在dos下面進入到C:\Program Files\MySQL\MySQL Server 5.5\bin目錄而後執行上面的命令。
2.mysql> grant all privileges on *.* to root@'% 'identified by 'newpassword';
mysql>flush privileges;
修改好以後,相互遠程測試一下看是否可以相互遠程。
3、主數據庫配置
登錄mysql操做界面,在主服務器上爲從服務器創建一個用來同步的鏈接賬戶,該賬戶必須授予REPLICATION SLAVE權限。由於從mysql版本3.2之後就能夠經過REPLICATION對其進行雙機熱備的功能操做。
操做指令以下:
mysql> grant replication slave on*.* to bak@'192.168.1.2' identified by 'bak';
mysql> flush privileges;
建立好同步鏈接賬戶後,咱們能夠經過在從服務器(Slave)上用bak賬戶對主服務器(Master)數據庫進行訪問,看下是否能鏈接成功。在從服務器(Slave)上輸入以下指令:
# mysql –h192.168.1.1 –u bak –p回車以後要求輸入密碼,密碼爲bak,若是登錄成功,則能夠繼續進行雙擊熱備,不然請找到問題並解決。
修改配置文件 /etc/my.cnf打開在[mysqld]下修改便可:
[mysqld]
server-id= 1
log-bin=mysql-bin #啓用日誌文件
binlog-do-db= test#須要同步的數據庫
binlog-ignore-db= mysql #不須要同步的數據庫
修改完配置文件後,保存後,重啓一下mysql服務,若是成功則沒問題
#servicemysql restart
登錄mysql 輸入命令:
mysql>flush tables whit read lock;鎖表以便在同步以前寫數據進去。
mysql>show master status\G
**************************1.row*************************
File: mysql-bin.000003
Position: 1337
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set(0.00 sec)
注意看裏面的參數,特別前面兩個File和Position,在從服務(Slave)配置主從關係會有用到的。
注:這裏使用了鎖表,目的是爲了產生環境中不讓進新的數據,好讓從服務器定位同步位置,初次同步完成後,記得解鎖。
mysql>unlock tables;
QueryOK, 0 rows affected (0.00 sec)
4、從數據庫配置
修改配置文件 C:\Program Files\MySQL\MySQL Server 5.5 中的my.ini
由於這裏面是以主-從方式實現mysql雙機熱備的,因此在從服務器就不用在創建同步賬戶了,直接打開配置文件my.cnf進行修改便可,道理仍是同修改主服務器上的同樣,只不過須要修改的參數不同而已。以下:
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = test
replicate-ignore-db =mysql,information_schema,performance_schema
修改完以後,重啓windows上的mysql的服務。
Netmysql restart也能夠手工去服務裏面找到mysql重啓。
5、利用change master 語句指定同步位置
在從服務器上面操做,這步是最關鍵的一步了,在進入mysql操做界面後,輸入以下指令:
mysql>stopslave; //先停步slave服務線程,這個是很重要的,若是不這樣作會形成如下操做不成功。
mysql>change master to
>master_host='192.168.1.1',master_user='bak',master_password='bak',
> master_log_file=' ysql-bin.000003',master_log_pos=1337;
注:master_log_file,master_log_pos由主服務器(Master)查出的狀態值中肯定。也就是剛剛叫注意的。master_log_file對應File, master_log_pos對應Position。Mysql 5.x以上版本已經不支持在配置文件中指定主服務器相關選項。
若是遇到問題不成功,則須要從新設置slave命令以下:
mysql>stop slave;
mysql>reset slave;
以後中止slave線程從新設置。成功後,則能夠開啓slave線程了。
mysql>start slave;
6、測試
在從服務器上查看從服務器的狀態,用以下指令進行查看
mysql> show slave status\G 若是出現如下信息
查看下面兩項值均爲Yes,即表示設置從服務器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在主數據庫的test庫中建表寫數據,查看從數據庫中是否在同步。
7、結論
主從數據庫的熱備操做比較複雜,遵循的原則是每一步必須都調試成功,不然下面就沒法進行了。Mysql 5.x以上版本已經不支持在配置文件中指定主服務器相關選項。因此要使用changemaster語句,這一點很重要。