mysql的主從複製

本節我們要講的是mysql的主從複製,之所以要進行主從複製,主要是可以進行讀寫分離,減輕mysql服務器的壓力。那麼下面我們就來看看如何實現主從複製。

 

複製的功用:

        負載均衡

        數據分佈

        備份

        高可用性

        mysql升級測試

缺點:

         單點

         寫操作無法均衡

mysql複製的工作原理:

     將主節點的的二進制日誌放到從節點上重新執行一遍

複製的三個步驟:

     1、在主庫上啓用二進制日誌

     2、備庫衝主庫複製二進制日誌,並保存至本地的中繼日誌中;

     3、 備庫從中繼日誌中讀取事件並於本地執行一次。

主從複製框架

clipboard[5]

 

master:172.16.6.1

slave:172.16.6.2

注意:slave版本必須與master相同,或者更高,因爲從節點必須兼容主節點。如果在一個已存在數據的主服務器上部署備服務器,要先備份主服務器的數據,備份的時候做好二進制日誌位置記錄 ,然後恢復到從服務器上,並指定從服務器的從主服務器二進制日誌的複製位置,從時間點開始複製。

 

master端

配置文件中加入以下項:

[mysqld]

log-bin=/var/log/master-bin                          定義二進制日誌  
binlog_format=mixd                                     格式    
sync_binlog=1                                             同步二進制日誌    
server-id=10                                                主從節點必須不一致

啓動mysql並創建用戶

mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl@'172.16.6.%' IDENTIFIED BY '123456';

mysql> FLUSH PRIVILEGES;

查看二進制

mysql> show master status;                

   +-------------------+----------+--------------+------------------+    
   | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |    
   +-------------------+----------+--------------+------------------+    
   | master-bin.000001 |      486 |              |                  |    
   +-------------------+----------+--------------+------------------+    
   1 row in set (0.02 sec)

slave端

配置文件中加入以下項:

[mysqld]

# log-bin=/mydata/bin-log/master-bin  # 從節點中禁用二進制日誌

# binlog_format=mixed

relay-log=/var/log/relay-bin #啓用中繼日誌

sync_binlog = 1

server-id = 20

read_only = 1

連接主服務器:

mysql> CHANGE MASTER TO MASTER_HOST='172.16.6.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-bin.00001',MASTER_LOG_POS=486;

mysql> START SLAVE;

 

啓動線程IO_THREAD和SQL_THREAD:

  mysql> start slave IO_THREAD;    
    Query OK, 0 rows affected (0.00 sec)    
   mysql> start slave SQL_THREAD;    
    Query OK, 0 rows affected (0.00 sec)    
   mysql> show slave status\G

p_w_picpath

好了下面就可以進行測試了。

master

在主節點中創建數據庫

 mysql> create database mwj;    
    Query OK, 1 row affected (0.00 sec)    
    mysql> show databases;    
    +--------------------+    
    | Database           |    
    +--------------------+    
    | information_schema |    
    | mysql              |    
    | mwj                |    
    | performance_schema |    
    | test               |    
    +--------------------+    
    5 rows in set (0.03 sec)

 

slave

在從節點中查看是否同步

 mysql> show databases;    
   +--------------------+    
   | Database           |    
   +--------------------+    
   | information_schema |    
   | mysql              |    
   | mwj                |    
   | performance_schema |    
   | test               |    
   +--------------------+    
   5 rows in set (0.02sec)

 

OK,複製成功,那麼本節的實驗就到這裏,謝謝!

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