1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| (1)主库模拟数据 mysql> create database mydb; Query OK, 1 row affected (0.00 sec)
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
mysql> use mydb Database changed mysql> create table t(id int); Query OK, 0 rows affected (0.01 sec)
mysql> insert into t values (1),(2),(3); Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from mydb.t; +------+ | id | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.00 sec)
(2)备份主库数据 mysqldump -uroot -p -A -R -E --triggers --source-data=2 --single-transaction > /tmp/full.sql
注意: 这里没有加--set-gtid-purged参数,是因为--set-gtid-purged参数默认是on
(3)记录备份文件GTID信息 # more /tmp/full.sql
-- MySQL dump 10.13 Distrib 8.0.34, for Linux (x86_64) -- -- Host: localhost Database: -- ------------------------------------------------------ -- Server version 8.0.34
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!50503 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!50606 SET @OLD_INNODB_STATS_AUTO_RECALC=@@INNODB_STATS_AUTO_RECALC */; /*!50606 SET GLOBAL INNODB_STATS_AUTO_RECALC=OFF */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN; SET @@SESSION.SQL_LOG_BIN= 0;
-- -- GTID state at the beginning of the backup --
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '4aea15c3-e3a1-11ef-934f-000c29ac349c:1-5';
(4)将导出文件复制从服务器 # scp /tmp/full.sql 192.168.1.152:/tmp
(5)从数据库恢复数据 从库执行以下命令: mysql> reset master; mysql> reset replica all; mysql> source /tmp/full.sql mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.1.151', SOURCE_USER='repl', SOURCE_PASSWORD='123456', SOURCE_PORT=3306, SOURCE_AUTO_POSITION = 1; 注意: 这种方法生成的备库生成的gtid中的uuid值与主库一样,192.168.1.151为主库IP
|