程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL 基於GTID的復制,MYSQLGTID復制

MYSQL 基於GTID的復制,MYSQLGTID復制

編輯:MySQL綜合教程

MYSQL 基於GTID的復制,MYSQLGTID復制


1.概述

從MYSQL5.6 開始,mysql開始支持GTID復制。

基於日志點復制的缺點:

從那個二進制日志的偏移量進行增量同步,如果指定錯誤會造成遺漏或者重復,導致數據不一致。

基於GTID復制:

1.從服務器會告訴主服務器已執行的事務的GTID值。

2.主庫會告訴從哪些GTID事務沒有被執行。

同一個事務在指定的從庫執行一次。

什麼是GTID

GTID即全局事務ID,器保證為每一個在主上提交的事務在復制集群中可以生成一個唯一的ID.

GTID=source_id:transaction_id

source_id:是主庫的server UUID,在數據目錄的auto.cnf 文件中。

transaction_id: 從1開始的一個序列。

2.基於GTID復制的步驟

1.在主DB服務器上建立復制帳號。

和日志點是一樣的。

2.配置主數據庫服務器

bin_log =mysql-bin

server_id=1001

gtid_mode=on

enforce-gtid-consiste:強制事務一致性,保證事務的安全

  不能使用:

  1.create table 。。select

  2.在事務中使用create temporary table 建立臨時表,使用關聯更新事務表和非事務表。

log-slave-updates=on

在從服務器中記錄從主服務器傳過來的日志數據。

使用GTID 5.6 必須使用此參數,5.7可以不使用。

3.配置從服務器。

server_id=1002

relay_log=relay_log

gtid_mode=on

enforce-gtid-consistency

建議配置

read_only=on

保證從服務器數據安全性

master_info_reposistory=TABLE

relay_log_info_reposistory=TABLE

從服務器連接主服務器的信息和中繼日志存放咱 master_info,和relay_log中。

4.初始化從服務器數據。

mysqldump --master-data=2 -single-transaction

xtarbackup –slave-info

記錄備份時最後的事務GTID值。

導出數據

mysqldump --single-transaction --master-data=2 --triggers -routines --all-databases -uroot -p -P3308 >all2.sql

導入數據

mysql -uroot -p -P3309 < all2.sql

5.啟動基於GTID的復制

change master to master-host=’主服務IP’,

master_user=’repl’,

master_password=’password’,

master_auto_position=1

change master to MASTER_HOST='192.168.1.106',
MASTER_PORT=3308,
MASTER_USER='repl',
MASTER_PASSWORD='repl',
master_auto_position=1;

 

start slave;

show slave status \G;

image

在啟動slave時報錯。

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

解決辦法:

reset slave;重置slave

再啟動 slave

start slave;

測試同步:

1.在主庫創建一張表,插入記錄。

2.在從庫查詢驗證是否正確,經驗證配置正確。

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved