复制的基本原则
slave 会从 master 读取 binlog 来进行数据同步
MySQL复制过程分为三步:
- master 将改变记录到二进制日志 (binary log). 这些记录过程叫做 二进制日志时间,
- slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
- slave 重做中继日志中的时间,将改变应用到自己的数据库中。MySQL 复制是一步的且串行化的。
复制的基本原则
每个 slave 只有一个 master 每个 slave 只能有一个唯一的服务器ID 每个 master 可以有多个 slave
复制的最大问题
延迟
一主一从常见配置
mysql 版本一致且后台以服务运行 主从都配置在 [mysqld] 节点下,都是小写
主库修改 my.ini 配置文件
- [必须] 主机服务器唯一 ID
- server-id=1
- [必须] 启用二进制日志
- log-bin = 自己的本地的路径/mysqlbin
- log-bin=D:/devsoft/mysql5.7/data/mysqlbin
- [可选] 启用错误日志
- log-err = 自己的本地的路径/mysqlerr
- log-err=D:/devsoft/mysql5.7/data/mysqlerr
- [可选] 根目录
- basedir = "自己本地路径"
- basedir = "D:/devsoft/mysql5.7/"
- [可选] 临时目录
- tempdir = "自己本地路径"
- tempdir = "D:/devsoft/mysql5.7/"
- [可选] 数据目录
- datadir = "自己本地路径/data"
- datadir = "D:/devsoft/mysql5.7/data"
- read-only = 0
- 主机读写都可以
- [可选] 设置不要复制的数据库
- binlog-ignore-db=mysq
- [可选]设置需要复制的数据库
- binlog-do-db=需要复制的主数据库名字
从库修改 my.conf 配置文件
- [必须] 主机服务器唯一 ID
- [可选] 启用二进制日志
因修改过配置文件,请主机 + 从机都重启后台 mysql 服务 主机从机关闭防火墙 windows 手动关闭
liunx service iptables stop
在 Windows 及其上建立账户并授权 slave
grant replication slave on *.* to 'zhangsan'@'从库IP' identified by '123456'; flush privileges;
查询 master 状态 show master status;
记录 File 和 Postition 值
执行完此步骤后再操作数主服务器 MySQL , 防止主服务器状态值变化
在 LIunx 上配置需要复制的主机
CHANGE MASTER TO MASTER_HOST='你的 IP' MASTER_USER=‘zhangsan’ MASTER_PASSWORD='123456' MASTER_LOG_FILE='mysqlbin.具体数字', MASTER_LOG_POS=具体值;
启动从服务其复制功能
start slave
show slave status\G
- Slave_IO_Running: Yes
- Slave_IO_Running: NO
- 如果上面的两个参数都是 : Yes 说明配置成功!!
主机新建库、新建表、insert 记录、从机复制 如何重启从服务器的复制
stop slave