尚硅谷-MySql-高级思维导图:思维导图(mmap+HTML格式)
1. 基本原理
- MySQL 的复制是异步的、串行化的
1. 三步骤
- 主机(master) 将 改变 记录到二进制日志(binary log)。这些记录过程叫二进制日志事件(binary log events)
- 从机(slave) 从 主机(master)读取 binlog ,并拷贝到它的中继日志中(relay log)
- 从机(slave)重做中继日志中的事件,将改变应用到自己的数据库中
- 复制的原则 :
- MySQL 的复制是异步的、串行化的
- 主机只能有一台,从机可以多台
- 每一个 从机 只能有一个唯一的 服务器ID
- 从机 从接入点开始复制,不会从头复制
- 最大的问题 : 延时(毫秒级)(所以插入数据后,不能马上读,要过一段时间)
2. 主从机配置
1. 主从机上 MySQL 版本一致,且后台以服务运行
2. 主从都配置在 mysqld 节点下,都是小写
3. 修改 my.ini(主机) 配置文件
- 提醒:配置前,最好备份一下 my.ini 配置文件,便于恢复
-
主服务器 id(必须)
server-id=1
-
启用二进制日志(必须)
- 建议:创建一个新的目录,最好不和 mysql 混在一起
log-bin=(自己本地的路径)/data/mysqlbin # 例如 log-bin=D:/devSoft/MySQL5.5/data/mysqlbin
-
启用错误日志(可选)
log-err=(自己本地的路径)/data/mysqlerr
-
根目录(可选)
basedir="自己本地的路径"
-
临时目录(可选)
tmpdir="自己本地的路径"
-
数据目录(可选)
datadir="自己本地的路径/Data/"
-
read-only=0
-
设置不要复制的数据库(可选)
binlog-ignore-db=mysql
-
设置需要复制的数据库(可选)
- 注意: 这里这个数据库,先不要创建,先写上名字,等到主从数据库都搭建完毕后,在创建
binlog-do-db=(需要复制的主数据库名)
-
设置binlog格式
binlog_formal=STATEMENT(默认)
- 补充:笔试面试会考,需要背
- STATEMENT:会在 日志文件 中记录所有的写操作的 SQL,如果语句中有函数,例如now(),输出当前时间,由于有延时,所以会造成主从复制不一致,没有办法解决
- ROW:在 日志 中记录,每一行的改变,虽然解决主从复制不一致,但是对表中大部分数据进行更新时,效率太低
- MIXED:判断 SQL 语句中有没有函数,如果没有函数,就使用 STATEMENT 格式,若有函数,就使用 ROW 格式,但是只要出现系统变量,也会出现主从复制不一致
4. 修改 (从机) 配置文件
- 从服务器唯一id(必须)
server-id=2
- 启用二进制日志(可选)
5. 重启 主从机 的 MySQL 服务
- 注意 : 如果 重启时一直显示 “正在启动”,表示 配置文件配置错误,使用备份恢复,重配
6. 主从机 都关闭防火墙
- Windows 手动关闭
- Linux 虚拟机 : service iptables stop 或者 systemctl stop firewalld
7. 在主机上建立账户并授权 slave
-
给从机 授权、名字、密码
# 从机数据库ip 可以直接写 % ,表示所有远程用户 GRANT REPLICATION SLAVE ON *.* TO 'slave200806'@'从机数据库ip【%】' IDENTIFIED BY '123456';
-
Subtopic;
-
刷新
flush privileges;
-
查询主机状态
show master status;
- 记录下 File 和 Position 的值
-
执行完此操作后不要再操作主服务器 MySQL,防止主服务器状态值变化
8. 在 Linux 从机上配置需要复制的主机
-
给从机 授权、名字、密码
# 注意:主机地址要和从机地址在一个网段,即前三个字段要一样,第四个字段为 1 CHANGE MASTER TO MASTER_HOST='主机 IP', MASTER_USER='slave200806', MASTER_PASSWORD='123456', # 从什么文件的,什么位置开始备份 MASTER_LOG_FILE='前面要记住的 File值', MASTER_LOG_POS=前面要记住的 Position值;
-
启动从服务器复制功能
start slave;
-
查看配置结果
show slave status\G;
- 如果以下两项为 Yes 表示配置成功
- Slave_IO_Running
- Slave_SQL_Running
- 如果以下两项为 Yes 表示配置成功
9. 主机新建库、新建表、插入数据,从机复制
10. 停止从服务复制功能
stop slave;
11. 重新配置主从机设置
reset master;
- 注意:重新配置需要
- 先停止服务
- 再重新配置,即 stop slave; -> reset master;
- 然后回到 ”从机配置“ 的第一步
12. 如果配置失败
- 检查有没有关闭防火墙
- 检查 主机状态 中的 File 和 Position 字段的值有没有变化