1. 程式人生 > >MyCat教程二:mysql主從複製實現

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','bobo');

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



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

相關推薦

MyCat教程mysql主從複製實現

  單個mysql資料庫在處理業務的時候肯定是有限的,這時我們擴充套件資料庫的第一種方式就是對資料庫做讀寫分離(主從複製),本文我們就先來介紹下怎麼來實現mysql的主從複製操作。 1. 讀寫分離   原理:需要搭建主從模式,讓主資料庫(master)處理事務性增、改、刪操作(INSERT、UPDATE、DE

mysql主從複製搭建

mysql通過什麼實現主從複製? 通過mysql本身自帶的binlog日誌檔案來實現主從複製,mysql會把所有的操作儲存在binlog日誌中,從庫同步主庫中的binlog日誌,從庫得到主庫的操作記錄,從庫再執行記錄,實現了主從複製,資料一致。 主從優勢:資料庫備份  &nbs

mysql主從複製實現資料庫同步

1、Introduction 相信看過這篇文章的童鞋,都摩拳擦掌,躍躍一試了吧? 今天我們就來一次mysql主從同步實戰! 2、環境說明 os:ubuntu16.04 mysql:5.7.17 下面的實戰演練,都是基於上面的環境。當然,其他環境也大同小異。

Mysql主從複製實現讀寫分離

一:安裝mysql, 在這裡我是在兩臺server上安裝mysql5.7(安裝過程不在詳細介紹) 主:10.2.0.134 從:10.2.0.149 二:配置master伺服器 1.建立使用者 CREATE USER 'cosmos'@'10.2.0.%' ;

Mycat】資料庫效能提升利器(三)——Mycat實現Mysql主從複製和讀寫分離

一、前言       在前一篇文章中,小編向大家 介紹了使用Mycat水平切分資料庫。可以說,使用了水平分庫後,資料庫提升還是很高的。如果想更高的提高資料庫效能,就可以考慮對Mysql進行主從複製和讀寫分離了。       在這篇部落格中,小編就向大家介紹基於Mycat的M

MySQL主從複製 + Mycat實現讀寫分離

說明:兩臺MySQL伺服器都是使用CentOS6.5系統,MySQL版本為mysql-5.7.17 MySQL一主一被實現主從複製 注意:寫包括insert,delete,update 操作;讀只有select其他操作由主master的二進位制檔案決定。 一.在19

使用spring實現讀寫分離(mysql主從複製)五一主多從的實現

很多實際使用場景下都是採用“一主多從”的架構的,使用輪詢演算法實現,目前只需要修改DynamicDataSource即可。   1.1. 實現 import java.lang.reflect.Field; import java.util.ArrayList; impo

Mycat+Mysql主從複製+haproxy+keepalived實現高可用的分庫分表叢集方案

一, 部署架構 1.1架構圖 1.2 軟體版本 作業系統: CentOS2-7-X86_64-DVD-1708.iso JDK 版本: jdk1.8.0_11 Keepalived 版本: keepalived-1.2.18.tar.gz

mycat做讀寫分離基於 MySQL主從複製

mycat是最近很火的一款國人發明的分散式資料庫中介軟體,它是基於阿里的cobar的基礎上進行開發的  搭建之前我們先要配置mysql的主從複製,這個過程很長,我這裡就不寫了,有興趣的可以看看我寫的這篇文章。 mycat在應用當中的作用可以看下圖 mycat可以讓程

MYSQL主從複製的簡單實現

系統環境:CENTOS7 MYSQL版本,status;第一行,mysql  Ver 14.14 Distrib 5.7.22, for linux-glibc2.12 (x86_64) using  EditLine wrapper 主庫:192.168.156.75

Linux系統實現MySQL主從複製

Linux系統實現mysql主從複製 1、主從伺服器分別作以下操作: 1.1、版本一致 1.2、初始化表,並在後臺啟動mysql 1.3、修改root的密碼 *2、修改主伺服器master: 1 #vi /etc/my.cnf 2 [mysqld] 3 log-bin=mysql-b

黃聰Mysql主從配置,實現讀寫分離

大型網站為了軟解大量的併發訪問,除了在網站實現分散式負載均衡,遠遠不夠。到了資料業務層、資料訪問層,如果還是傳統的資料結構,或者只是單單靠一臺伺服器扛,如此多的資料庫連線操作,資料庫必然會崩潰,資料丟失的話,後果更是 不堪設想。這時候,我們會考慮如何減少資料庫的聯接,一方面採用優秀的程式碼框架,進行程式碼的優

windows下實現mysql主從複製

MySQL的主從複製是通過binlog日誌來實現的,主從複製中的“主”指的是MySQL主伺服器上的資料庫,“從”指的是MySQL從伺服器上的資料庫,且這種複製是基於資料庫級別的,為此從伺服器中的資料庫名稱必須和主伺服器中的資料庫名稱保持一致,那麼,要想實現主從複製,我們至少要有兩個MySQL伺服器(

Rxjava2入門教程Observable與Observer響應式程式設計在Rxjava2中的典型實現

在RxJava中,函式響應式程式設計具體表現為一個觀察者(Observer)訂閱一個可觀察物件(Observable),通過建立可觀察物件發射資料流,經過一系列操作符(Operators)加工處理和執行緒排程器(Scheduler)在不同執行緒間的轉發,最後由觀察者接受並做出響應的一個過程 Observ

Mycat作為中介軟體搭建Mysql主從複製---從選型到搭建的想法和記錄

想了解本人簡陋搭建過程的同學,可以忽略下面這一段: ***************************************************************************************************************

MySQL主從複製讀寫分離與Yii2實現

關於 MySQL的主從複製的配置以及MySQL proxy的配置 在以下這篇文章當中會詳細講到: 或者可以參考這個 接下來我們要說的是在Yii2中是如何實現這個程式碼層級的讀寫分離. Yii2中主從複製和讀寫分離 這裡主要圍繞最新的Yii2英文文件中的一小節“主從複製與讀寫分離”展開進行介紹。為什麼

mysql系列()搭建主從複製

一、Mysql主從複製原理: Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句(insert,update,delete,ALTER TABLE,grant等)。 主從複製的原理其實就是把主伺服器上的bin日誌複製到從伺服器上執行

centos7 中利用docker技術實現mysql主從複製

我這是在一臺阿里雲伺服器上安裝docker,啟動兩個mysql容器,實現mysql主從複製功能。 一、環境準備: MySQL : 5.7 Docker : 1.13.1 CentOS : 7 二、啟動mysql容器 上述文章講過了如何安裝docker

從零開始,通過docker實現mysql 主從複製,主主複製,圖文並茂,保證可以實現!

建立docker 容器(可以根據一個映象建立多個容器) docker run -tid 映象ID/usr/sbin/init //centos7版本。使用/usr/sbin/init解決systemctl報錯不能使用的問題docker run -tid 映象ID/bin/bash //非cen

以Docker方式實現MySql 主從複製(實踐篇)

本文實踐了用Docker方式來實現基於binlog的MySql主從複製。關於MySql主從複製的原理將在下一篇中進行講解。 一些資料的本地儲存目錄結構 mysql >tree