实现MySQL主从同步

什么是mysql主从同步

当主库(master)的数据发生变化的时候,会实时的同步到从库(slave)。

主从同步有什么好处

  1. 数据备份
  2. 容错,高可用
  3. 水平扩展数据库的负载能力、
  4. 主数据库出现问题,可以切换到从数据库。
  5. 可以进行数据库层面的读写分离。

主从同步的原理

MySQL 主从复制是基于主服务器在二进制日志跟踪所有对数据库的更改。如果要进行复制,必须在主服务器上启用二进制日志。从服务器连接到主服务器并获取主服务器已经记录到日志的数据,从服务器接收从那时发生起的任何更新,并在主机上执行相同的更新。

从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。

配置主库服务器

打开/etc/my.cnf配置文件,进行如下:

[mysqld]

# log-bin 打开二进制日志功能.                                                                               
# 在复制(replication)配置中,作为master主服务器必须打开此项;如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志. 
# [必须]启用二进制日志   
log-bin=/usr/local/bin/lnmp/logs/binlog

# 此值在master和slave上都需要设置.
# 在master-slave架构中,每台机器节点都需要有唯一的server-id,数值位于1到2^32-1之间;如果在双主复制结构中没有设置ID的话就会导致循环同步问题
# 【必须】服务器唯一ID,默认是1
server-id=1

# 需要开启生成二进制日志记录相关配置,配置在需要被复制的服务器上,即:master
# 指定对名称为test_db的数据库记录二进制日志
binlog-do-db = mindoc_db

# 指定不对名称为mysql的数据库记录二进制日志
# binlog-ignore-db = mysql

# 指定不对名称为information_schema的数据库记录二进制日志
# binlog-ignore-db = information_schema

# binlog日志格式,mysql默认采用,如果从服务器slave有别的slave要复制那么该slave也需要这一项 
binlog_format = mixed

# 超过7天的binlog删除 
expire_logs_days = 7

重启主服务器,查看主库配置状态

show master status

获取主数据库此刻数据坐标,用于主从启动后,复制数据的起始位置,获取到这个值后,主数据库就不能再有数据的修改操作。

配置从库服务器

打开/etc/my.cnf配置文件,进行如下:

[mysqld]
# 必须配置,且要比主服务器大
server-id=11

# 从库服务器可以不配
# log-bin=/usr/local/bin/lnmp/logs/binlo

# replicate-do-db 需要做复制的数据库,如果复制多个数据库,重复设置这选项即可master上不需要此项,slave上需要 
# 复制名称为test_db的数据库
replicate-do-db = mindoc_db

# replicate-ignore-db 不需要复制的数据库,如果要忽略复制多个数据库,重复设置这个选项即可  
# replicate-ignore-db = mysql #不需要(忽略)复制名称为mysql的数据库   

执行同步命令

在从库的客户端执行命令

-- 设置主服务器ip,同步账号密码,同步位置
change master to master_host='主库IP', master_port=主库端口号, master_user='主库用户名',master_password='主库密码', master_log_file='主库文件名(主库的File)',master_log_pos=参数的值与主库保持一致(Position);

-- 示例
change master to master_host='192.168.100.11', master_port=3306, master_user='root',master_password='root', master_log_file='binlog.000002',master_log_pos=9871;

说明:

  1. master_log_file:主库文件名
  2. master_log_pos:参数的值与主库保持一致

在从数据库中设置复制数据的用户、坐标等信息,在执行此操作之前需保证主从数据库现时刻数据一致,因为是从设置的坐标处开始复制。

执行完同步命令后,需要开记主从同步才能实现数据同步功能。

开启同步功能

start slave;

查看从服务器状态

show slave status;

开始启动后,查看从Mysql复制状态,其中 Slave_IO_Running、Slave_SQL_Running 两项为 YES 时,表示同步正在进行。

此时主从库的数据完全一致,如果对主库进行增删改操作,从库会自动同步进行操作。

主从取消

部署环境有时需要更换取消主从机制或者更换备机,需要将之前的主备关系解除,一般操作流程如下:

从服务流程

1、查看从服务器状态

show slave status;

2、停止从库slave

stop slave;

3、清除 slave 信息

reset slave all;

 可以能过查看从服务器状态判断是否成功。

主服务器流程

清除 master上主从信息

reset master;

修改配置后记得重启 mysql。

如果想彻底清除主从的机制,可以修改配置文件,删除主从相关的配置项,然后重启 mysql 即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野历程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值