mysql 主從備份

  • 準備 
    用兩臺服務器做測試: 
    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必須爲1232–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; 

  • wKioL1UvTdjCueWRAAQDlGwHo0U155.bmp

  • 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;

 

 

 

如:

wKioL1UvTj_R3SpCAAM6uCURL7U475.bmp

Use mysql;

Select  *  from  user;   或者 Select  *  from  user\G      (出現亂碼用\G)

wKiom1UvTRuSnsxkAA-8SDl_0ho846.bmp

 

刪除用戶:

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章