mysql master/slave 使用感受

來源:互聯網
上載者:User

使用mysql的master/slave部署已經有一段時間。這種架構不能從根本上彌補資料結構設計失誤帶來的效能問題。聊勝於無。

master/slave模式中,資料同步非常快。而master/slave/slave則會相對慢一些(就是master->slave(作為新的master)->slave,是串聯的三個節點),有時候可能會有延遲,不過不嚴重。

最近使用起來主要是在維護上積累了一些經驗。以案例說明吧。

 

一、需要把正式環境的資料匯出一份到測試資料庫

這個有幾種辦法,可以使用master/slave同步,也可以匯出成SQL,然後再倒入。我喜歡匯入/匯出的方式。假設 192.168.0.10是master,192.168.0.11-14是slave。

#mysql -h192.168.0.10 -P3306 -uroot -ppassword databasename > /home/xieping/data.sql

#mysql -h192.168.0.11 -P3306 -uroot -ppassword databasename < /home/xieping/data.sql

上面的命令要相對簡單一些,也可以使用mysqldump命令,或者tar命令。

 

匯出後再設定slave,參考下面的第二節。

 

二、需要添加一個slave

添加slave設定好my.conf就可以了。現在問題是在同步的過程中,IO部分完成了,但是SQL部分一直報錯。

使用

#stop slave;

#set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

#start slave;

這種操作還是報錯中斷。

 

這種情況需要查看master的狀態。

#mysql -h192.168.0.10 -uroot -p

 

mysql> show master status\G;

*************************** 1. row ***************************

            File: mysql-bin.000012

        Position: 108822735

    Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

 

ERROR:

No query specified

 

通過該命令獲得File和Position,在slave中有用。

 

#mysql -h192.168.0.11 -uroot -p

mysql>stop slave;

mysql>change master to

    >Master_Log_File = 'mysql-bin.000012',

    >Master_Log_Pos = '108822735';

mysql>show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.0.10

                  Master_User: root

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000012

          Read_Master_Log_Pos: 108942588

               Relay_Log_File: localhost-relay-bin.000035

                Relay_Log_Pos: 22317781

        Relay_Master_Log_File: mysql-bin.000012

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: databasename

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 108942317

              Relay_Log_Space: 22318211

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 5

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

1 row in set (0.00 sec)

 

ERROR: 

No query specified

現在就正常了, Seconds_Behind_Master: 5 表明slave比master略有延遲。

 

三、更換master

更換master如果通過修改my.conf的話比較麻煩。不但要重啟mysql進程,而且還不一定成功。可以通過

mysql> stop slave;

mysql> reset slave;

mysql>start slave;

不過這樣一來就重設了更新進度,更新會從頭開始。

 

而是要change master to命令則可以通過命令設定,但這個命令不會影響my.conf檔案,重啟mysql後,設定就無效了。

 

*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.100.144                  Master_User: root                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000012          Read_Master_Log_Pos: 108942588               Relay_Log_File: localhost-relay-bin.000035                Relay_Log_Pos: 22317781        Relay_Master_Log_File: mysql-bin.000012             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB: csevent          Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 108942317              Relay_Log_Space: 22318211              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: 5Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0               Last_SQL_Error: 1 row in set (0.00 sec)ERROR: No query specified
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.