写在前面:以下内容为腾讯NEXT公开课有关课程的学习笔记。课程链接如下: https://www.bilibili.com/video/BV1oJ411z7bf?p=1
一、MySQL主从复制的特点和工作原理
1、主从复制的特点
- 异地备份数据
- 提供数据修改的回滚窗口期
- 部署高可用集群
- 实现数据库读写分离
- 不能保证主从数据库的完全同步
- 不能代替数据库备份
- 不能降低主库的写负载
2、主从复制的工作原理
二、MySQL二进制日志的作用
2、二进制日志的作用
- 记录所有对数据库中数据的修改操作
- 用于数据库的增量备份和基于时间点的恢复
- 用于实现MySQL主从复制
3、二进制日志的格式
1)基于SQL段的格式(–binlog-format=STATEMENT)
特点:
- 日志中记录的就是修改数据时所使用的的SQL语句
- 在主从复制环境中,从数据库重新执行相应的SQL语句以完成数据同步
- 日志记录相对来说较少
读取:
mysqlbinlog --start-datetime="[start-time]" --stop-datetime="[stop-time]" Binlogfile
2)基于行的二进制日志格式(–binlog-format=ROW)
特点:
- 记录对数据行所做的实际修改
- 在主从复制环境中,从数据库直接应用对数据行的修改
- 对每一行日志的修改都会有一条日志记录,所以日志量比较大
读取:
mysqlbinlog --base64-output=decode-rows -v -v --start-datetime="[start-time]" --stop-datetime="[stop-time]" Binlogfile
3)段和行混合的日志格式(–binlog-format=MIXED)
结果确定SQL存储为基于段的格式 结果非确定SQL存储为基于行的格式
三、二进制日志常用配置参数
- log-bin [=base_name][/data/sql-log/mysql-bin]
- binlog_format = [ROW | STATEMENT | MIXED]
- binlog_expire_logs_seconds = 二进制过期秒数
- binlog_row_image = [FULL | MINIMAL | NOBLOB]
- binlog_rows_query_log_events = [ON | OFF]
四、MySQL主从复制配置步骤
主数据库 | 从数据库 |
---|
开启binlog及GTID | 开启binlog及GTID(可选) | 建立同步数据库账号 | 用备份初始化从数据库数据 | 备份主数据库数据 | 配置复制链路 | 把备份文件传到从服务器 | 启动复制链路 |
五、MySQL备份
1、数据库备份在主从复制集群中的作用
用于灾难恢复,保证数据的安全性
2、数据库备份的类型
1)逻辑备份
- 通过导出数据库中的数据和数据库对象所进行的备份。
- 可用于跨数据库版本恢复
- 由于恢复时需要重新导入数据库对象所以恢复数据库所需时间较长
2)物理备份
- 通过直接备份数据库的数据文件进行的备份
- 只能在同备份版本实例相同的数据库实例上进行恢复
- 由于是直接复制数据文件所以恢复时间较短
3、命令行工具mysqldump
mysqldump -u [user] -p [passwd] --databases [db1] [db2] > backup.sql
mysqldump -u [user] -p [passwd] --all-databases > backup.sql
--master-data=[1,2] 记录备份时数据库二进制日志的偏移量
--max-allowed-packet 指定MySQL服务器最大允许的SQL包的大小
--single-transaction 在一个单独的事物中完成备份
--set-gtid-purged=OFF 不备份gtid信息
六、常见主从复制架构
1、一主一从
2、一主多从
主数据库中存在多个binlog线程,为各个从数据进行binlog文件复制。
3、级联复制
级联复制架构中存在多个主数据库,主数据库中需要维护不同的数据表,避免从数据库中出现数据冲突。
4、多主复制
主库之间需要维护不同的数据表,避免从数据库上出现数据冲突。
|