基於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 個例項,所以全部只能是主節點,無法體現叢集主從關係