-
XI .MySQL 复制全解析 Part 11 使用xtrabackup建立MySQL复制
tutorial11
-
-
Attachments
-
Changes
-
View Source
-
View
## 实验环境
此次实验的环境如下
- MySQL 5.7.25
- Redhat 6.10
- 操作系统账号:mysql
- 数据库复制账号:repl
- 复制格式:基于行的复制
| IP地址 |主从关系|复制账号 |复制格式 |
| --- | --- | --- | --- |
| 11.12.14.29 | 主库 | repl |Row-Based |
| 11.12.14.30| 从库(半同步)| repl |Row-Based|
这节我们的内容为MySQL的复制,MySQL复制有两种形式
- 基于二进制日志文件位置
- 基于GTID
前面我们已经说完了两种形式的搭建方式,其中备份数据库使用的是mysqldump工具
如果碰到非常大数据库,使用mysqldump进行备份还原是很缓慢的,这时可以使用xtrabackup进行备份和还原
针对xtrabackup我们已经在上一期中说过了,有兴趣的可以去了解
本节内容只针对需要修改的阶段进行说明,其他阶段不变
## 1. 备份主库阶段
这里我们通过xtrabackup工具进行备份,而不是使用mysqldump
```
innobackupex -S /oradata/data/mysql/data/mysql.sock --user=backup --password=123456 /oradata/data/mysql/xtra
```
备份完成在备份目录下有xtrabackup_binlog_info文件
[image:667 size:orig]
该文件有所需的二进制文件位置及GTID信息
## 2. 拷贝备份文件至备库
```
scp -r /oradata/data/mysql/xtra/2019-06-26_15-03-50 root@11.12.14.30:/oradata/data/mysql/xtra/
```
```
chown -R mysql:mysql /oradata/data/mysql/xtra/2019-06-26_15-03-50
```
## 3.还原从库阶段
这里我们使用xtrabackup工具进行还原,而不是使用mysqldump
```
innobackupex --apply-log --use-memory=1G /oradata/data/mysql/xtra/2019-06-26_15-03-50
```
关闭数据库清空数据文件目录后执行copy-back
```
innobackupex --copy-back /oradata/data/mysql/xtra/2019-06-26_15-03-50
```
## 4. 开启同步
这里根据备份文件的xtrabackup_binlog_info文件的内容进行同步
也可通过datadir目录下的xtrabackup_info文件查看
[image:668 size:orig]
### 4.1 基于二进制文件位置
```
mysql> change master to master_host='11.12.14.29', master_user='repl', master_password='rpl',master_log_file='mysql-bin.000002',master_log_pos= 185333118;
```
```
mysql > start slave;
```
### 4.2 基于GTID的复制
```
mysql> reset master;
```
```
mysql>set @@GLOBAL.GTID_PURGED='e99ae99a-811d-11e9-9ca2-0050568cef02:1-59387'
```
```
mysql> change master to master_host='11.12.14.29', master_user='repl', master_password='rpl',master_auto_position = 1;
```
```
mysql> start slave
```
## 5. 参考资料
[http://www.zhaibibei.cn/mysql/tutorial/](http://www.zhaibibei.cn/mysql/tutorial/)