MySQL數據庫設置主從同步

jopen 12年前發布 | 22K 次閱讀 MySQL 數據庫服務器

MYSQL主從同步是目前使用比較廣泛的數據庫架構,技術比較成熟,配置也不復雜,特別是對于負載比較大的網站,主從同步能夠有效緩解數據庫讀寫的壓力。

MySQL主從同步的機制

MYSQL主從同步是在MySQL主從復制(Master-Slave Replication)基礎上實現的,通過設置在Master MySQL上的binlog(使其處于打開狀態),Slave MySQL上通過一個I/O線程從Master MySQL上讀取binlog,然后傳輸到Slave MySQL的中繼日志中,然后Slave MySQL的SQL線程從中繼日志中讀取中繼日志,然后應用到Slave MySQL的數據庫中。這樣實現了主從數據同步功能。

20131205165236203.jpg

MySQL主從同步的作用

1、可以作為一種備份機制,相當于熱備份
2、可以用來做讀寫分離,均衡數據庫負載

MySQL主從同步的步驟

一、準備操作
1、主從數據庫版本一致,建議版本5.5以上
2、主從數據庫數據一致

二、主數據庫master修改

1、修改MySQL配置:

 
    # 日志文件名  
    log-bin = mysql-bin  

    # 主數據庫端ID號  
    server-id = 1  
2、重啟mysql,創建用于同步的賬戶:
 
    # 創建slave帳號slave_account,密碼123456  
    mysql>grant replication slave on *.* to 'slave_account'@'%' identified by '123456';  

    # 更新數據庫權限  
    mysql>flush privileges;  

3、查詢master的狀態

 
    mysql> show master status;  
    +------------------+----------+--------------+------------------+  
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
    +------------------+----------+--------------+------------------+  
    | mysql-bin.000009 |      196 |              |                  |  
    +------------------+----------+--------------+------------------+  
    1 row in set  

 注:執行完這個步驟后不要再操作主數據庫了,防止主數據庫狀態值變化

三、從數據庫slave修改

1、修改MySQL配置:

 
    # 從數據庫端ID號  
    server-id =2  
2、執行同步命令
 
    # 執行同步命令,設置主數據庫ip,同步帳號密碼,同步位置  
    mysql>change master to master_host='192.168.1.2',master_user='slave_account',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=196;  

    # 開啟同步功能  
    mysql>start slave;  

3、檢查從數據庫狀態:

 
    mysql> show slave status\G;  
    *************************** 1. row ***************************  
                   Slave_IO_State: Waiting for master to send event  
                      Master_Host: 192.168.1.2  
                      Master_User: slave_account  
                      Master_Port: 3306  
                    Connect_Retry: 60  
                  Master_Log_File: mysql-bin.000009  
              Read_Master_Log_Pos: 196  
                   Relay_Log_File: vicky-relay-bin.000002  
                    Relay_Log_Pos: 253  
            Relay_Master_Log_File: mysql-bin.000009  
                 Slave_IO_Running: Yes  
                Slave_SQL_Running: Yes  
                  Replicate_Do_DB:  
              Replicate_Ignore_DB:  
              ...  
注:Slave_IO_Running及Slave_SQL_Running進程必須正常運行,即YES狀態,否則說明同步失敗。

到這里,主從數據庫設置工作已經完成,自己可以新建數據庫和表,插入和修改數據,測試一下是否成功

四、其他可能用到的相關參數

1、master端:

    # 不同步哪些數據庫  
    binlog-ignore-db = mysql  
    binlog-ignore-db = test  
    binlog-ignore-db = information_schema  

    # 只同步哪些數據庫,除此之外,其他不同步  
    binlog-do-db = game  

    # 日志保留時間  
    expire_logs_days = 10  

    # 控制binlog的寫入頻率。每執行多少次事務寫入一次  
    # 這個參數性能消耗很大,但可減小MySQL崩潰造成的損失  
    sync_binlog = 5  

    # 日志格式,建議mixed  
    # statement 保存SQL語句  
    # row 保存影響記錄數據  
    # mixed 前面兩種的結合  
    binlog_format = mixed  

2、slave端:

 
    # 停止主從同步  
    mysql> stop slave;  

    # 連接斷開時,重新連接超時時間  
    mysql> change master to master_connect_retry=50;  

    # 開啟主從同步  
    mysql> start slave;  

以上連接超時設置,類似方式可用于設置主數據庫ip,同步帳號密碼,同步位置

20131205181640343.jpg

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!