天天看點

CentOS 7 MySQL 5.6 主從複制

CentOS 7 MySQL 5.6 主從複制

    • 一、準備工作
    • 二、配置伺服器
    • 三、主從伺服器常用指令

主從複制的作用:

CentOS 7 MySQL 5.6 主從複制

一、準備工作

  1. 虛拟機上安裝一個

    CentOS 7

    伺服器

    192.168.25.130

    Master
  2. 在CentOS伺服器上安裝

    MySQL 5.6

    ,并建立一個使用者

    mysql1

    密碼

    mysql1

  3. 在用虛拟機克隆一個

    CentOS 7

    ,并修改靜态ip

    192.168.25.132

    Slave

二、配置伺服器

  1. Master

    伺服器給從伺服器賬号

    mysql1

    授權
    在 Master 的資料庫中建立一個複制賬戶,每個 Slave 使用該賬戶連接配接 Master 進行複制,需要

    replication slave

    replication client

    權限,Master 的連接配接資訊會存儲在文本檔案

    master.info

    檔案中。
    ## 連接配接`root`給`mysql1`授權
    [[email protected] ~]# mysql -uroot -p
    Enter password:
    mysql> grant replication slave,replication client on *.* to 'mysql1'@'192.168.25.132' identified by 'mysql1';
    mysql>FLUSH PRIVILEGES;
    mysql> quit;
                    

    說明:建立了一個使用者名為 mysql1的使用者,密碼為 mysql1,隻允許在 192.168.25.132 這個 Slave 上登入。

    可将192.168.25.132設定為*,表示可以在區域網路内的Slave登入

  2. 修改(master與slave)my.cnf檔案
    vi /etc/my.cnf  
    [mysqld] ##  新增以下内容
    server_id=130 ## 伺服器id必須是唯一存在(master 130, slave 132)
    log-bin=mysql-bin   ## 開啟日志檔案
                    
CentOS 7 MySQL 5.6 主從複制
  1. 重新開機mysql服務
    [[email protected] ~]# service mysqld restart
                    
  2. slave連接配接master
    CHANGE MASTER TO 
    		MASTER_HOST = '192.168.25.130', #另一台機器的位址
    		MASTER_PORT = 3306, #另一台機器的端口
    		MASTER_USER = 'mysql1',#另一台機器上第一步配置設定的使用者名
    		MASTER_PASSWORD = 'mysql1', #另一台機器上第一步配置設定的密碼
    		MASTER_LOG_FILE = 'mysql-bin.000001',#另一台機器上執行SHOW MASTER STATUS得到的檔案名
    		MASTER_LOG_POS = 192; #另一台機器上執行SHOW MASTER STATUS得到的偏移量 
                    
  3. 啟動slave,并檢視slave啟動是否成功啟動
START SLAVE; # 啟動slave
	SHOW SLAVE STATUS; # 檢視slave狀态
                
成功了的狀态
CentOS 7 MySQL 5.6 主從複制
在配置過程中,我遇到兩個問題
  1. Slave_IO_Running為NO

    造成原因:由于mysql是通過另一台虛拟機克隆的。

    解決方案:修改

    [[email protected] ~]# vi /var/lib/mysql/auto.cnf

    中的

    server-uuid

    (區域網路内必須是唯一的)

    參考:mysql主從複制之異常解決— Slave_IO_Running: NO 之三大原因

  2. Slave_SQL_Running為NO

    造成原因:同步前主從資料庫資料不一緻。

    解決方案:将主資料庫備份到從資料庫。

    參考:mysql主從同步注意事項

三、主從伺服器常用指令

  1. 主伺服器相關指令
    mysql>show master status; # 查詢master伺服器狀态
    mysql>show slave hosts; # 查詢master的slave相關資訊
    mysql>show binlog events;
    # mysql執行改動産生的二進制日志檔案, 兩個作用:
    #(1)資料回複 
    #(2) 主從資料庫。用于slave端執行增删改,保持與master同步。 
    mysql>show binary logs;
                    
  2. 從伺服器相關指令
    mysql>slave start; # 啟動slave
    mysql>slave stop; #關閉slave
    mysql>SLAVE STOP IO_THREAD;  # 此線程把master段的日志寫到本地
    mysql>SLAVE start IO_THREAD;
    mysql>SLAVE STOP SQL_THREAD; # 此線程把寫到本地的日志應用于資料庫
    mysql>SLAVE start SQL_THREAD;
    mysql>reset slave;
    mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER;
    mysql>load data from master;
    mysql>show slave status; //SUPER,REPLICATION CLIENT
    mysql>CHANGE MASTER TO MASTER_HOST=127.0.0.1, MASTER_PORT=3306,MASTER_USER=user, MASTER_PASSWORD=pwd; //動态改變master資訊
                    

繼續閱讀