MyCat教程二:mysql主從復制實現


  單個mysql數據庫在處理業務的時候肯定是有限的,這時我們擴展數據庫的第一種方式就是對數據庫做讀寫分離(主從復制),本文我們就先來介紹下怎么來實現mysql的主從復制操作。

1. 讀寫分離

  原理:需要搭建主從模式,讓主數據庫(master)處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從數據庫(slave)處理 SELECT 查詢操作。
  Mycat 配合數據庫本身的復制功能,可以解決讀寫分離的問題。

2.主從備份概念

什么是主從備份: 就是一種主備模式的數據庫應用.
主庫(Master)數據與備庫(Slave)數據完全一致.
實現數據的多重備份, 保證數據的安全.
可以在 Master[InnoDB]和 Slave[MyISAM]中使用不同的數據庫引擎,實現讀寫的分離
InnoDB:支持事務處理
MyISAM:不支持事務處理

2.1 MySQL5.5, 5.6 版本后本身支持主從備份

  在老舊版本的 MySQL 數據庫系統中,不支持主從備份,需要安裝額外的 RPM 包.如果需要安裝 RPM,只能在一個位置節點安裝.

2.2 主從備份目的

2.2.1 實現主備模式

  保證數據的安全. 盡量避免數據丟失的可能.

2.2.2 實現讀寫分離

  使用不同的數據庫引擎,實現讀寫分離.提高所有的操作效率.
  InnoDB 使用 DML 語法操作. MyISAM 使用 DQL 語法操作.

2.3 主從備份效果

2.3.1 主庫操作同步到備庫

  所有對 Master 的操作,都會同步到 Slave 中.如果 Master 和 Salve 天生上環境不同,那么對 Master 的操作,可能會在 Slave 中出現錯誤如: 在創建主從模式之前,Master 有 database : db1, db2, db3. Slave 有 database: db1, db2.創建主從模式.現在的情況 Master 和 Slave 天生不同.主從模式創建成功后,在 Master 中 drop database db3. Slave 中拋出數據庫 SQL 異常.后續所有的命令不能同步.一旦出現錯誤. 只能重新實現主從模式.

2.4 主從模式下的邏輯圖

在這里插入圖片描述

3. MySQL主從模式搭建

3.1 安裝MYSQL

mysql安裝教程:
https://blog.csdn.net/weixin_45600622/article/details/102647528
環境地址:
主節點:192.168.88.180
從節點:192.168.88.181

在這里插入圖片描述
在這里插入圖片描述

3.2 主庫配置修改(Master)

路徑:/etc/my.cnf

3.2.1 server_id配置

本環境中 server_id 是 1
MySQL 服務唯一標識
配置要求:
server_id 任意配置,只要是數字即可
server_id Master 唯一標識數字必須小於 Slave 唯一標識數字.

在這里插入圖片描述

3.2.2 log_bin配置

本環境中 log_bin 值 : master_log
開啟日志功能以及日志文件命名,log_bin=master_log
變量的值就是日志文件名稱.是日志文件名稱的主體.
MySQL 數據庫自動增加文件名后綴和文件類型.

在這里插入圖片描述

3.2.3 重啟mysql

service mysql restart

  
  
  
          

3.2.4 登錄mysql

從mysql的安裝路徑下進入

./bin/mysql -uroot -h127.0.0.1 -p123456

  
  
  
          

在這里插入圖片描述

3.2.5 創建用戶

在 MySQL 數據庫中,為不存在的用戶授權,就是同步創建用戶並授權.
此用戶是從庫訪問主庫使用的用戶
ip 地址不能寫為%. 因為主從備份中,當前創建的用戶,是給從庫 Slave 訪問主庫 Master使用的.用戶必須有指定的訪問地址.不能是通用地址.
grant all privileges on *.* to ‘username’@’ip’ identified by ‘password’ with grant option;
flush privileges;

grant all privileges on *.* to 'myslave'@'192.168.88.181' identified by 'myslave' with grant 
option;
flush privileges;

  
  
  
          

3.2.6 查看用戶

use mysql;
select host, user from user;

  
  
  
          

在這里插入圖片描述

3.2.7 查看 Master 信息

在這里插入圖片描述

master_log.00003就是主從復制中從數據庫要讀取的日志文件。
注意:關閉防火牆或在防火牆中開放 3306 端口

3.3 從庫配置修改(slave)

3.3.1 修改my.cnf的server_id

  從庫的 server_id要比主庫中的server_id的值要大

在這里插入圖片描述
然后重啟mysql服務

3.3.2 連接mysql服務

在這里插入圖片描述

3.3.3 停止 Slave 功能

stop slave

  
  
  
          

3.3.4 配置主庫信息

  需要修改的數據是依據 Master 信息修改的.ip 是 Master 所在物理機 IP. 用戶名和密碼是Master 提供的 Slave 訪問用戶名和密碼. 日志文件是在 Master 中查看的主庫信息提供的.在Master 中使用命令 show master status 查看日志文件名稱.
change master to master_host=’ip’, master_user=’username’, master_password=’password’, master_log_file=’log_file_name’;

3.3.5 啟動 Slave 功能

start slave;

  
  
  
          

3.3.6 查看 Slave 配置

show slave status \G; # \G 行轉列

  
  
  
          

在這里插入圖片描述

注意:如果輸出中有如下提示:

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). 

  
  
  
          

原因是以為兩個數據庫是克隆出來的,所以uuid是一致的,這時只需要刪除掉一個uuid即可,具體如下:

在這里插入圖片描述

auto.cnf 注釋掉或者刪除掉,重啟mysql就會重新分配!

4. 主從測試

4.1 創建數據庫同步

在master上新建一個數據庫,然后查看slave中是否也有即可

在這里插入圖片描述

create database demo2 default character set utf8;

  
  
  
          

在這里插入圖片描述

4.2 創建table同步

create table t_user (id varchar(20),name varchar(20));

  
  
  
          

在這里插入圖片描述

4.3 數據操作同步

insert into t_user (id,name)values('666','cxydmx');

  
  
  
          

在這里插入圖片描述

通過演示我們發現主數據庫的修改會及時的同步到從數據庫,這樣mysql的主從配置就OK了,好了本文就到此,下篇來詳細介紹一下MyCat的安裝與配置



關注微信公眾號【程序員的夢想】,專注於Java,SpringBoot,SpringCloud,微服務,Docker以及前后端分離等全棧技術。

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM