| 導購 | 订阅 | 在线投稿
分享
 
 
 

詳細講解MySQL數據庫雙機熱備的配置方法

來源:互聯網  2008-06-01 03:26:39  評論

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;

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;
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有