MySQL主從複製

MySQL主從複製


  主從複製:

   通過日誌的方式將數據從MySQL主服務器(Master)經過網絡傳送到MySQL從服務器(Slave)上,然後重放。


  準備:兩臺主機做MySQL服務器

        172.16.75.1   Master

        172.16.75.2   Slave


  拓撲圖:

        QQ截圖20181029172603.png


(一)配置:

           Master:

      [root@master ~]# vim /etc/my.cnf
    [mysqld]
     ....
     innodb_file_pertable=ON
     skip_name_resolve = ON
    log_bin=binlog
    server_id=199
    sync_binlog=1
    innodb_flush_log_at_trx_commit=1

          開啓服務:

     [root@master ~]# systemctl start mariadb



          Slave:

      [root@slave ~]# vim /etc/my.cnf
      [mysqld]
       ...
      innodb_file_per_table = ON
      skip_name_resolve = ON
      server_id=200
      read_only=ON
      relay_log=slavelog

         開啓服務:

    [root@slave ~]# systemctl start mariadb


 (二)將Master的數據內容全備份傳送到Slave,保持兩臺服務器數據一致

        Master:

    [root@master ~]# mysqldump --all-databases --lock-all-tables > alldb.sql
    [root@master ~]# scp alldb.sql [email protected]:/root/

      

       Slave: 將Master端傳送來的數據進行重放

    [root@slave ~]# mysql
     ...
     MariaDB [(none)]> \. alldb.sql


  

  (三)

     Master:

         1. 授權一個用戶複製權限並設置密碼等;

         2. 查看Master的狀態信息即(日誌文件和複製的位置)

   MariaDB [(none)]> grant replication slave on *.* to 'west'@'172.16.%.%' identified by '111111';
   Query OK, 0 rows affected (0.00 sec)

   MariaDB [(none)]> show master status ;
   +---------------+----------+--------------+------------------+
   | File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +---------------+----------+--------------+------------------+
   | binlog.000009 |      548 |              |                  |
   +---------------+----------+--------------+------------------+
   1 row in set (0.00 sec)

 

     Slave:指定Master_user, 密碼,端口,Master的二進制日誌文件,複製開始時Master二進制日誌文件的位置(從什麼位置開始複製):

MariaDB [(none)]> change master to master_host='172.16.75.1',master_user='west',master_password='111111',master_port=3306,master_log_file='binlog.000009',master_log_pos=548;
Query OK, 0 rows affected (0.04 sec)

MariaDB [(none)]> start slave; 
Query OK, 0 rows affected (0.01 sec)

  查看Slave狀態:

 圖片.png    


  如圖可看出Slave正在等待Master發送事件, Slave_IO_Running和Slave_SQL_Running兩個線程已開啓;

   Slave_IO_Running作用:一旦Master二進制日誌文件有變化時,Slave讀取Master二進制日誌並複製到中繼日誌中;
   Slave_SQL_Running作用:將中繼日誌中的內容重放;



  測試:在Master端創建一個數據庫,並在Slave端檢測,看兩端是否一致;

    Master:

  MariaDB [(none)]> create database teachers;

     圖片.png


  Slave:

     圖片.png


  主從複製完成;






 

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