MySQL主从同步和主主超详细过程

1  工作原理

所谓主从同步,即在主库中的操作可以映射到从库中,从库的数据与主库保持一致。主从同步可以理解为一个复制的过程。分为3步:

  1. 主库将操作记录写入到一个文档中(binary log,二进制日志)
  2. 从库调用I/O线程将这个文档写到自己的文档中(relay log,中继日志)
  3. 最后从库调用SQL线程将文档中的操作,反映成数据库数据

 

MySQL双主架构,即两个数据库masterA,masterB互为主从,masterA是masterB的主库,masterB又是masterA的主库。

 

2  搭建过程

2.1  操作环境

操作系统版本:Ubuntu 16.04

在两台主机上分别安装虚拟机,搭建Ubuntu,配置网络为桥接模式,并在同一网段上(例如192.168.1.X)。

2.1.1 安装虚拟机

双击虚拟机安装包。

MySQL主从同步和主主超详细过程

 

MySQL主从同步和主主超详细过程

 

MySQL主从同步和主主超详细过程

2.1.2 创建新的虚拟机

双击虚拟机VMware Workstation,创建新的虚拟机

MySQL主从同步和主主超详细过程

MySQL主从同步和主主超详细过程

MySQL主从同步和主主超详细过程

2.1.3 配置Ubuntu环境

点击编辑虚拟机设置

MySQL主从同步和主主超详细过程

选择一个镜像文件

MySQL主从同步和主主超详细过程

MySQL主从同步和主主超详细过程

MySQL主从同步和主主超详细过程

等待安装。。。

MySQL主从同步和主主超详细过程

2.1.4 安装数据库服务

右击打开终端

MySQL主从同步和主主超详细过程

安装vim服务

MySQL主从同步和主主超详细过程

安装MySQL服务

  1. 安装MySQL服务端
  2. 安装MySQL客户端
  3. 安装MySQL  C语言管理

MySQL主从同步和主主超详细过程

MySQL主从同步和主主超详细过程

2.1.5 配置IP地址

1)sudo vim /etc/network/interfaces

添加IP地址、子网掩码、网关、dns(这里设置的是南京的)

MySQL主从同步和主主超详细过程

2)重启网络

MySQL主从同步和主主超详细过程

3)在命令行中输入ifconfig,此时的IP地址还没生效,需要重启虚拟机

MySQL主从同步和主主超详细过程

可以看到,之前配置的IP地址生效了

MySQL主从同步和主主超详细过程

4)虚拟机的默认网络模式是NAT模式,需要更改成桥接模式,找到虚拟机设置,快捷键Ctrl+d.

MySQL主从同步和主主超详细过程

5)设置主机IP地址,图中有两个网络,看你所连接的网络是哪个,就配置哪个。

 

MySQL主从同步和主主超详细过程

MySQL主从同步和主主超详细过程

此时,可以查看主机和虚拟机之间是否可以ping通。需要都在一个网段中。

主机1.10   ping    虚拟机 1.101

MySQL主从同步和主主超详细过程

虚拟机1.101    ping  主机1.10

MySQL主从同步和主主超详细过程

OK,一台主机上的网络通了。然后用同样的方法,在另一台主机在配置一次。下面是我配置的网络模型,4台机器之间是可以相互ping的。

MySQL主从同步和主主超详细过程

 

2.2  配置主从同步

配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf 中,设置启动参数。

1)主库masterA

在[mysqld]下配置

MySQL主从同步和主主超详细过程

下面这个参数很重要,后面配置主主同步

MySQL主从同步和主主超详细过程

重启数据库

MySQL主从同步和主主超详细过程

进入数据库,创建从库的复制用户

数据库登录  mysql -u root -p

创建复制用户

账号:masterbackup

密码:masterbackup

从库IP:192.168.1.201

MySQL主从同步和主主超详细过程

查看主库状态,记住文件名file和偏移量position

MySQL主从同步和主主超详细过程

2)从库masterB

在[mysqld]下

MySQL主从同步和主主超详细过程

MySQL主从同步和主主超详细过程

登录从库

终止从库I/O线程和sql线程

MySQL主从同步和主主超详细过程

确定主库的IP、用户名、密码、binlog文件、binlog位置等信息

MySQL主从同步和主主超详细过程

启动线程

MySQL主从同步和主主超详细过程

查看从库状态

MySQL主从同步和主主超详细过程

至此,看到图中的两个yes表示,主从同步成功。

 

2.3  配置主主同步

将masterB作为主库,masterA作为从库,在配置一次,这样整个主主同步就完成了。

 

3  排错方法

  1. 网络是否通(互ping)
  2. 用户、密码和IP地址是否配对。

主库中,创建的是从库的复制账号,所以IP地址是从库的

从库中,连接的是主库,IP地址要写主库的,然后连接账号,密码,日志文件和偏移量是否写对。

在change master 这个语句之前要stop,之后要start

     3.  谨慎使用reset master和reset slave,这个命令会将所有的日志文件和日志索引文件删除。

以上,是我搭建主主同步中所遇到的问题。

 

4  附录

参数

描述

server-id=n

服务器的唯一标识号,不能相同

log_in=name

启用二进制日志文件

log_in_index=filename

二进制日志功能的索引文件名

binlog_ignore_db=dbname

不同步的数据库

bing-address=ipaddr

数据库的IP地址