mysql主從

主從部署文檔

 

主服務器IP: 192.168.8.35

從服務器IP: 192.168.8.130

 

1.主服務器和從服務器上安裝的MySQL最好版本一致,從版本可以高於主.

mysql> select version();

+------------+

| version()  |

+------------+

| 5.5.12-log |

+------------+

1 row in set (0.00 sec)

 

2.在主服務器上爲從服務器設置一個連接賬戶

mysql> grant replication slave,replication client on *.* to rep@"192.168.8.130" identified by "rep";

 

3. 執行FLUSH TABLES WITH READ LOCK 進行鎖表

mysql> FLUSH TABLES WITH READ LOCK;

 

4. 讓客戶程序保持運行,發出FLUSH TABLES語句讓讀鎖定保持有效。(如果退出客戶程序,鎖被釋放)。進入主服務器的數據目錄,然後執行命令:

在主上操作:

shell> tar zcf /tmp/mysql.tgz /data/mysql/data

shell> scp /tmp/mysql.tgz 192.168.8.130:/tmp/

在從上操作:

shell> tar zxf /tmp/mysql.tgz /data/mysql/data

 

讀取主服務器上當前的二進制日誌名(File)和偏移量值(Position),並記錄下來:

mysql > SHOW MASTER STATUS;

mysql> SHOW MASTER STATUS;

+---------------+----------+--------------+------------------+

| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+---------------+----------+--------------+------------------+

| binlog.000011 |      349 |              |                  |

+---------------+----------+--------------+------------------+

1 row in set (0.03 sec)

 

取得快照並記錄日誌名和偏移量後(POS),可以在主服務器上重新啓用寫活動:

mysql> UNLOCK TABLES;

 

5. 確保主服務器主機上my.cnf文件的[mysqld]部分包括一個log_bin選項

[mysqld]  

log_bin=mysql-bin

server-id=1

 

6. 停止用於從服務器的服務器並在其my.cnf文件中添加下面的行:

[mysqld]  

replicate-ignore-db = mysql

replicate-ignore-db = test

replicate-ignore-db = information_schema

server-id=2

 

7.如果對主服務器的數據進行二進制備份,啓動從服務器之前將它複製到從服務器的數據目錄中。

確保對這些文件和目錄的權限正確。服務器 MySQL運行的用戶必須能夠讀寫文件,如同在主服務器上一樣。

 

8. --skip-slave-start選項啓動從服務器,以便它不立即嘗試連接主服務器。(可選操作)

 

9. 在從服務器上執行下面的語句:

change master to MASTER_HOST='192.168.8.35', MASTER_USER='rep', MASTER_PASSWORD='rep', MASTER_LOG_FILE='binlog.000011', MASTER_LOG_POS=349;

 

9. 啓動從服務器線程:

mysql> START SLAVE

 

10.驗證部署是否成功

mysql> SHOW slave status \G

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.8.35

                  Master_User: rep

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: binlog.000011

          Read_Master_Log_Pos: 349

               Relay_Log_File: relaylog.000002

                Relay_Log_Pos: 250

        Relay_Master_Log_File: binlog.000011

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

          Replicate_Ignore_DB: mysql,test,information_schema

           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: 349

              Relay_Log_Space: 399

              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: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

             Master_Server_Id: 1

1 row in set (0.03 sec)

 

Slave_IO_RunningSlave_SQL_Running都顯示Yes的時候,表示同步成功。

 

二、切換文檔

1.確保從服務器已經處理了中繼日誌中的所有語句。

mysql> stop slave IO_THREAD

 

2.然後檢查SHOW PROCESSLIST語句的輸出,直到你看到Has read all relay log

mysql> show processlist;

 

3.當從服務器都執行完這些,它們可以被重新配置爲一個新的設置。

 

4.在被提升爲主服務器的從服務器上,發出 STOP SLAVERESET MASTERRESET SLAVE操作。

mysql> stop slave;

mysql> reset master;

mysql> reset slave;

 

5. 然後重啓mysql服務

Shell> service mysqld restart

 

6.在主服務器上RESET MASTER。然後CHANGE MASTER TO MASTER_HOST='192.168.8.130',MASTER_USER='rep',MASTER_PASSWORD=rep';切換完成。

mysql> reset master;

mysql>change master to MASTER_HOST='192.168.8.130', MASTER_USER='rep', MASTER_PASSWORD='rep';

 

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