一、如何配置MYSQL的主从复制?

1. 两台数据库服务器,IP分别为 192.168.216.128 和 192.168.216.129,在服务器上装MYSQL(我的配置版本为5.5.56)

2. 打开 192.168.216.128 服务器上的MYSQL的配置文件 /etc/my.cnf (路径根据自己服务器的情况来看),将其中的 server-id 设为1(默认为1,总之两台服务器要设置为不同的ID),然后重启MYSQL服务

3. 打开 192.168.216.129 服务器上的MYSQL的配置文件 /etc/my.cnf (路径根据自己服务器的情况来看),将其中的 server-id 设为2(默认为1),然后重启MYSQL服务

4. 设 192.168.216.128 为主服务器,那么在主服务器上加一个从服务器可以登录的用户,语句如下:

  1. GRANT REPLICATION SLAVE ON *.* TO 'sally'@'192.168.216.129' IDENTIFIED BY 'ilovesally';
    FLUSH PRIVILEGES

建好后,在192.168.216.129 服务器上执行以下语句

  1. mysql -h 192.168.216.128 -usally -pilovesally

然后试一下可不可以连上,如果可以,则正确,如果连不上,看一下什么原因,是否是防火墙的原因,如果是则去配置防火墙的规则。

5. 以上完成后在主服务器上执行以下语句,查询master的状态

  1. show master status;

可以看到以上结果,这儿只需要看 File 和 Position,其它的两个分别是白名单和黑名单,意思为同步哪几个数据库和不同步哪几个数据库,可自行根据需求进行设置。记录了前两个字段后,在从库上执行以下语句:

  1. CHANGE MASTER TO
  2. MASTER_HOST='192.168.216.128',
  3. MASTER_USER='sally',
  4. MASTER_PASSWORD='ilovesally',
  5. MASTER_LOG_FILE='mysql-bin.000020',
  6. MASTER_LOG_POS=;

6. 执行完毕后,在从库上继续执行如下语句:

  1. slave start;
  2. show slave status\G;

这样,查看从服务器的状态,如果状态中的用红线标出来两个参数的值都为YES,那证明配置已经成功,否则可以检查一下具体问题出现在什么地方。

这样,就算配置完成了。在主库中新建数据库,新建一张表,插几条数据,到从库上查询一下看是否已经同步过来。

如果失败,可以从以下几个方面去排查问题:  

1.首先试一下主从服务器相互之间是否 PING 得通

2.试一下远程连接是否正确,如果连不上,则有可能是网卡不一致防火墙没有放行 3306 端口

3.server-id 是否配成一致

4.bin-log 的信息是否正确

  

二、如何配置MYSQL的主主复制?

上面说了主从复制的配置方法,现在接着上面的配置继续,然后实现双主复制,让以上的两个服务器互为主从。

1. 在主服务器上配置 /etc/my.cnf 文件,配置如下:

  1. auto_increment_increment= #步进值auto_imcrement。一般有n台主MySQL就填n
  2. auto_increment_offset= #起始值。一般填第n台主MySQL。此时为第一台主MySQL
  3. binlog-ignore=mysql #忽略mysql库【我一般都不写】
  4. binlog-ignore=information_schema #忽略information_schema库【我一般都不写】

配置之后重启MYSQL服务

2.在从服务器上配置 /etc/my.cnf 文件,配置如下

  1. auto_increment_increment= #步进值auto_imcrement。一般有n台主MySQL就填n
  2. auto_increment_offset= #起始值。一般填第n台主MySQL。此时为第二台主MySQL
  3. binlog-ignore=mysql #忽略mysql库【我一般都不写】
  4. binlog-ignore=information_schema #忽略information_schema库【我一般都不写】

配置之后重启MYSQL服务

3. 在从服务器上添加一个主服务器可以访问的用户,命令如下:

  1. GRANT REPLICATION SLAVE ON *.* TO 'sally1'@'192.168.216.128' IDENTIFIED BY 'ilovesally';
  2. FLUSH PRIVILEGES

建好后,在192.168.216.128 服务器上执行以下语句

  1. mysql -h 192.168.216.129 -usally1 -pilovesally

如果可以连上,则进行下一步,连不上的话,参考上面进行问题排查。

4. 因为要互为主从,所以现在从服务器也是master ,所以也要查看一下状态

  1. show master status;

查到相应的信息后,在原来的主服务器上执行以下命令(因为现在它现在也是另一台的从服务器)

  1. CHANGE MASTER TO
  2. MASTER_HOST='192.168.216.129',
  3. MASTER_USER='sally1',
  4. MASTER_PASSWORD='ilovesally',
  5. MASTER_LOG_FILE='mysql-bin.000021',
  6. MASTER_LOG_POS=;

5. 执行完毕后,在原主库上继续执行如下语句:

  1. start slave;
  2. show slave status\G;

同上,如果出现如下画面,则证明配置成功。

6. 在两台服务器的MYSQL中分别进行一些建库、建表、插入、更新等操作,看一下另一台会不会进行同步,如果可以则证明主主配置成功,否则还是上面的排错方法,进行错误排查。

三、如何配置MYSQL的双主多从?

现在已经是双主配置了,但是如果要进行读写分离,那么我们要再增加N台从库,如何做呢?非常简单,按如下操作即可:

1. 新增加一台数据库服务器,192.168.216.130,数据库配置均与前两台相同

2. 确定一下要将哪一台当作自己的主服务器,我们姑且设 192.168.216.128 为主服务器

3. 在第三台服务器中编辑 /etc/my.cnf ,将其 server-id 设为 3(保证与前两个不一样即可),然后重启MYSQL服务

4. 在主服务器中,增加一条用户记录,用于当前服务器对主库对的连接,代码如下:

  1. GRANT REPLICATION SLAVE ON *.* TO 'farrow'@'192.168.216.130' IDENTIFIED BY 'ilovesally';
  2. FLUSH PRIVILEGES;

5. 在 192.168.216.130 服务器上测试是否可以连接到主库

  1. mysql -h 192.168.216.130 -ufarrow -pilovesally

如果可以连上,则可以进行下一步,否则根据上面的提示排查问题。

6. 在 192.168.216.130 服务器上查询 master 当前状态

看到相关信息后,我们执行如下操作:

  1. CHANGE MASTER TO
  2. MASTER_HOST='192.168.216.128',
  3. MASTER_USER='sally',
  4. MASTER_PASSWORD='ilovesally',
  5. MASTER_LOG_FILE='mysql-bin.000020',
  6. MASTER_LOG_POS=;

7. 执行完毕后,我们查询一下当前服务器的状态

  1. start slave;
  2. show slave status;

如果状态如下,则说明配置正确

如果此处有问题,参考上面所提排查并解决问题。

8. 此时我们在 192.168.216.128 上建库、建表、插入、更新、删除数据,在 另外两台上分别进行查看,发现均已经同步。但是如果我们在 192.168.216.129 上做相应的操作,则发现只有 192.168.216.128 上进行了相应的同步,而 192.168.216.130 上的数据并未同步。这是为什么呢?因为我们设置的主库是 192.168.216.128,所以在 192.168.216.129 进行数据操作的时候并未同步,这显然不符合我们的需求,那么,我们要怎么修改呢?非常简单,在互为主从的两台服务器的配置文件中均加入以下语句:

  1. log-slave-updates=on

加上后将两台服务器的MYSQL重启,然后再进行测试,发现数据已经可以同步了。如果要再多加一些从服务器,和以上类似,现在我们做的是双主一从,我们可以再加N台从服务器,配置也是一样的。

至此,MYSQL主从复制、主主复制、双主多从配置我们均已经搞定!

MYSQL主从复制、主主复制、双主多从配置的更多相关文章

  1. nginx+keepalived 简单实现主备和双主模式

    准备nginx和keepalived 安装nginx(自行安装) yum install nginx 安装keepalived(安装包安装总报错,yum安装能好一点) yum install keep ...

  2. mysql主从复制跳过复制错误【转】

    跳过复制错误 mysql因为binlog机制问题,有些时候会出现从库重放sql执行失败的情况,特别是旧的STATEMENT模式最容易出现这种情况(因为函数和存储过程等原因),这也是为什么强调使用mix ...

  3. linux系统mysql主主复制(双主复制)

    一.简介 在上一篇的主从复制中:http://www.cnblogs.com/lay2017/p/9043985.html 我们了解到,mysql通过master写日志,slave读取并执行日志内容从 ...

  4. 【转载】MySQL和Keepalived高可用双主复制

    服务器主机IP和虚拟浮动IP配置 RealServer A 192.168.75.133 RealServer B 192.168.75.134 VIP A 192.168.75.110 VIP B ...

  5. 基于Mysql 5.7 GTID 搭建双主Keepalived 高可用

    实验环境 CentOS 6.9 MySQL 5.7.18 Keepalived v1.2.13 拓扑图 10.180.2.161 M1 10.180.2.162 M2 10.180.2.200 VIP ...

  6. 基于 MySQL 5.6 keepalived的双主搭建

    环境介绍: 说明 IP 节点1 192.168.56.56 节点2 192.168.56.57 w_ip 192.168.56.6 安装keepalived tar -zxvf keepalived- ...

  7. MySQL集群搭建(6)-双主+keepalived高可用

    双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用. 1 概述 1.1 keepa ...

  8. haproxy+keepalived主备与双主模式配置

    Haproxy+Keepalived主备模式 主备节点设置 主备节点上各安装配置haproxy,配置内容且要相同 global log 127.0.0.1 local2 chroot /var/lib ...

  9. MySQL主从复制(异步复制与半同步复制)

    1.MySQl主从复制 原理:将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态. 过程:从库开启一个I/O线程,向主库请求Binlog日志.主节点开启一个binlog du ...

  10. MySQL主从复制之并行复制说明

    传统单线程复制说明 众所周知,MySQL在5.6版本之前,主从复制的从节点上有两个线程,分别是I/O线程和SQL线程. I/O线程负责接收二进制日志的Event写入Relay Log. SQL线程读取 ...

随机推荐

  1. Dependency Injection 筆記 (3)

    续上集.接着要来进一步了解的是 DI 的实现技术,也就是注入相依对象的方式.这里介绍的依赖注入方式,又称为「穷人的 DI」(poor man’s DI),因为这些用法都与特定 DI 工具无关,亦即不使 ...

  2. springmvc拦截请求

    springmvc.xml <!--拦截请求 --> <mvc:interceptors> <mvc:interceptor> <!-- 要拦截的请求类型 / ...

  3. 多进程界面开发-Qt试玩儿

    目录 一.概述 二.效果展示 三.使用方法 1.启动外部进程 2.创建Qt窗口 3.加入到主进程布局 四.嵌入NotePad 五.调用Ping命令 六.嵌入其他QWidget窗体 七.相关文章 一.概 ...

  4. valet环境PHPstorm+xdebug调试

    1.安装xdebug 2.配置xdebug zend_extension="/usr/local/Cellar/php@7.2/7.2.18/pecl/20170718/xdebug.so& ...

  5. html更改弹窗样式(原创,转载需声明)

    代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

  6. 🔨揭秘vue-sfc-cli: 组件研发利器

    前言 本文将揭示vue单文件组件的工具 vue-sfc-cli 的内涵,说明它是如何在整个组件研发流程中提升效率的. 本文可以看成是 

  7. MySQL metalock的一些技巧(写大于读的案例,以及获得锁的顺序)

    前言:元数据锁不是锁定数据,而是锁定描述数据的元数据信息.就像很多装修工人(工作线程)在室内(对象上)装修(操作),不能有其他工人(线程)把屋子拆了(表删除了). MySQL 为了数据一致性使用元数据 ...

  8. Codeforces 781A:Andryusha and Colored Balloons(DFS染色)

    http://codeforces.com/contest/782/problem/C 题意:给一棵树染最少的颜色,使得相邻距离为2的点都是不同的颜色,问最少是多少种颜色并输出每个点的颜色. 思路:比 ...

  9. Python3 列表的基本操作

    列表索引和切片 和字符串一样,也有索引和切片,只不过切出来的内容是列表. 索引的下标从0开始. lst= ["海上钢琴师", "奥特曼", "舌尖3& ...

  10. 关于ffmpeg /iis 8.5 服务器下,视频截取第一帧参数配置

    ffmpeg 视频截取第一帧参数配置: 网站找了很多资料,但是都不能满足要求,然后自己写下解决过程. 首先看自己PHP 版本,安全选项里面 php5.4  跟php5.6 是不一样的.去除里面的sys ...