Mysql主從複製

 

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

一.首先安裝mysqlmysql

    這裏使用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)  
說明已經同步了剛纔的操做,配置完成。
相關文章
相關標籤/搜索