项目实战:MySQL主从复制搭建

一、背景:

在项目运行中单台数据库在数据存储、安全性和高并发方面都无法满足实际的需求,所以需要配置多台主从数据服务器,以实现主从复制,增加数据可靠性、安全性稳定性,保证系统高可用性。

二、主从复制:

主从复制简单来说就是主数据库执行sql语句,从数据库就会执行相同的sql语句,达到在主数据库执行的操作在从数据库上产生相同的效果。

基本原理:

1、主服务器master进行增、删、改等操作,sql语句将会以二进制文件的形式存放至binlog日志文件中;

2、从服务器slave通过主服务器创建的账号开启I/O进程连接上master,请求读取binlog日志文件。

主数据master接收到从数据slave的请求,根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的I/O进程

3、Slave的I/O进程接收到信息后,将接收到的日志内容依次添加到Slave端的中继日志relaylog文件的最末端,并将读取到的Master端的binlog的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master;

4、Slave的Sql进程检测到relaylog中新增加了内容后,解析relaylog新增内容(Master端的那些可执行的内容),并在自身执行。

作用:

  1. 数据容灾、备份
  2. 缓解 MySQL 主服务的压力

三、搭建过程:

数据库版本:5.7版本

首先主库和从库数据必须一致(重要),使用命令或者navicat同步都可以。

主数据库master配置

(1)创建从库同步账号

create user ‘slave‘@’从库IP’  identified by ‘密码’;
给从库账号只读权限

GRANT REPLICATION SLAVE ON *.* TO ‘slave’@’从库IP' IDENTIFIED BY 'XXXXXXX';

刷新权限
flush privileges;

(2)my.cnf的[mysqld]下增加配置

server-id=1      //[必须]服务器唯一ID,默认是1,一般取IP最后一段
log-bin=mysql-bin      //[必须]启用二进制日志

sync_binlog=1       //控制数据库的binlog刷到磁盘。0 不控制、性能最好;1 写入磁盘、性能最差、最安全
binlog-do-db=wordpress      //[可选] 设置需要同步的数据库,如果不设置将同步所有数据库
binlog_ignore_db=mysql      //[可选] 需要忽略的数据库名,多个忽略库可以用逗号拼接或者一个数据库配置一行

slave-skip-errors=all        //跳过主从库错误

(3)保存配置重启mysql服务

sevice mysqld restart

(4)进入数据库或者通过Navicat登录查看主服务状态:show master status

从数据库slave配置

(1) my.cnf的[mysqld]下增加配置

server-id=2

log-bin=mysql-bin  //如果从数据库,不需要再往其他数据库同步,可以注释掉

relay-log=slave-relay-bin #必须开启,从主数据库同步的binlog会写入到该目录下

relay-log-index=slave-relay-bin

(2)保存配置重启mysql服务

sevice mysqld restart

(3)从库关联主库(mysql上执行)

change master to master_host = 'IP',  //主库IP

master_user = 'slave',   //主从用户名

master_password = 'XXXXX', //主从用户密码

master_port = 3306, //端口

master_log_file = 'mysql-bin.000XXX’, //当前正在读取和执行的中继日志文件的名称

master_log_pos = xxx;  //在当前的主服务器二进制日志中,I/O线程已经读取的位置


(4)开启主从复制

start slave;

(5)检查状态(mysql上执行)
show slave status/G

注意:# master_log_file 和 master_log_pos值为主库上面执行show slave status/G

如果 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes,说明配置成功

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值