推薦學習: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是連續的沒有空洞的,保證資料的一致性,零遺失。
其主要設定如下:
[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=12.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@'192.168.1.7' identified by "c2xhdmV1c2Vy";
(2)、在slave上設定
stop slave; SET GLOBAL gtid_purged="c5b5ffe7-ce66-11e7-9a19-00163e00013d:1-515758"; CHANGE MASTER TO MASTER_HOST='192.168.1.6',MASTER_PORT=3306,MASTER_USER='slaveuser',MASTER_PASSWORD='c2xhdmV1c2Vy',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中文網其他相關文章!

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。

MySQL適合初學者,因為:1)易於安裝和配置,2)有豐富的學習資源,3)SQL語法直觀,4)工具支持強大。儘管如此,初學者需克服數據庫設計、查詢優化、安全管理和數據備份等挑戰。

是的,sqlisaprogramminglanguges pecialized fordatamanage.1)它具有焦點,focusingonwhattoachieveratherthanhow.2)sqlisessential forquerying forquerying,插入,更新,更新,和detletingdatainrelationalDatabases.3)

ACID屬性包括原子性、一致性、隔離性和持久性,是數據庫設計的基石。 1.原子性確保事務要么完全成功,要么完全失敗。 2.一致性保證數據庫在事務前後保持一致狀態。 3.隔離性確保事務之間互不干擾。 4.持久性確保事務提交後數據永久保存。

MySQL既是數據庫管理系統(DBMS),也與編程語言緊密相關。 1)作為DBMS,MySQL用於存儲、組織和檢索數據,優化索引可提高查詢性能。 2)通過SQL與編程語言結合,嵌入在如Python中,使用ORM工具如SQLAlchemy可簡化操作。 3)性能優化包括索引、查詢、緩存、分庫分錶和事務管理。

MySQL使用SQL命令管理數據。 1.基本命令包括SELECT、INSERT、UPDATE和DELETE。 2.高級用法涉及JOIN、子查詢和聚合函數。 3.常見錯誤有語法、邏輯和性能問題。 4.優化技巧包括使用索引、避免SELECT*和使用LIMIT。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

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

Dreamweaver Mac版
視覺化網頁開發工具