天天看點

mysql主從備份、主從切換

 本文實作兩個資料庫同步,分為主從模式和互相備份模式。

實施環境:

兩台Linux機器

SerA ip:10.0.0.232

SerB ip:10.0.0.234

Demo1:主從模式

Master:SerA    Slave:SerB

在SerA和SerB上分别建立用于同步的賬号(也可以不建立賬号,直接給其他賬号配置設定通路權限)

use mysql;

delete from user;

grant all privileges on *.* to '$username'@'%' identified by '$password' with grant option;

flush privileges; 

上面是為了安全,删除了一些使用者(一般都要把預設的沒有密碼的使用者删除)

StepA:

SerA配置為Master,在SerA上在my.cnf中添加:

replicate-do-db=$database

server-id=1

指定binlog(因為時通過binlog實作資料同步的)

配置完後重新開機資料庫服務,用show master status可以看到Master資訊。

StepB:

在SerB的my.cnf中指定

server-id=2

指定binlog

配置完後重新開機資料庫服務,用show slave status可以看到Slave資訊。

(在MySQL5.1以後,my.cnf中已經去除了master-host等參數,應該在啟動服務之後通過change master to ...指令來實作配置,也可以在啟動的時候添加這些參數。下面是change master to ...示例)

bin/mysql -u$username -p$password -e "stop slave;change master to master_host='$mysqlMasterHost',master_port=3306,master_user=$username,master_password=$password;start slave;" 

mysqlMasterHost是Master的IP,

master_port是Master的端口,

master_user和master_password是用于同步的賬号和密碼

還有master_log_file和master_log_pos參數指定同步資料的位置。

可以在mysql指令模式下執行change master,之後start slave

注意:由于設定了slave的配置資訊,mysql在資料庫目錄下生成master.info

是以如有要修改相關slave的配置要先删除該檔案。否則修改的配置不能生效。

這樣就可以實作主從配置,此時在SerA指定資料庫中加入資料,SerB中相應的資料庫也會添加資料。

 模拟主從切換:

假設SerA現在無法提供服務,隻需在SerB上執行show master status記錄master_log_file和master_log_pos,停止ServB的slave。

在SerA上執行change master 到SerB,并且指定master_log_file和master_log_pos,這樣就可以恢複在SerA當機期間存到SerB上的資料。

看一些配置和檢視指令的結果:

mysql主從備份、主從切換
mysql主從備份、主從切換

注意Slave_IO_Running和Slave_SQL_Running的狀态都必須是YES

mysql主從備份、主從切換

Demo2:雙機互備

雙機互備隻是兩台機器同時做Master和Slave,

即在SerA上使它的Master指向SerB,SerB的Maser指向SerA,

配置其實和主從模式是一樣的。

如果本文對您有幫助,點一下右下角的“推薦”