第 5 章 主从复制

第 5 章 主从复制

1、复制的基本原理

复制的基本原理

slave会从master读取binlog来进行数据同步,主从复制的三步骤

  1. master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件(binary log events)
  2. slave将master的binary log events拷贝到它的中继日志(relay log)
  3. slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的

image-20200805190201268

2、复制的基本原则

  1. 每个slave只有一个master
  2. 每个slave只能有一个唯一的服务器ID
  3. 每个master可以有多个salve

3、复制最大问题

因为发生多次 IO, 存在延时问题

4、一主一从常见配置

前提:mysql 版本一致,主从机在同一网段下

ping 测试

  • Linux 中 ping Windows
[root@Heygo 桌面]# ping 10.206.207.131
PING 10.206.207.131 (10.206.207.131) 56(84) bytes of data.
64 bytes from 10.206.207.131: icmp_seq=1 ttl=128 time=1.27 ms
64 bytes from 10.206.207.131: icmp_seq=2 ttl=128 time=0.421 ms
64 bytes from 10.206.207.131: icmp_seq=3 ttl=128 time=1.12 ms
64 bytes from 10.206.207.131: icmp_seq=4 ttl=128 time=0.515 ms
^C
--- 10.206.207.131 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3719ms
rtt min/avg/max/mdev = 0.421/0.835/1.279/0.373 ms
[root@Heygo 桌面]# 

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Windows 中 ping Linux
C:\Users\Heygo>ping 192.168.152.129

正在 Ping 192.168.152.129 具有 32 字节的数据:
来自 192.168.152.129 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.152.129 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.152.129 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.152.129 的回复: 字节=32 时间<1ms TTL=64

192.168.152.129 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

主机修改 my.ini 配置文件(Windows)

主从都配置都在 [mysqld] 节点下,都是小写,以下是老师的配置文件

image-20200812191912521


以下两条为必须配置

  • 配置主机 id
server-id=1

 
 
  • 1
  • 启用二进制日志
log-bin=C:/Program Files (x86)/MySQL/MySQL Server 5.5/log-bin/mysqlbin

 
 
  • 1

以下为非必须配置

  • 启动错误日志
log-err=C:/Program Files (x86)/MySQL/MySQL Server 5.5/log-bin/mysqlerr

 
 
  • 1
  • 根目录
basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"

 
 
  • 1
  • 临时目录
tmpdir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"

 
 
  • 1
  • 数据目录
datadir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/Data/"

 
 
  • 1
  • 主机,读写都可以
read-only=0

 
 
  • 1
  • 设置不要复制的数据库
binlog-ignore-db=mysql

 
 
  • 1
  • 设置需要复制的数据
binlog-do-db=需要复制的主数据库名字

 
 
  • 1

从机修改 my.cnf 配置文件(Linux)

  • 【必须】从服务器唯一ID
server-id=2

 
 
  • 1
  • 【可选】启用二进制文件

修改配置文件后的准备工作

因修改过配置文件,主机+从机都重启 mysql 服务

  • Windows
net stop mysql
net start mysql

 
 
  • 1
  • 2
  • Linux
service mysqld restart

 
 
  • 1

主机从机都关闭防火墙

  • Windows 手动关闭防火墙
  • 关闭虚拟机 linux 防火墙
service iptables stop

 
 
  • 1

在 Windows 主机上简历账户并授权 slave

  • 创建用户, 并授权
GRANT REPLICATION SLAVE ON *.* TO '备份账号'@'从机器数据库 IP' IDENTIFIED BY '账号密码';

 
 
  • 1
GRANT REPLICATION SLAVE ON *.* TO 'Heygo'@'192.168.152.129' IDENTIFIED BY '123456';

 
 
  • 1
  • 刷新权限信息
flush privileges;

 
 
  • 1
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 
 
  • 1
  • 2
  • 查询 master 的状态,将 File 和 Position 记录下来,在启动 Slave 时需要用到这两个参数
show master status;

 
 
  • 1
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 | mysql        |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在 Linux 从机上配置需要复制的主机

  • 从机进行认证
CHANGE MASTER TO 
MASTER_HOST='主机 IP',
MASTER_USER='创建用户名',
MASTER_PASSWORD='创建的密码',
MASTER_LOG_FILE='File 名字',
MASTER_LOG_POS=Position数字;

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
CHANGE MASTER TO 
MASTER_HOST='10.206.207.131',
MASTER_USER='Heygo',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 启动从服务器复制功能
start slave;

 
 
  • 1
  • 查看从机复制功能是否启动成功:Slave_SQL_Running:Yes 和 Slave_IO_Running:Yes 说明从机连接主机成功
show slave status\G;

 
 
  • 1
  • 如何停止从服务复制功能
stop slave;

 
 
  • 1

备注

  1. 从机连不上啊。。。一直显示 Slave_IO_Running: Connecting
  2. 我 Windows 中的 mysql 版本为 5.5,Linux 中的 mysql 版本为 5.6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值