如何給一個MySQL主服務器增加新的從服務器


現有一個MySQL主服務器(或者已經啟用了binlog的服務器),如果希望給其增加一個新的從服務器。

做法如下:

  1. 登錄到MySQL主服務器,創建一個復制用戶,並賦予復制權限,其中黑體部分自行替換,並會在下面用到:
    mysql> GRANT REPLICATION SLAVE ON *.*
             -> TO ' replicuser'@' 從服務器地址' IDENTIFIED BY ' secmima';

  2. 登錄到MySQL主服務器,刷新數據表並加鎖,然后查看當前binlog狀態(master  status)。執行如下命令,並注意其中黑體標明的部分,記下來:
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS/G
    *************************** 1. row ***************************
                            File: mysql-bin.000103
                    Position: 597308
          Binlog_Do_DB:
    Binlog_Ignore_DB:
    1 row in set (0.00 sec)
  3. 不要退出mysql命令行,否則會自動解鎖。另外開一個控制台,對數據庫數據目錄進行打包(如果只想同步其中一些數據庫或表,就只打包需要的數據庫或表)。命令如下:
    # tar -zcvf mysql.tar.gz /var/lib/mysql
  4. 打包完成后,在主服務器上解鎖(也可以直接退出mysql命令行來解鎖),恢復MySQL服務器的工作:
    mysql> UNLOCK TABLES
  5. 將打包的文件復制到新建的從服務器,當然,你的從服務器應該已經安裝好了MySQL,並可以正常工作。可以使用任何你熟悉的復制方法來負責,比如scp、ftp、cp,甚至U盤。
  6. 停止從服務器上的MySQL進程,並刪除或將原本的數據庫數據目錄改名(事實上可以直接刪除,改名只是為防萬一有用)。
    # mv /var/lib/mysql /var/lib/mysql.old
  7. 修改從服務器的/etc/my.cnf,在[mysqld]小節里面增加服務器ID選項,可以是一個你沒有用過的ID號的數字(主服務器已經指定了吧?如果沒有,請提前指定一個比較好):
    server-id=2
  8. 然后在存放MySQL數據目錄的位置(如:/var/lib),展開復制過來的打包的主服務器數據:
    # tar -zxvf mysql.tar.gz
  9. 啟動步驟6停止的MySQL從服務器,並登陸MySQL命令行:
    # service mysqld start
    # mysql -hlocalhost -p
  10. 現在在MySQL命令行里面,啟動主從復制,其中黑體標明的部分來自步驟1和2中:
    mysql> CHANGE MASTER TO  MASTER_HOST='主服務器地址',
             -> MASTER_USER=' replicuser',  MASTER_PASSWORD=' secmima',
             -> MASTER_PORT=3306, MASTER_LOG_FILE=' mysql-bin.000103',
             -> MASTER_LOG_POS= 597308, MASTER_CONNECT_RETRY=10;
    mysql> SLAVE START
  11. 可以在主服務器上使用命令查看狀態:
    mysql> SHOW MASTER STATUS/G
    *************************** 1. row ***************************
                            File: mysql-bin.000105
                    Position: 7929790
          Binlog_Do_DB:
    Binlog_Ignore_DB:
    1 row in set (0.00 sec)
  12. 可以在從服務器上使用命令查看狀態,特別要注意黑體標明部分,看看是否正常工作:
    mysql> SHOW SLAVE STATUS/G
    *************************** 1. row ***************************
                       Slave_IO_State: Waiting for master to send event
                          Master_Host: 192.168.0.99
                           Master_User: replicuser
                            Master_Port: 3306
                        Connect_Retry: 10
                      Master_Log_File: mysql-bin.000105
            Read_Master_Log_Pos: 12313227
                         Relay_Log_File: mysqld-relay-bin.000006
                         Relay_Log_Pos: 10103898
             Relay_Master_Log_File: mysql-bin.000105
                    Slave_IO_Running: Yes
                  Slave_SQL_Running: Yes
                      Replicate_Do_DB:
                 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: 12313227
                         Relay_Log_Space: 10103898
                           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
    1 row in set (0.00 sec)

如果一切順利,那么新的從服務器就配置好了。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com