数据库备份
- Mysqldump:逻辑备份,热备份,全量
- xtrabackup:物理,热,全量 + 增量备份
一、 什么是 MySQL 主备
情况一:
- 客户端的业务操作,
读、写
访问的是主库 - 主库通过某种机制,将数据实时同步给备库
- 主库由于有些原因,无法正常响应客户端的请求
情况二:
- 完成主备切换
- 客户端读写,访问的是备库(此时备库升级为新主库)
数据同步
是如何实现的?
1.主从同步原理
1、在备库执行 change master 命令
,绑定主库的信息
mysql> CHANGE MASTER TO MASTER_HOST = '192.168.1.1', MASTER_USER = 'repl', MASTER_PASSWORD = 'replpassword', MASTER_PORT = 3306, MASTER_AUTO_POSITION = 1, MASTER_RETRY_COUNT = 0, MASTER_HEARTBEAT_PERIOD = 10000;
- MASTER_HOST :master主机名(或IP地址)
- MASTER_PORT :mysql实例端口号
- MASTER_USER:用户名
- MASTER_PASSWORD:密码
- MASTER_AUTO_POSITION:如果进行change master to时使用MASTER_AUTO_POSITION = 1,slave连接master将使用基于GTID的复制协议
- MASTER_RETRY_COUNT:重连次数
- MASTER_HEARTBEAT_PERIOD:复制心跳的周期
MySql 中文文档https://www.docs4dev.com/docs/zh/mysql/5.7/reference/change-master-to.html
2、备库执行 start slave
命令,备库启动两个线程:I/O thread
和 SQL thread
3、master主库,有数据更新,将此次更新的事件类型写入到主库的 binlog 文件中
4、主库会创建log dump 线程
,通知slave有数据更新
5、slave,向master节点的 log dump线程请求一份指定binlog文件位置的副本,并将请求回来的binlog
存到本地的Relay log
中继日志中
6、slave 再开启一个SQL 线程
读取Relay log
日志,解析出日志里的命令,并执行,从而保证主备库数据同步
2.mysqldump逻辑备份及恢复
全量备份
全量备份基本模式:
- 进入到mysql容器中
- 创建备份目录
- 通过mysqldump命令,执行数据库逻辑备份操作,将结果输出到 sql文件中。
主要命令如下:
# 级联创建数据备份目录
mkdir -p /data/backups/dmp
# 实现所有数据库备份
mysqldump --opt --single-transaction --master-data=2 --host=localhost --user=root --password=admin --all-databases > /data/backups/dmp/dmp1.sql
mysqldump相关参数说明:
- –opt 适用于备份大表,同时激活了-add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 命令
- –single-transaction 开启一个事务,并设置备份事务为可重复读,保持备份数据一致性
- –master-data=2 表示在备份过程中记录主库的binlog和pos点,并且在dump文件中注释改行
- –all-databases 导出所有数据库,包括mysql库