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 安装虚拟机

双击虚拟机安装包。

 

 

2.1.2 创建新的虚拟机

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

2.1.3 配置Ubuntu环境

点击编辑虚拟机设置

选择一个镜像文件

等待安装。。。

2.1.4 安装数据库服务

右击打开终端

安装vim服务

安装MySQL服务

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

2.1.5 配置IP地址

1)sudo vim /etc/network/interfaces

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

2)重启网络

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

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

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

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

 

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

主机1.10   ping    虚拟机 1.101

虚拟机1.101    ping  主机1.10

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

 

2.2  配置主从同步

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

1)主库masterA

在[mysqld]下配置

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

重启数据库

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

数据库登录  mysql -u root -p

创建复制用户

账号:masterbackup

密码:masterbackup

从库IP:192.168.1.201

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

2)从库masterB

在[mysqld]下

登录从库

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

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

启动线程

查看从库状态

至此,看到图中的两个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地址

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值