MySQL主从复制简单配置(一主多从)

一、主从同复制原理

在主服务器上进行的操作,如:insert,update,会记录在binlog文件中,从服务器就会去读这个binlog文件,解析成自己可以执行的 relaylog ,然后执行。

binlog 是很敏感的,所以在主服务器中必须创建一个 slaver 账号,然后从服务器使用这个账号来连接主服务器。

二、配置

打开 mysql 的配置文件

  1. 配置服务器id

    这么多服务器读写binlog,会很乱,所以需要为每个服务器配置一个id,一般这些服务器是在同一个局域网内的,所以一般是用ip的主机号部分作为id

    server-id=201
    
  2. 主服务器配置binlog

    # 声明二进制日志文件为mysql-bin.xxxx
    log-bin=mysql-bin
    # 二进制日志的格式,可以是 mixed(混合),row(磁盘变化),statement(语句)
    binlog-format=mixed
    

    二进制日志格式:

    row:记录磁盘的变化,适用于语句很长,但磁盘变化很小

    statement:记录执行的语句,适用于语句很短,但是磁盘变化很大

    mixed:混合使用,由系统根据语句来决定用row还是statement

  3. 从服务器配置relaylog

    relay-log=mysql-relay
    relaylog-format=mixed
    

最后配置的结果:

主服务器配置:

[mysqld]
...
server-id=201
log-bin=mysql-bin
binlog-format=mixed
...

从服务器配置:

[mysqld]
...
server-id=202
# 一般从服务器也用作备份,或者它后面又跟着从服务器,所以一般从服务器也开启binlog
log-bin=mysql-bin
binlog-format=mixed
relay-log=mysql-relay
...

三、连接

配置完之后打开mysql,

主服务器查看是否拥有master功能:

mysql> show master status;

从服务器查看是否拥有slave功能:

mysql> show slave status;
  1. 主服务器创建replication账号,并分配权限

    mysql> grant replication client, replication slave on *.* to repl@'192.168.1.*' identified by 'repl';
    
    ymsql> flush privileges;
    
  2. 从服务器用账号连接

    mysql> change master to 
        -> master_host='192.168.201',
        -> master_port=3306,
        -> master_user='repl',
        -> master_password='repl',
        -> master_log_file='mysql-bin.0001',
        -> master_log_pos=0;
    # 开启slave    
    mysql> start slave;
    # 查看是否开启成功
    mysql> show slave status \G;   
    

    注意:

    master_log_file: 表示主服务器正在使用哪个binlog文件

    master_log_pos: 表示主服务器的binlog的指针现在在哪里

    在主服务器中用 show master status; 指令查看这两个值

四、其他

主主复制、读写分离

读写分离:

  1. 在php层面来控制,判断执行的是什么语句,比如:select则发送到从服务器,insert、update则发送到主服务器

  2. 在mysql层控制,使用集群中间件,比如官方的mysql_proxy,还有国产的中间件amoeba

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值