欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL主从复制

程序员文章站 2024-03-21 08:10:52
...

1、复制解决的问题

  • 数据分布
    可以在不同的地理位置来分布数据备份,如不同的数据中心。
  • 负载均衡
    通过MySQL复制可以将读操作分布到多个服务器上,实现对读密集型应用的优化,且实现方便。如DNS轮询(将一个机器名指向多个IP地址),将负载分配到不同的MySQL服务器上。
  • 备份
    对于备份来说,复制是一项很有意义的技术补充,但复制既不是备份也不能取代备份。
  • 高可用性和故障切换
    避免MySQL单点失败,快速切换缩短宕机时间。
  • MySQL升级测试
    使用更高版本的MySQL作为备库,实现MySQL升级。

2、复制的基本原理

slave会从master 读取 binlog 来进行数据同步

MySQL主从复制

MySQL复制过程分成三步:

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

3、复制的基本原则

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

4、复制的最大问题

有网络延时

5、一主一从常见配置

1、 mysql版本一致且后台以服务运行,主从主机在一个网段;

2、 主从都配置在[mysqld]节点下,都是小写;

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

  1. 【必须】主服务器唯一ID:server-id=1
  2. 【必须】启用二进制日志:log-bin=C:/ProgramData/MySQL/MySQL Server 5.6/data/mysqlbin
  3. 【可选】启用错误日志:log-err=C:/ProgramData/MySQL/MySQL Server 5.6/data/mysqlerr
  4. 【可选】根目录:basedir=”C:/ProgramData/MySQL/MySQL Server 5.6/”
  5. 【可选】临时目录:tmpdir=”C:/ProgramData/MySQL/MySQL Server 5.6/”
  6. 【可选】数据目录:datadir=”C:/ProgramData/MySQL/MySQL Server 5.6/Data”
  7. 表示主机,可读可写:read-only=0
  8. 【可选】设置不要复制的数据库:binlog-ignore-db=mysql
  9. 【可选】设置需要复制的数据库:binlog-do-db=需要复制的主数据库名字

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

  1. 【必须】从服务器 唯一ID
  2. 【可选】启用二进制日志:log-bin=mysql-bin

5、因修改过配置文件,请重启 主机和从机 的mysql服务;
MySQL主从复制
MySQL主从复制

6、主机从机都关闭防火墙;

windows 手动关闭;
linux :service iptables stop

7、在Windows主机上建立账户并授权slave;

GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'从机IP' IDENTIFIED by '123456';
flush privileges; #刷新权限

② 查询master 状态,得到File(要复制的二进制文件名) 和Position(复制的起始位置) 的值:

show master status;

MySQL主从复制

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

① 此处MASTER_LOG_FILE 和MASTER_LOG_POS 要配置的值分别为上面File 和 Position的值。

GRANT MASTER TO MASTER_HOST='主服务器IP',
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.数字',MASTER_LOG_POS=具体值;

② 启动从服务器复制功能:

start slave;

③ 查看slave 状态:

show slave status;

确保:
MySQL主从复制

9、主机新建库、新建表、insert记录,从机自动复制;

10、如何停止从服务复制功能。

stop slave;