mysql主主同步id一样_MySQL主主同步

环境介绍:

CentOS-6.7  64位

Master1:Blog-MySQL-1  192.168.133.128

Master2:Blog-MySQL-2  192.168.133.132

MySQL 版本 5.5.33 二进制包安装

检查两台机器的实验环境是否符合要求。并保证可以正常登陆 mysql

以其中一台截图为例:

hostname

ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d: –f2

mysql –V

cat /etc/redhat-release

uname -a

85137024106b4f3ad18d967516a5ccee.png

fccea29506527ac76328215464d840e4.png

以上算是双主环境搭建的准备工作吧,接下来编辑 Master 1 的 my.cnf 文件

为了方便查阅还是跟之前一样,先过滤一下 # , $  开头的行吧

cat /etc/my.cnf | grep -v ^# | grep -v ^$ > tmp.log

cat tmp.log > /etc/my.cnf

48b7241d61ba6a0c250d98c52f8548f2.png

Master 1 的  my.cnf 文件中的 [mysqld] 中添加以下字段

vim /etc/my.cnf

server-id  = 1

log-bin = mysql-bin

auto_increment_increment = 2

auto_increment_offset     = 1

log-slave-updates

expire_logs_days = 7

skip-name-resolve

lower_case_table_names=1

fea4e228f3736ccfb00d12e2fe18cd0d.png

以上参数

auto_increment_increment = 2           #自增ID的间隔,如 1 3 5 间隔为 2

auto_increment_offset     = 1                #ID的初始位置

修改配置文件需要重启 Master 1 的数据库

/etc/init.d/mysqld restart

e9c8607bf2772269fd4cbe81d8418d2d.png

登录 Master 1 的 mysql

mysql -uroot -p123456

b34b298e275fb5623e2465e84eb23537.png

在 Master 1 上创建同步到 Master 2 上的账号

grant replication slave on *.* to yuci@'%' identified by '123456';

flush privileges;

006d9c1148b64d685239f7cdd5111fac.png

检查刚才刚才的操作

select user,host from mysql.user;

show grants for yuci@'%';

a55cf5d4da7ab5375e9b1b631e5759d6.png

继续操作 Master1 锁表,查看 binlog 文件及 pos 位置节点

flush table with read lock;

show master status;

04ad2b70cab92aa56b48228497beb090.png

新打开一个窗口,将 Master 1 的数据库文件导出,通过 scp 命令传递给 Master 2 上

mysqldump -uroot -p123456 --events -A -B > /root/test.sql

scp test.sqlroot@192.168.133.132:/root

yes

220d524142693dcc8ec17d53c32cd6f5.png

解表 Master 1

unlock tables;

d19fb97d5b193765eaa8c7a040fec31e.png

登陆到 Master 2 上,现将刚才的数据库 test.sql 导入

mysql -uroot -p123456 < test.sql

764e23f22671f389bb418c715ca6c567.png

编辑 Master 2 的 my.cnf 文件,跟上面的操作一样,只需要注意的是 server-id 和 offset

cat /etc/my.cnf | grep -v ^# | grep -v ^$ > tmp.log

cat tmp.log > /etc/my.cnf

e7b22318afba46fd149fd0366de267ce.png

server-id       = 2

log-bin = mysql-bin

auto_increment_increment = 2

auto_increment_offset    = 2

log-slave-updates

expire_logs_days = 7

skip-name-resolve

lower_case_table_names=1

7e2630330b2ee1a975259547f7617b98.png

修改配置文件后别忘重启 mysql

/etc/init.d/mysqld restart

808e57b8b7e92161c8760f8152b81285.png

登陆 Master 2 的 mysql 数据库

mysql -uroot –p123456

CHANGE MASTER TO

MASTER_HOST='192.168.133.128',

MASTER_PORT=3306,

MASTER_USER='yuci',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=332;

091f9ed6a0e21d3f729145c333d0a8b6.png

查看两个IO SQL连个线程是否连接成功

start slave;

show slave status\G

4afbd50abe455e7943d4841929d5a819.png

在 Master 2 上创建一个用于同步到 Master 1 的账号,刷新并检查

其实就是两台 mysql 分别创建两个账号,账号不能重复

grant replication slave on *.* to yuci1@'%' identified by '123456';

flush privileges;

select user,host from mysql.user;

show grants foryuci@'%';

a0091c67d50332a82cecc17963ff9383.png

查看 Master 2 的 binlog 文件和 pos 号

show master status;

601f3737d729257ee70e08779ee584ab.png

返回 Master 1 上,设置账号同步参数

输入时注意每个参数,别把它和之前的账号,用户名,密码搞反了

CHANGE MASTER TO

MASTER_HOST='192.168.133.132',

MASTER_PORT=3306,

MASTER_USER='yuci1',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=333;

19bb0310956fa82dec058dd386895814.png

在 Master 1 上启动 slave,并查看

start slave;

show slave status\G

338ac822be38beb0fc3725b82f0119e1.png

到此为止,双主的环境就算是搭建完成了,接下来测试一下。

先在 Master 1 上创建数据库 yucitest1

create database yucitest1;

show databases;

848b73568a68772ce39f366fec876059.png

在 Master 2 上查看所有数据库,可以看到刚才创建的 yucitest1 ,将其删除,创建 yucitest2 数据库

show databases;

drop database yucitest1;

create database yucitest2;

9db07ef8fa72fb0a8afe7f100ba850a0.png

返回 Master 1 看到 yucitest2 ,环境搭建成功

show databases;

59030405d53c3bbfeef2c1f47bfd0bf1.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值