MySQL主从复制

一,概述

  主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做》,从而使得从库和主库的数据保持同步。

  MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。

MySQL 复制的优点主要包含以下三个方面:

  1,主库出现问题,可以快速切换到从库提供服务。

  2,实现读写分离,降低主库的访问压力。

  3,可以在从库中执行备份,以避免备份期间影响主库服务。

二,原理

从上图来看,复制分成三步:

  1,Master 主库在事务提交时,会把数据库变更记录在二进制日志文件 BinLog 中。

  2,从库读取主库的二进制日志文件 BinLog,写入到从库的中继日志 Relay Log。

  3,slave 重做中继日志中的事件,将改变反映它自己的数据。

三,搭建

  两台服务器:192.168.2.128(主) 和 192.168.2.130(从)

  主服务器配置:

    1,安装 MySQL 服务

    2,开放 3306 端口或者直接关闭并禁用防火墙。

    3,修改配置文件 /etc/my.cnf

1 # mysql 服务ID,保证整个集群环境中唯一,取值范围:1 - 2^32 - 1,默认为 12 server-id=1
3 # 是否只读,1 代表只读,0 代表读写
4 read-only=0
5 # 忽略的数据,指不需要同步的数据库
6 # binlog-ignore-db=mysql
7 # 指定需要同步的数据库
8 # binlog-do-db=db01

    4,重启 MySQL 服务

    5,登录 MySQL,创建远程连接的账号,并授予主从复制权限

1 # 创建 mscopy 用户,并设置密码,该用户可在任意主机连接 MySQL 服务
2 create user 'mscopy'@'%' identified with mysql_native_password by '123456';
3 # 为 'mscopy'@'%' 用户分配主从复制权限
4 grant replication slave on *.* to 'mscopy'@'%';

    6,通过指令,查看二进制坐标

1 show master status;

  从服务器配置:

    1,安装 MySQL 服务

    2,开放 3306 端口或者直接关闭并禁用防火墙

    3,修改配置文件 /etc/my.cnf

1 # mysql 服务ID,保证整个集群环境中唯一,取值范围:1 - 2^32 - 1,和主库不一样即可。
2 server-id=2
3 # 是否只读,1 代表只读,0 代表读写
4 read-only=1

    4,重启 MySQL 服务

    5,登录 MySQL,设置从库配置

1 # MySQL8.0.23
2 change replication source to source_host='xxx.xxx.xxx.xxx',source_user='xxx',source_password='xxx',source_log_file='xxx',source_log_pos=xxx;
3 # MySQL8.0.23之前
4 change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
参数名 含义 8.0.23之前
source_host 主库 IP 地址 master_host
source_user 连接主库的用户名 master_user
source_password 连接主库的用户密码 master_password
source_log_file binlog 日志文件名 master_log_file
source_log_pos binlog 日志文件位置 master_log_pos

 

 

 

 

 

 

    6,开启同步操作

1 start replica; # 8.0.22之后
2 start slave; # 8.0.22之前

    7,查看 slave 的状态

1 show slave status\G

四,测试

  自行测试

 

posted @ 2023-06-01 17:49  ZZKZS  阅读(23)  评论(0编辑  收藏  举报
/*鼠标跟随效果*/