Linux下搭建Mysql主從複製詳解(Mysql版本5.7.30)

前言

本篇將跟大家一起搭建Mysql主從複製,如果你還來沒有安裝mysql,請看博主的這篇mysql-5.7.30的安裝教程

1、原理

  1. master的I/O線程將數據寫入binlog中;
  2. slave的I/O線程從master的binlog中讀取數據,寫入自己的Relay_Log_File日誌中;
  3. slave的SQL線程從Relay_Log_File日誌中解析sql,完成數據的複製。

2、應用場景

  1. 從服務器作爲主服務器的實時數據備份

  2. 主從服務器實現讀寫分離(主寫從讀),從服務器實現負載均衡

  3. 把多個從服務器根據業務重要性進行拆分訪問(從服務器根據業務進行拆分)

3、本地安裝

虛擬機ip mysql版本 主從關係
192.168.158.129 5.7.30 master
192.168.158.131 5.7.30 slave

4、master主庫配置

下面步驟都是在主庫上進行操作:

  1. 修改my.cnf
[root@localhost ~]# vi /etc/my.cnf
  1. 添加下面的配置文件並保存
[mysqld]
#開啓log-bin二進制日誌
log-bin=/var/log/mysql/mysql-bin
#配置唯一的服務器ID
server-id=1
#下面這兩個不是必須要配置
#主要是爲了使用帶事務的InnoDB進行復制設置時儘可能提高持久性和一致性
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
  1. 創建日誌目錄並賦予權限
[root@localhost ~]# mkdir /var/log/mysql
[root@localhost ~]# chown mysql:mysql /var/log/mysql
  1. 重啓數據庫,並查看以下配置是否生效
[root@localhost ~]# systemctl start mysql
[root@localhost ~]# mysql -uroot -p
Enter password:
mysql> show variables like 'server_id';
mysql> show variables like 'log_bin';
#skip_networking默認是OFF關閉狀態,啓用後主從將無法通信
mysql> show variables like '%skip_networking%';

在這裏插入圖片描述

  1. 在主庫上建立用於主從複製的賬號
mysql> CREATE USER 'rep1'@'%';
mysql> GRANT REPLICATION SLAVE ON *.*  TO  'rep1'@'%'  identified by 'coolsummermoon';
  1. 查看主庫的二進制日誌的名稱
mysql> show master status\G

在這裏插入圖片描述

5、slave從庫配置

下面都是在從庫上面操作:

  1. 在從庫上面測試之前建立的複製賬號是否可以連接主庫
[root@localhost ~]# mysql -urep1 -p'coolsummermoon' -h192.168.158.129
  1. 成功連接後,退出,編輯配置文件my.cnf
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
#配置唯一的服務器ID
server-id=2
  1. 重啓數據庫,並查看以下配置是否生效
    在這裏插入圖片描述
  2. 配置複製參數
mysql> CHANGE MASTER TO MASTER_HOST='192.168.158.129',MASTER_USER='rep1',MASTER_PASSWORD='coolsummermoon',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=154;
mysql> start slave;
  1. 查看slave的狀態
mysql> show slave status\G

在這裏插入圖片描述

6、測試

  1. 主庫增加coolsummermoon數據庫
    在這裏插入圖片描述
  2. 查看從庫是否也創建了coolsummermoon數據庫
    3.

結束語

本篇詳細的描述了搭建主從複製的全流程,各位搭建成功的能否點個贊,謝謝大家!您的點贊,是我繼續前進的動力。

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