下文分步驟給大家介紹的非常詳細,具體詳情請看下文吧。
一、准備
用兩台服務器做測試:
Master Server: 192.0.0.1/Linux/MYSQL 4.1.12
Slave Server: 192.0.0.2/Linux/MYSQL 4.1.18
做主從服務器的原則是,MYSQL版本要相同,如果不能滿足,最起碼從服務器的MYSQL的版本必須高於主服務器的MYSQL版本
二、配置master服務器
1. 登錄Master服務器,編輯my.cnf
#vim /etc/my.cnf
在[mysqld]段添加以下內容:
log-bin=mysql-bin server-id=1 binlog-do-db=extmail binlog-ignore-db=mysql,test
解釋:log-bin項是讓Master服務器記錄二進制日志這個是必須的;
server-id=master_id 其中master_id必須為1到232–1之間的一個正整數值;
binlog-do-db=database 是要記錄日志的數據庫;
binlog-ignore-db 是不要記錄日志的數據庫名,多個數據庫中間用逗號(,)隔開;
2.從master服務器添加要從slave服務器訪問master服務器的有權限的帳號,看下面命令就知道了:
mysql> grant replication slave on *.*
-> to 'abc'@'192.0.0.2' identified by '123';
格式:mysql> GRANT REPLICATION SLAVE ON *.*
-> TO '帳號'@'從服務器IP或主機名' IDENTIFIED BY '密碼';
3. 重起Mysql
4. 備份master數據庫數據
# mysqldump --master-data extmail > extmail_backup_20071120.sql
要加--master-data 選項,這裡備份master服務器的數據,後面要導入slave服務器。
5. 察看Master狀態
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 79 | extmail | mysql,test | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
三、配置slave服務器
1. 編輯my.cnf
# vim /etc/my.cnf
在[mysqld]段添加以下內容:
server-id=2
master-host=192.0.0.1
master-port=3306
master-user=abc
master-password=123
master-connect-retry=60
解釋:
slave服務器的server-id不能與master相同,多台slave之間server-id也不能相同。
master-host 是 master服務器的主機名或者IP地址
master-user和master-password是前面我們在master上建用戶名和密碼
master-connect-retry 是如果從服務器發現主服務器斷掉,重新連接的時間差
2. 把從主數據庫服務器備份出來的數據庫導入到從服務器中,也就是我們前面的extmail_backup_20071120.sql
# mysqladmin create extmail
# mysql extmail < extmail_backup_20071120.sql
3. 重起mysql服務器
4. 停止slave服務,設置主服務器的各種參數
mysql> slave stop; mysql> change master to -> MASTER_HOST='192.0.0.1', -> MASTER_USER='abc', -> MASTER_PASSWORD='123', -> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=79; mysql> slave start;
5. 查看主從服務器的狀態
mysql> show processlist;