準備
用兩臺服務器做測試:
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]段添加以下內容:
[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. 查看主從服務器的狀態
show slave status;
SHOW PROCESSLIST;
顯示以下內容時,主從服務器配置成功
Slave_IO_State: Waiting for master to send event
Slave_IO_Running:必須爲 Yes
Slave_SQL_Running:必須爲 Yes
6.手動同步數據,會自動建立數據庫,需要設置用戶ylmf相應權限
LOAD DATA FROM MASTER;
遇到ERROR 2013 (HY000): Lost connection toMySQL server during query錯誤。
在/ect/my.cnf的[mysqld]中添加skip-name-resolve
http://lionlx.iteye.com/blog/855947
試驗連接
主服務器192.168.9.10
從服務器192.168.9.11
問題處理
開始連接不過來,使用LOAD DATA FROM MASTER; 報錯,無法更新成功。
後查找原因爲訪問數據權限受限。
處理方法:
1 使用用戶遠程登錄主服務器數據庫是否可以登錄,並查看數據庫顯示是否正常
Mysql –u myuser -p –h 192.168.9.10
2.如果不能登錄,查看主服務器數據庫用戶權限是否正常
Show grantsfor [email protected]
權限配置方法如下:
GRANT ALLPRIVILEGES ON *.* TO 'myuser1'@'%' IDENTIFIED BY '1234567' WITH GRANT OPTION;
3查看所有用戶以及配置內容:
User mysql;
Select * from user;
如:
Use mysql;
Select * from user; 或者 Select * from user\G (出現亂碼用\G)
刪除用戶:
delete from user where user='sss' and host='localhost' ;
或者:
delete from user where user='sss';
刪除權限:
revoke all on *.* fromsss@localhost ;
刪除後一定記得
Flush privileges
有時候不能生效
詳細連接:http://www.oschina.net/code/snippet_222150_12541