1. 程式人生 > >基於mysqldump搭建gtid主從

基於mysqldump搭建gtid主從

在實現mysql主從架構的過程中,可以使用基於mysqldump方式來構建主從。mysqldump在備份的過程中已經產生了GTID的相關資訊,即這些GTID可以跳過,對於未跳過的GTID則有IO執行緒複製到從伺服器,由SQL執行緒進行執行。本文主要演示mysqldump在GTID模式下搭建mysql主從。

一、GTID新增從庫的方法

1.如果master所有的binlog還在,安裝slave後,直接change master 到master
原理是直接獲取master所有的gtid並執行
優點是簡單
缺點是如果binlog太多,資料完全同步需要的時間較長,並且需要master一開始就啟用了GTID
總結:適用於master也是新建不久的情況

2.通過master或者其它slave的mysqldump備份搭建新的slave.
原理:備份時獲取master的資料和這些資料對應的GTID,在Slave端跳過備份包含的GTID
優點是可以避免第一種方法中的不足
缺點操作相對複雜
總結:適用於擁有較大資料集的情況

3、percona xtrabackup
基於xtrabackup備份檔案xtrabackup_binlog_info包含了GTID資訊
做從庫恢復後,需要手工設定:
set
@@GLOBAL.GTID_PURGED='c8d960f1-83ca-11e5-a8eb-000c29ea831c:1-745497';
恢復後,執行change master to 缺點操作相對複雜 總結:適用於擁有較大資料集的情況

二、演示從庫搭建

1、演示環境
mysql> system cat /etc/redhat-release
CentOS release 6.7 (Final)
mysql> show variables like 'version';
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| version | 5.7.12-log | +---------------+------------+ 主伺服器:192.168.1.245:3306 server_id : 245 從伺服器:192.168.1.247:3306 server_id : 247 --在主庫端建立複製使用者 mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY '123456'; 2、直接使用change master(針對本文第一部分,第1小點情形) 此處省略基於gtid配置的引數描述,具體可以參考:配置MySQL GTID 主從複製 在從伺服器端直接change master,如下: SLAVE> show variables like 'server_id'; +---------------+-------+
| Variable_name | Value | +---------------+-------+ | server_id | 247 | +---------------+-------+ Slave> CHANGE MASTER TO -> MASTER_HOST='192.168.1.245', -> MASTER_USER='repl', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3306, -> MASTER_AUTO_POSITION = 1; Query OK, 0 rows affected, 2 warnings (0.12 sec) Slave> start slave; Query OK, 0 rows affected (0.01 sec) Slave> start slave; Query OK, 0 rows affected (0.01 sec) Slave> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.245 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: node3-binlog.000001 Read_Master_Log_Pos: 457 Relay_Log_File: node5-relay-bin.000002 Relay_Log_Pos: 676 Relay_Master_Log_File: node3-binlog.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ............... --主伺服器端操作如下 Master> create database tempdb; Query OK, 1 row affected (0.02 sec) Master> use tempdb Database changed Master> create table t1(id int,ename varchar(20)); Query OK, 0 rows affected (0.09 sec) Master> insert into t1 values(1,'leshami'); Query OK, 1 row affected (0.08 sec) --從伺服器端驗證 Slave> select * from tempdb.t1; +------+---------+ | id | ename | +------+---------+ | 1 | leshami | +------+---------+ 1 row in set (0.01 sec) 3、基於mysqldump搭建gtid從庫 --準備環境,從庫端執行 Slave> stop slave; --停止重庫 Query OK, 0 rows affected (0.01 sec) Slave> reset slave all; --重置主從配置資訊 Query OK, 0 rows affected (0.02 sec) --準備環境,主庫端執行 Master> source sakila-db/sakila-schema.sql --匯入mysql自帶的sakila資料庫 Master> source sakila-db/sakila-data.sql --填充資料 --使用mysqldump匯出資料庫 # mysqldump --all-databases --single-transaction --triggers --routines --events \ > --host=localhost --port=3306 --user=root [email protected] >/tmp/alldb.sql --匯出的檔案中已經包含了GTID_PURGED的資訊 # grep GTID_PURGED /tmp/alldb.sql SET @@GLOBAL.GTID_PURGED='78336cdc-8cfb-11e6-ba9f-000c29328504:1-38'; --將備份檔案copy到從伺服器 # scp /tmp/alldb.sql 192.168.1.247:/tmp -- 執行reset master,重置從伺服器上的binlog Slave> reset master; Query OK, 0 rows affected (0.03 sec) Slave> source /tmp/alldb.sql Slave> show databases; --此時tempdb已產生 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | tempdb | +--------------------+ --執行change master Slave> CHANGE MASTER TO -> MASTER_HOST='192.168.1.245', -> MASTER_USER='repl', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3306, -> MASTER_AUTO_POSITION = 1; Query OK, 0 rows affected, 2 warnings (0.06 sec) Slave> start slave; Query OK, 0 rows affected (0.00 sec) Slave> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.245 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: node3-binlog.000001 Read_Master_Log_Pos: 25637 Relay_Log_File: node5-relay-bin.000002 Relay_Log_Pos: 423 Relay_Master_Log_File: node3-binlog.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes --主庫端執行一些事務 Master> alter table tempdb.t1 modify ename varchar(50); Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0 Master> insert into tempdb.t1 values(2,'http://blog.csdn.net/leshami'); Query OK, 1 row affected (0.02 sec) --從庫端驗證結果 Slave> desc tempdb.t1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | ename | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) Slave> select * from tempdb.t1; +------+------------------------------+ | id | ename | +------+------------------------------+ | 1 | leshami | | 2 | http://blog.csdn.net/leshami | +------+------------------------------+

相關推薦

基於mysqldump搭建gtid主從

在實現mysql主從架構的過程中,可以使用基於mysqldump方式來構建主從。mysqldump在備份的過程中已經產生了GTID的相關資訊,即這些GTID可以跳過,對於未跳過的GTID則有IO執行緒複製到從伺服器,由SQL執行緒進行執行。本文主要演示my

MySQL5.7配置GTID主從---搭建GTID主從

ria lan 導出表 ack channel 說明 其中 添加 需要 準備說明: master:192.168.10.100 slave:192.168.10.101 一、配置GTID參數 配置文件均為/etc/my.cnf Master參數配置: gtid-mode

基於Docker搭建MySQL主從復制

效果 重啟 conn chang eve iter cli 配置 bin 摘要: 本篇博文相對簡單,因為是初次使用Docker,MySQL的主從復制之前也在Centos環境下搭建過,但是也忘的也差不多了,因此本次嘗試在Docker中搭建。 本篇博文相對簡單,因為是初次使

基於bind搭建DNS主從

red 語法錯誤 directory 冗余 錯誤 chan transfer ria eve 使用bind的主從復制功能可以實現的功能:提供冗余,避免單點故障;均衡負載查詢需求,從而提高系統可用性。 一、安裝 #bind-chroot 負責DNS安全作用,將bind

基於Docker搭建MySQL主從複製

搭建環境Centos 7.2 64位MySQL 5.7.13Docker 1.13.1接下來,我們將會在一臺伺服器上安裝docker,並使用docker執行三個MySQL容器,分別為一主兩從。安裝docker執行命令[root@VM_0_17_centos ~]# yum install docker如果有提

基於Kubernetes搭建MySQL主從叢集

願你,忠於自己,活得像自己。清單:NameVersionCentOS7Kubernetes1.9.0Docker17.09.1-ceMySQL5.7前言令我始料不及的出差活動中,開始接觸Kubernetes並被要求搭建基於此的MySQL主從叢集,由於筆者在Linux、Kubernetes等方面都是小白,故此展

基於docker搭建mysql主從+haproxy負載均衡

    使用容器對於部署來說省了不少事情,容器也有利於自己做各種分散式的架構實驗。這裡說一下使用docker搭建mysql主從以及通過haproxy做從庫的負載均衡。    一、mysql主從主節點    1、建立使用者,授權create user 'repl'@'172.2

通過 mysqldump 搭建基於 gtid MySQL 5.7 主從復制

glibc binlog lex tar.gz size read enc nlog trigge 安裝主從 MySQL 5.7 # 主 MySQL5.7 useradd mysql /sbin/nologin cd /usr/local tar -xvf mysql-5.

Mariadb 10.2.8版本GTID主從環境搭建以及切換

mas 從庫 ica ack relay_log mys repo oba 數據庫 1.首先搭建主從 主環境:192.168.1.117 從環境:192.168.1.123 a.首先以二進制包的形式安裝好MariaDB (忽略不計) b.配置環境的變量 通配 [mysqld

CentOS6.8下MySQL5.6.40基於GTID主從及多線程復制

GTID 復制 mysql大綱 一 GTID簡介 二 環境準備 三 數據庫的安裝 四 基於GTID主從配置步驟 五 驗證GTID復制功能 一 GTID簡介 GTID(Global Transaction ID)是對於一個已提交事務的編號,並且是一個全局唯一的編號。GTID實際上是由UUID+TID組成的。

mysql 5.7 基於GTID 主從同步的1236故障處理(其它事務故障等同)

其它 top 處理 set tid gtid stop eve 1-1 登錄從庫 stop slave; 查看執行事務 show slave status\G Retrieved_Gtid_Set: ee3bdb44-f6a1-11e7-b194-005056a35fd4

使用innobackupex基於從庫搭建mysql主從架構

oot word info conf over found upgrade datadir 參數 使用innobackupex基於從庫搭建mysql主從架構 現有的架構是一主一從,版本為Mysql5.6.37。實施要求是:利用從庫,搭建第二個從庫,版本為5.7.21 1、備

配置MYSQL基於GTID 主從復制詳細解析及步驟

spec sys tran allow ... ext mat mar 安裝 GTID的概念 全局事務標識:global transaction identifiers GTID是一個事務一一對應,並且全局唯一ID GTID在一個服務器上只執行一次,避免重復執行導致數據混

MySQL5.7基於mysqldump主從複製

1建立賬號 建立用於複製的賬號 GRANT REPLICATION SLAVE ON . TO ‘repl’@’192.168.1.%’ IDENTIFIED BY PASSWORD ‘repl4salve’; 建立用於監控的賬號 grant repl

mysql主從複製,基於GTID主從複製,並行複製,半同步複製

複製方式: 主–從複製(A-B一主一從或者A-BC一主多從) 基於GTID複製 非同步複製 半同步複製 複製原理: Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句 主從複製的原理其實就是把主伺服器上的bin日

MySQL5.7安裝+基於GTID主從複製+並行複製+增強半同步複製+讀寫分離+M-S-S架構(聯級複製)

實驗環境: Centos7.2 角色 主機IP server_id 資料狀態 Proxysql 192.168.148.62 nul

運維筆記36 mysql的一主多從模型(原始主從複製,基於GTID主從複製)

概述: mysql的主從複製是十分經典的一個應用,但是主從之間總會有資料一致性(data consistency )的問題,一般情況從庫會落後主庫幾個小時,而且在傳統一主多從(mysql5.6之前)的模型中當master down掉後,我們不只是需要將一個sl

MySQL5.7主從複製,基於GTID主從複製、半同步、組複製、全同步解析

一、主從複製 1.環境 系統:redhat6.5 防火牆:保持關閉 selinux=disabled mysql主機:server1 172.25.32.4/24 mysql從機:server2 172.25.32.5/24 2.MySQL

基於Dokcer搭建Redis叢集搭建主從叢集)

最近陸陸續續有不少園友加我好友諮詢 redis 叢集搭建的問題,我覺得一定是之前寫的這篇 《基於Docker的Redis叢集搭建》 文章有問題了,所以我花了幾分鐘瀏覽之前的文章總結了下面幾個問題: redis 數量太少,只建立了 3 個例項; 由於只有 3 個例項,所以全部只能是主節點,無法體現叢集主從關係

基於Dokcer搭建Redis叢集(主從叢集)

最近陸陸續續有不少園友加我好友諮詢 redis 叢集搭建的問題,我覺得一定是之前寫的這篇 《基於Docker的Redis叢集搭建》 文章有問題了,所以我花了幾分鐘瀏覽之前的文章總結了下面幾個問題: redis 數量太少,只建立了 3 個例項; 由於只有 3 個例項,所以全部只能是主節點,無法體現叢集主從關係