91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Replication主從復制機制原理是什么

發布時間:2021-10-12 10:24:11 來源:億速云 閱讀:129 作者:iii 欄目:編程語言

本篇內容主要講解“Replication主從復制機制原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Replication主從復制機制原理是什么”吧!

復制概述

  • Replication復制是指將主數據庫的DDL和DML操作通過二進制日志傳到從庫服務器中,然后在從庫上對這些日志重新執行(也叫重做),從而使得從庫和主庫的數據保持同步

  • MySQL支持一臺主庫同時向多臺從庫進行復制, 從庫同時也可以作為其他從服務器的主庫,實現鏈狀復制

復制原理

MySQL 的主從復制原理如下Replication主從復制機制原理是什么

從上層來看,復制分成三步

  • Master主庫在事務提交時,會把數據的更新記錄作為時間Events記錄在二進制日志文件Binlog中。(Dump線程 - 主庫線程)

  • Master主庫推送二進制日志文件Binlog中的日志事件到從庫的并且通過寫入中繼日志Relay Log(I/O線程 - 從庫線程)。

  • Slave從庫 讀取且重做(重放中繼日志(Relay Log) 中的事件,將改變反映它自己的數據。(SQL線程 - 從庫線程

復制優勢

MySQL復制的有點主要包含以下三個方面

  • 主庫出現問題,可以快速切換到從庫提供服務(提供故障切換機制)

  • 從庫上執行查詢操作,從主庫中更新,實現讀寫分離,降低主庫的訪問壓力(提高讀寫分離并且提高高可用和負載以及吞吐)

  • 從庫中執行備份,以避免備份期間影響主庫的服務(提高數據的安全性)

搭建步驟

master

  1. 在master 的配置文件(/usr/my.cnf)中,配置如下內容

  • mysql 服務ID,保證整個集群環境中唯一

server-id=1

  • mysql binlog 日志的存儲路徑和文件名

  • log-bin=/var/lib/mysql/mysqlbin

  • log-bin-index = mysql-bin.index(設置二進制日志索引文件名)

  • binlog_format = mixed (binlog的模式)

    • STATEMENT:語句復制

    • ROW:行復制

    • MIXED:混和復制,默認選項

  • sync-binlog = 1(是否開啟同步方式): 默認為0,為保證不會丟失數據,需設置為1,用于強制每次提交事務時,同步二進制日志到磁盤上。

character-set-server = utf8字符串編碼

  • 錯誤日志,默認已經開啟

  • log-err

  • mysql的安裝目錄

basedir

  • mysql的臨時目錄

tmpdir

  • mysql的數據存放目錄

datadir

  • 是否只讀,1 代表只讀, 0 代表讀寫

read-only=0

  • 忽略的數據, 指不需要同步的數據庫(逗號分割)

binlog-ignore-db=mysql

  • 指定同步的數據庫

binlog-do-db=db01

  1. 執行完畢之后,需要重啟Mysql:

service mysql restart;

  1. 創建同步數據的賬戶,并且進行授權操作:

grant replication slave on . to 'itcast'@'192.168.192.131' identified by 'itcast'; flush privileges;

  1. 為了獲取一個一致性的快照,需對所有表設置讀鎖:

flush tables with read lock;

  1. 備份主數據庫數據

  • 主庫可以停機,則直接拷貝所有數據庫文件

  • 主庫是在線生產庫,可采用mysqldump備份數據,它對所有存儲引擎均可使用。

針對事務性引擎
mysqldump -uroot -ptiger --all-database -e --single-transaction --flush-logs --max_allowed_packet=1048576 --net_buffer_length=16384 > /data/all_db.sql
針對 MyISAM 引擎,或多引擎混合的數據庫
mysqldump -uroot --all-database -e -l --flush-logs --max_allowed_packet=1048576 --net_buffer_length=16384 > /data/all_db.sql

主從數據庫都是數據都是一致的,直接執行 show master status 查看日志坐標。

show master status;

Replication主從復制機制原理是什么

字段含義:

  • File : 從哪個日志文件開始推送日志文件

  • Position : 從哪個位置開始推送日志

  • Binlog_Ignore_DB : 指定不需要同步的數據庫

  1. 恢復主庫的寫操作:

unlock tables;


slave

  • 導入備份數據

mysql -uroot -p < /data/all_db.sql

  1. 在 slave 端配置文件中,配置如下內容

  • mysql服務端ID,唯一

  • server-id=2

  • 指定binlog日志

  • log-bin=/var/lib/mysql/mysqlbin

其他配置

  • binlog_format = mixed

  • log-slave-updates = 0(控制 slave 上的更新是否寫入二進制日志,默認為0;若 slave 只作為從服務器,則不必啟用;若 slave 作為其他服務器的 master,則需啟用,啟用時需和 log-bin、binlog-format 一起使用,這樣 slave 從主庫讀取日志并重做,然后記錄到自己的二進制日志中;)

  • relay-log = mysql-relay-bin(設置中繼日志文件基本名)

  • relay-log-index = mysql-relay-bin.index(設置中繼日志索引文件名)

  • read-only = 1(設置 slave 為只讀,但具有super權限的用戶仍然可寫)

  • slave_net_timeout = 10(設置網絡超時時間,即多長時間測試一下主從是否連接,默認為3600秒,即1小時,這個值在生產環境過大,我們將其修改為10秒,即若主從中斷10秒,則觸發重新連接動作。)

  1. 執行完畢之后,需要重啟Mysql

service mysql restart;

  1. 執行如下指令 :

change master to
master_host='192.168.2.21',
master_user='repl',
master_password='repl',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=120;

指定當前從庫對應的主庫的IP地址,用戶名,密碼,從哪個日志文件開始的那個位置開始同步推送日志

  1. 開啟同步操作

  • start slave;

  • show slave status;

Replication主從復制機制原理是什么

可以看到圖中顯示出來的:IO線程和SQL線程都處于運行狀態:

  • Slave_IO_Running此進程負責 slave 從 master 上讀取 binlog 日志,并寫入 slave 上的中繼日志

  • Slave_SQL_Running此進程負責讀取并執行中繼日志中的 binlog 日志

這兩個進程的狀態需全部為 YES,只要有一個為 NO,則復制就會停止。當 Relay_Master_Log_File = Master_Log_File 且 Read_Master_Log_Pos = Exec_Master_Log_Pos 時,則表明 slave 和 master 處于完全同步的狀態

  1. 停止同步操作

stop slave;

驗證同步操作

  1. 在主庫中創建數據庫,創建表,并插入數據 :

create database db01;
user db01;
create table user
(
    id   int(11)     not null auto_increment,
    name varchar(50) not null,
    sex  varchar(1),
    primary key (id)
) engine = innodb
  default charset = utf8;

insert into user(id, name, sex)
values (null, 'Tom', '1');
insert into user(id, name, sex)
values (null, 'Trigger', '0');
insert into user(id, name, sex)
values (null, 'Dawn', '1');
  1. 在從庫中查詢數據,進行驗證 :

  • 在從庫中,可以查看到剛才創建的數據庫: Replication主從復制機制原理是什么

  • 在該數據庫中,查詢user表中的數據: Replication主從復制機制原理是什么

到此,相信大家對“Replication主從復制機制原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

横峰县| 蓝田县| 英吉沙县| 资源县| 东方市| 龙泉市| 红桥区| 龙陵县| 舟山市| 灵武市| 景德镇市| 玉山县| 康马县| 石楼县| 溆浦县| 黄平县| 吕梁市| 通化县| 庆云县| 霍山县| 鸡西市| 商水县| 宁波市| 济源市| 惠来县| 灯塔市| 彭泽县| 兰考县| 沐川县| 恩平市| 偏关县| 紫金县| 河间市| 龙胜| 丰县| 班玛县| 资溪县| 舟曲县| 淮北市| 乐昌市| 习水县|