MySQL數據庫雙機熱備------主-從備份配置
實驗環境:
主數據庫 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35
從數據庫 192.168.1.2 WindowsXP x64 +MySQL5.5.13
一、安裝數據庫
1.在centos6.5 x86_64 上面安裝MySQL5.5.35數據庫,下載rpm包的形式安裝,在MySQL的官網上面下載。
MySQL-client-5.5.35-1.el6.x86_64.rpm
MySQL-server-5.5.35-1.el6.x86_64.rpm
2.WindowsXP x64 上面安裝MySQL5.5.13,軟件在網上獲取。
二、兩個數據庫都修改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;
修改好之後,相互遠程測試一下看是否能夠相互遠程。
三、主數據庫配置
登陸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)
四、從數據庫配置
修改配置文件 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重啓。
五、利用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;
六、測試
在從服務器上查看從服務器的狀態,用如下指令進行查看
mysql> show slave status\G 如果出現以下信息
查看下面兩項值均爲Yes,即表示設置從服務器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在主數據庫的test庫中建表寫數據,查看從數據庫中是否在同步。
七、結論
主從數據庫的熱備操作比較複雜,遵循的原則是每一步必須都調試成功,否則下面就無法進行了。Mysql 5.x以上版本已經不支持在配置文件中指定主服務器相關選項。所以要使用changemaster語句,這一點很重要。