您的位置:首页 > 数据库 > MySQL

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

2020-02-01 08:28 633 查看

一、主从同复制原理

在主服务器上进行的操作,如: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=201bin-log=mysql-bin
binlog-format=mixed
...

从服务器配置:

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

三、连接

配置完之后打开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_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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
kk小源 发布了7 篇原创文章 · 获赞 0 · 访问量 78 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: