MySQL复制相关概念
- 主从复制:主节点将数据同步到多个从节点
- 级联复制:主节点将数据同步到一个从节点,其他的从节点在向从节点复制数据
- 同步复制:将数据从主节点全部同步到从节点时才返回给用户的复制策略叫同步复制
- 异步复制:只要数据写入到主节点就立即返回给用户同步完成
- 读写分离:在前端加一个调度器,负责将改变数据的语句和查询数据的语句分开调度,把写操作调度到主节点,读操作调度到从节点
主节点:
- dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events
从节点:
- I/O Thread:向Master请求二进制日志事件,并保存于中继日志中
- SQL Thread:从中继日志中读取日志事件,在本地完成重放
跟复制功能相关的文件:
- master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等
- relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地replay log日志的对应关系
复制架构:
- 一主一从
- 一主多从
- 主主复制
- 环状复制
- 级联复制
- 多主一从
MySQL复制的相关指令和变量总结
选项:
- log_bin 启用二进制日志,在主节点或级联复制中间的从节点必须要开启
- binlog_format=ROW 二进制日志记录方式为基于行的方式记录,强烈建议开启
- log-basename=master | slave ... 二进制日志的前缀名,不是必须向,但建议标识
- server_id = # 服务器ID,各个节点的ID必须唯一
- relay_log = relay-log 开启中继日志,并以relay-log为文件名开头,从节点开启
- relay_log_index = relay-log.index 中继日志索引文件
- log_slave_updates 作用是SQL线程重读中继日志时将改变数据的操作记录为二进制日志,在级联复制中使用
- ssl 开启ssl功能
- ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
- ssl-cert=/etc/my.cnf.d/ssl/master.crt
- ssl-key=/etc/my.cnf.d/ssl/master.key
- sync_binlog=1 每次写后立即同步二进制日志到磁盘
- innodb_flush_log_at_trx_commit=1 每次事务提交立即同步日志写磁盘
- sync_master_info=# #次事件后master.info同步到磁盘
- skip_slave_start=ON 不自动启动slave
- sync_relay_log=# #次写后同步relay log到磁盘
- sync_relay_log_info=# #次事务后同步relay-log.info到磁盘
- auto_increment_offset=1 自动增长开始点,在主主复制中使用
- auto_increment_increment=2 增长幅度
变量:
- replicate_do_db= 指定复制库的白名单
- replicate_ignore_db= 指定复制库黑名单
- replicate_do_table= 指定复制表的白名单
- replicate_ignore_table= 指定复制表的黑名单
- replicate_wild_do_table= foo%.bar% 支持通配符
-
replicate_wild_ignore_table= 指定复制的表,黑名单
-
rpl_semi_sync_slave_enabled=1 开启半同步复制,需要安装模块
指令:
- START SLAVE; 启动主从复制
- STOP SLAVE; 停止复制
- SHOW SLAVE STATUS; 查看复制状态
- Seconds_Behind_Master: 0 从服务器是否落后于主服务
- RESET SLAVE ALL; 重置从服务器的配置
- MASTER_SSL=1, 配合 CHANGE MASTER TO 使用,开启ssl加密复制
- MASTER_SSL_CA = '/etc/my.cnf.d/ssl/cacert.pem',
- MASTER_SSL_CERT = '/etc/my.cnf.d/ssl/slave.crt',
- MASTER_SSL_KEY = '/etc/my.cnf.d/ssl/slave.key';
- PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr } 删除二进制日志,谨慎操作
- SHOW MASTER STATUS 查看二进制日志状态
- SHOW BINLOG EVENTS 查看二进制日志
- SHOW BINARY LOGS 查看二进制日志
- SHOW PROCESSLIST 查看进程