目錄
一、用xtarbackup備份資料庫
1.1 優點
1.2 安裝
1.3 使用
1.3.1 普通備份
1.3.2 tar備份
1.3.3 xbstream備份
1.3.4 還原
二、基於GTID做資料同步
2.1 GTID的概念
2.2 GTID的組成
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz
登入後複製
" >
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz
登入後複製
tar zxvf /data/mysql.tar.gz -C /data/baskup
登入後複製
" >
tar zxvf /data/mysql.tar.gz -C /data/baskup
登入後複製
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup
登入後複製
" >
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup
登入後複製
more /data/backup/2018-02-08_15-03-18/xtrabackup_binlog_info
登入後複製
" >
more /data/backup/2018-02-08_15-03-18/xtrabackup_binlog_info
登入後複製
2.6 已运行经典复制mysql服务器转向GTID复制
首頁 資料庫 mysql教程 歸納整理之MySQL基於GTID主從搭建

歸納整理之MySQL基於GTID主從搭建

Aug 26, 2022 am 11:56 AM
mysql

推薦學習:mysql影片教學

#用xtarbackup來同步數據,然後基於GTID來設定主從。

一、用xtarbackup備份資料庫

1.1 優點

使用xtarbackup來做主從的前期準備是因為xtarbackup備份資料和復原資料都很快,特別適合資料量很大的資料庫備份,而且它的安裝非常的簡單,使用也很簡單....(巴拉巴拉,廢話編不出來了)。

1.2 安裝

特定版本根據自己的具體情況來選擇。就下面這幾步就安裝好了,是不是很簡單.....

# rpm -Uvh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-3.noarch.rpm
# yum list | grep percona
# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL 
# rpm -Uvh ftp://rpmfind.net/linux/epel/6/x86_64/libev-4.03-3.el6.x86_64.rpm
# yum install percona-xtrabackup –y
登入後複製

1.3 使用

1.3.1 普通備份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backupMysql/
登入後複製

1.3.2 tar備份

(1)、備份到本機

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/>/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | gzip >/data/mysql.tar.gz
登入後複製

(2)、備份到遠端

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | ssh root@192.168.1.7 \ "cat - >/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz
登入後複製

(3)、解壓縮方式

# 未经过压缩的文件解压
tar xvf mysql.tar -C /data

# 压缩过的文件解压
tar zxvf mysql.tar.gz -C /data
登入後複製

1.3.3 xbstream備份

(1)、備份到本機

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/>/data/mysql.xbstream

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ >/data/mysql_compress.xbstream
登入後複製

# (2)、備份要遠端

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/| ssh root@192.168.1.7 "xbstream -x -C /backup/stream"

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ | ssh root@192.168.1.7 "xbstream -x -C /backup/stream"
登入後複製

(3)、解壓縮方式

#### 未压缩的
xbstream -x < mysql.xbstream -C /data

#### 压缩过的
# 1、先解压xbstream
xbstream -x < mysql_compress.xbstream -C /data
# 2、再解压qp压缩格式
for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done

注:如果xtrabackup版本大于2.1.4,可以直接通过以下方式解压第二步。
innobackupex --decompress /data
登入後複製

1.3.4 還原

先將原始備份壓縮包解壓縮到一個目錄,然後執行下面語句恢復。

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /var/lib/mysql/backup/
登入後複製

附註:在做備份,解壓縮,復原的過程中可以藉助分割畫面工具,我喜歡用screen。

二、基於GTID做資料同步

2.1 GTID的概念

  • 1、全域事務識別:global transaction identifiers。
  • 2、GTID是一個事務一一對應,且全域唯一ID。
  • 3、一個GTID在一個伺服器上只會執行一次,避免重複執行導致資料混亂或主從不一致。
  • 4、GTID用來取代傳統複製方法,不再使用MASTER_LOG_FILE MASTER_LOG_POS開啟複製。而是使用MASTER_AUTO_POSTION=1的方式開始複製。
  • 5、MySQL-5.6.5開始支援的,MySQL-5.6.10後才開始完善。
  • 6、在傳統的slave端,binlog是不用開啟的,但是在GTID中slave端的binlog是必須開啟的,目的是記錄執行過的GTID(強制)。

2.2 GTID的組成

GTID = source_id:transaction_id source_id:用來辨識原始伺服器,也就是mysql伺服器唯一的的server_uuid,由於GTID會傳遞到slave,所以也可以理解為來源ID。 

transaction_id:為目前伺服器上已提交交易的一個序號,通常從1開始自增長的序列,一個數值對應一個事務。

 範例:           3E11FA47-71CA-11E1-9E33-C80AA9429562:23 前面的一串為伺服器的server_uuid,即3E11FA47-71CA336262536262963E11FA47-71CA-1362913223293630

## 2.3 GTID的原理

1、當一個事務在主庫端執行並提交時,產生GTID,一同記錄到binlog日誌中。 

2、binlog傳送到slave,並且儲存到slave的relaylog後,讀取這個GTID的這個值設定gtid_next變量,也就是告訴Slave,下一個要執行的GTID值。

 3、sql線程從relay log取得GTID,然後比較slave端的binlog是否有該GTID。 

4、如果有記錄,表示該GTID的事務已經執行,slave會忽略。

 5、如果沒有記錄,slave就會執行該GTID事務,並記錄該GTID到自身的binlog,在讀取執行事務前會先檢查其他session持有該GTID,確保不會重複執行。

 6、在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。

2.4 GTID的優點

    1、更簡單的實作failover,不用以前那樣在需要找log_file和log_pos。
  • 2、更簡單的搭建主從複製。
  • 3、比傳統的複製更安全。
  • 4、GTID是連續的沒有空洞的,保證資料的一致性,零遺失。
2.5 具體建置流程

對於GTID的配置,主要修改設定檔中與GTID特性相關的幾個重要參數,mysql版本建議mysql-5.6.5版本以上。

2.5.1 開啟主(master)Gtid

其主要設定如下:

[mysqld]
#GTID:
server_id=135                #服务器id
gtid_mode=on                 #开启gtid模式
enforce_gtid_consistency=on  #强制gtid一致性,开启后对于特定create table不被支持

#binlog
log_bin=master-binlog
log-slave-updates=1    
binlog_format=row            #强烈建议,其他格式可能造成数据不一致

#relay log
skip_slave_start=1
登入後複製

2.5.2 在master上進行資料備份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz
登入後複製

2.5.3 解壓縮備份的資料

tar zxvf /data/mysql.tar.gz -C /data/baskup
登入後複製

2.5.4 設定slave的設定檔

[mysqld]
#GTID:
gtid_mode=on
enforce_gtid_consistency=on
server_id=143

#binlog
log-bin=slave-binlog
log-slave-updates=1
binlog_format=row      #强烈建议,其他格式可能造成数据不一致

#relay log
skip_slave_start=1
登入後複製

2.5.5 復原資料

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup
登入後複製

2.5.6 取得GTID節點

more /data/backup/2018-02-08_15-03-18/xtrabackup_binlog_info
登入後複製

2.5.7 配置主從

(1)、在master上授權

grant replication slave on *.* to slaveuser@&#39;192.168.1.7&#39;  identified by "c2xhdmV1c2Vy";
登入後複製

(2)、在slave上設定

stop slave;
SET GLOBAL gtid_purged="c5b5ffe7-ce66-11e7-9a19-00163e00013d:1-515758";
CHANGE MASTER TO MASTER_HOST=&#39;192.168.1.6&#39;,MASTER_PORT=3306,MASTER_USER=&#39;slaveuser&#39;,MASTER_PASSWORD=&#39;c2xhdmV1c2Vy&#39;,MASTER_AUTO_POSITION=1;
start slave;
登入後複製

2.6 已运行经典复制mysql服务器转向GTID复制

  • a、按本文2.5.2描述配置参数文件;
  • b、所有服务器设置global.read_only参数,等待主从服务器同步完毕;  mysql> SET @@global.read_only = ON;
  • c、依次重启主从服务器;
  • d、使用change master 更新主从配置;mysql> CHANGE MASTER TO > MASTER_HOST = host,  > MASTER_PORT = port, > MASTER_USER = user,   > MASTER_PASSWORD = password,   > MASTER_AUTO_POSITION = 1;
  • e、从库开启复制  mysql> START SLAVE; f、验证主从复制

推荐学习:mysql视频教程

以上是歸納整理之MySQL基於GTID主從搭建的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

MySQL與其他編程語言:一種比較 MySQL與其他編程語言:一種比較 Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

在MySQL中解釋外鍵的目的。 在MySQL中解釋外鍵的目的。 Apr 25, 2025 am 12:17 AM

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

比較和對比Mysql和Mariadb。 比較和對比Mysql和Mariadb。 Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要區別在於性能、功能和許可證:1.MySQL由Oracle開發,MariaDB是其分支。 2.MariaDB在高負載環境中性能可能更好。 3.MariaDB提供了更多的存儲引擎和功能。 4.MySQL採用雙重許可證,MariaDB完全開源。選擇時應考慮現有基礎設施、性能需求、功能需求和許可證成本。

MySQL:數據庫,PHPMYADMIN:管理接口 MySQL:數據庫,PHPMYADMIN:管理接口 Apr 29, 2025 am 12:44 AM

MySQL和phpMyAdmin可以通過以下步驟進行有效管理:1.創建和刪除數據庫:在phpMyAdmin中點擊幾下即可完成。 2.管理表:可以創建表、修改結構、添加索引。 3.數據操作:支持插入、更新、刪除數據和執行SQL查詢。 4.導入導出數據:支持SQL、CSV、XML等格式。 5.優化和監控:使用OPTIMIZETABLE命令優化表,並利用查詢分析器和監控工具解決性能問題。

yi框架用什麼軟件比較好 yi框架使用軟件推薦 yi框架用什麼軟件比較好 yi框架使用軟件推薦 Apr 18, 2025 pm 11:03 PM

文章首段摘要:在選擇開發 Yi 框架應用程序的軟件時,需要考慮多個因素。雖然原生移動應用程序開發工具(如 XCode 和 Android Studio)可以提供強大的控制和靈活性,但跨平台框架(如 React Native 和 Flutter)憑藉其編寫一次,即可部署到多個平台的優點而越來越受歡迎。對於剛接觸移動開發的開發者,低代碼或無代碼平台(如 AppSheet 和 Glide)可以快速輕鬆地構建應用程序。另外,雲服務提供商(如 AWS Amplify 和 Firebase)提供了全面的工具

See all articles