Mysql主從複製

 

實驗平臺:virtualbox 4.12
操作系統:RHEL5.4
    MySQL支持單向、異步複製,複製過程中一個服務器充當主服務器,另一個或幾個其它服務器充當從服務器。主服務器將更新寫入二進制日誌文件,並維護日誌文件的一個索引以跟蹤日誌循環。當一個從服務器連接到主服務
器時,它通知主服務器從服務器在日誌中讀取的最後一次成功更新的位置。從服務器接收從那時起發生的任何更新,然後封鎖並等待主服務器通知下一次更新。
    這裏使用兩臺乾淨的虛擬機執行模擬實驗,其中mysql爲主服務器,mysql2爲從服務器,對應的IP地址爲

一.首先安裝mysql

    這裏使用yum進行安裝,安裝前要保證yum配置正確
    [root@mysqll ~]# yum install mysql mysql-server mysql-client mysql-devel mysql-shared -y
    由於要進行主從複製,所以從服務器做好與主服務器安裝相同版本的mysql,這裏選擇安裝一樣的版本
   
  1. [root@mysql2l ~]# yum install mysql mysql-server mysql-client mysql-devel mysql-shared -y  
    在主服務器創建數據庫
   
  1. [root@mysql ~]# service mysqld start  
  2. [root@mysql ~]# mysql  
  3. mysql> create database dns;  
  4. mysql> use dns;  
  5. mysql> create table mytb (  
  6.  ID BIGINT(20) NOT NULL DEFAULT 0,UserID BIGINT(20) NOT NULL,ZoneID BIGINT(20) NOT NULL,Zone VARCHAR(255) NOT NULL,Host VARCHAR(255) NOT NULL,Type ENUM('A','SOA','NS','MX','CNAME','PTR','TXT','AAAA') NOT NULL,Mx_priority INT(10),Data VARCHAR(255) NOT NULL,TTL INT(10) NOT NULL DEFAULT '600',View VARCHAR(20) NOT NULL DEFAULT 'DEF',Active ENUM('Y','N') NOT NULL DEFAULT 'Y',DomainLevel INT(11) NOT NULL DEFAULT 1,Standby VARCHAR(255) NOT NULL,CheckHostID BIGINT(20) NOT NULL DEFAULT 0,IsFensheng TINYINT(1) NOT NULL DEFAULT 0);  
  7. mysql> LOAD DATA INFILE '/tmp/table.sql' INTO TABLE mytb;  
  8. //導入事先準備好的數據庫文件 
二.設置主從複製
    爲從服務器在主服務器上覆制數據創建一個賬戶,並授予該賬戶REPLICATION SLAVE權限
    
  1. mysql>GRANT REPLICATION SLAVE ,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'redhat'@'192.168.56.%' IDENTIFIED BY 'redhat';  
    mysql>Flush privileges;     // 刷新權限,使設置生效
    創建更新日誌的目錄並給mysql用戶的權限
    編輯mysql上的my.cf,設置其爲主服務器
    [root@mysql ~]# vim /etc/my.cnf
    在[mysqld]字段添加
    server-id=1       //本機數據庫ID
    log-bin =mysql-bin //重啓服務開啓二進制日誌功能
    同樣的操作,在從服務器mysql2上設置server-id=2
    查看mysql的狀態:
    mysql> show master status;

    在mysql2上執行下面的命令:
    
  1. [root@mysql2 ~]# mysql  
  2. mysql> CHANGE MASTER TO   
  3. MASTER_HOST='192.168.56.101',      //指定主服務器  
  4. MASTER_USER='redhat',                  //複製用的用戶名  
  5. MASTER_PASSWORD='redhat',          //對應的密碼   
  6. MASTER_LOG_FILE='/var/lib/mysql';      //日誌目錄  
  7. mysql> START SLAVE;                //開啓從服務器功能  
    查看一下從服務器狀態:
    mysql> show slave status\G;

   
    當看到Slave_IO_Running ,Slave_SQL_Running 都應該是yes,表示從庫的I/O,Slave_SQL線程都已經開啓
    在mysql2上查看一下數據庫
    mysql> show databases;
      
    可以看到從服務器已經從主服務器那裏複製到了dns數據庫,說明主從複製工作正常,爲進一步驗證,在之服務器上刪除一些數據
    
  1. mysql> delete from dns.mytb where zone like '%.net';      
  2.   Query OK, 71 rows affected (0.04 sec)  
   
    此時去mysql2上查詢
    
  1. mysql> select * from dns.mytb where zone like '%.net';  
  2.   Empty set (0.01 sec)  
    說明已經同步了剛纔的操作,配置完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章