MySQL資料庫數據庫雙機熱備的配置

1。mysql資料庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好mysql資料庫提供瞭一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份資料庫中。實現mysql資料庫的熱備份。

 

2。要想實現雙機的熱備首先要瞭解主從資料庫伺服器的版本的需求。要實現熱備mysql的版本都要高於3.2,還有一個基本的原則就是作為從資料庫的資料庫版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。

 

3。設置主資料庫伺服器:

 

a.首先查看主伺服器的版本是否是支持熱備的版本。然後查看my.cnf(類unix)或者my.ini(windows)中mysqld配置塊的配置有沒有log-bin(記錄資料庫更改日志),因為mysql的復制機制是基於日志的復制機制,所以主伺服器一定要支持更改日志才行。然後設置要寫入日志的資料庫或者不要寫入日志的資料庫。這樣隻有您感興趣的資料庫的更改才寫入到資料庫的日志中。

 

server-id=1 //資料庫的id這個應該默認是1就不用改動

 

log-bin=log_name //日志文件的名稱,這裡可以制定日志到別的目錄 如果沒有設置則默認主機名的一個日志名稱

 

binlog-do-db=db_name //記錄日志的資料庫

 

binlog-ignore-db=db_name //不記錄日志的資料庫 

 

以上的如果有多個資料庫用","分割開

 

然後設置同步資料庫的用戶帳號

 

mysql> GRANT REPLICATION SLAVE ON *.*

 

-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

 

4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能

 

mysql> GRANT FILE ON *.*

 

-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

 

設置好主伺服器的配置文件後重新啟動資料庫

 

b.鎖定現有的資料庫並備份現在的數據

 

鎖定資料庫

 

mysql> FLUSH TABLES WITH READ LOCK;

 

備份資料庫有兩種辦法一種是直接進入到mysql的data目錄然後打包你需要備份資料庫的文件夾,第二種是使用mysqldump的方式來備份資料庫但是要加上"–master-data " 這個參數,建議使用第一種方法來備份資料庫

 

c.查看主伺服器的狀態

 

mysql> show master status\G;

 

+—————+———-+————–+——————+

 

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

 

+—————+———-+————–+——————+

 

| mysql-bin.003 | 73 | test | manual,mysql |

 

+—————+———-+————–+——————+

 

記錄File 和 Position 項目的值,以後要用的。

 

d.然後把資料庫的鎖定打開

 

mysql> UNLOCK TABLES;

 

4。設置從伺服器

 

a.首先設置資料庫的配置文件

 

server-id=n //設置資料庫id默認主伺服器是1可以隨便設置但是如果有多臺從伺服器則不能重復。

 

master-host=db-master.mycompany.com //主伺服器的IP地址或者域名

 

master-port=3306 //主資料庫的端口號

 

master-user=pertinax //同步資料庫的用戶

 

master-password=freitag //同步資料庫的密碼

 

master-connect-retry=60 //如果從伺服器發現主伺服器斷掉,重新連接的時間差

 

report-host=db-slave.mycompany.com //報告錯誤的伺服器

 

b.把從主資料庫伺服器備份出來的資料庫導入到從伺服器中

 

c.然後啟動從資料庫伺服器,如果啟動的時候沒有加上"–skip-slave-start"這個參數則進入到mysql中

 

mysql> slave stop; //停止slave的服務

 

d.設置主伺服器的各種參數

 

mysql> CHANGE MASTER TO

 

-> MASTER_HOST='master_host_name', //主伺服器的IP地址

 

-> MASTER_USER='replication_user_name', //同步資料庫的用戶

 

-> MASTER_PASSWORD='replication_password', //同步資料庫的密碼

 

-> MASTER_LOG_FILE='recorded_log_file_name', //主伺服器二進制日志的文件名(前面要求記住的參數)

 

-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)

 

e.啟動同步資料庫的線程

 

mysql> slave start;

 

查看資料庫的同步情況吧。如果能夠成功同步那就恭喜瞭!

 

查看主從伺服器的狀態

 

mysql> SHOW PROCESSLIST\G //可以查看mysql的進程看看是否有監聽的進程

 

如果日志太大清除日志的步驟如下 

 

1.鎖定主資料庫 

 

mysql> FLUSH TABLES WITH READ LOCK; 

 

2.停掉從資料庫的slave 

 

mysql> slave stop; 

 

3.查看主資料庫的日志文件名和日志文件的position 

 

show master status; 

 

+—————+———-+————–+——————+ 

 

| File | Position | Binlog_do_db | Binlog_ignore_db | 

 

+—————+———-+————–+——————+ 

 

| louis-bin.001 | 79 | | mysql | 

 

+—————+———-+————–+——————+ 

 

4.解開主資料庫的鎖 

 

mysql> unlock tables; 

 

5.更新從資料庫中主資料庫的信息 

 

mysql> CHANGE MASTER TO 

 

-> MASTER_HOST='master_host_name', //主伺服器的IP地址 

 

-> MASTER_USER='replication_user_name', //同步資料庫的用戶 

 

-> MASTER_PASSWORD='replication_password', //同步資料庫的密碼 

 

-> MASTER_LOG_FILE='recorded_log_file_name', //主伺服器二進制日志的文件名(前面要求記住的參數) 

 

-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數) 

 

6.啟動從資料庫的slave 

 

mysql> slave start;

You May Also Like