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     

MySQL主主同步

MySQL主主同步

 

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

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

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

cat tmp.log > /etc/my.cnf

MySQL主主同步

 

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

MySQL主主同步

以上参数

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

auto_increment_offset     = 1                #ID的初始位置

 

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

/etc/init.d/mysqld restart     

MySQL主主同步

 

登录 Master 1 的 mysql

mysql -uroot -p123456     

MySQL主主同步

 

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

grant replication slave on *.* to [email protected]'%' identified by '123456';     

flush privileges; 

MySQL主主同步

 

检查刚才刚才的操作

select user,host from mysql.user;

show grants for [email protected]'%';

MySQL主主同步

 

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

flush table with read lock;

show master status;      

MySQL主主同步

 

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

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

scp test.sql [email protected]:/root

yes

MySQL主主同步

 

解表 Master 1

unlock tables;

MySQL主主同步

 

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

mysql -uroot -p123456 < test.sql

MySQL主主同步

 

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

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

cat tmp.log > /etc/my.cnf     

MySQL主主同步

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     

MySQL主主同步

 

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

/etc/init.d/mysqld restart

MySQL主主同步

 

登陆 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;

MySQL主主同步

 

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

start slave;

show slave status\G

MySQL主主同步

 

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

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

grant replication slave on *.* to [email protected]'%' identified by '123456';

flush privileges;

select user,host from mysql.user;     

show grants for [email protected]'%';

MySQL主主同步

 

查看 Master 2 的 binlog 文件和 pos 号

show master status;

MySQL主主同步

 

返回 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;

MySQL主主同步

 

在 Master 1 上启动 slave,并查看

start slave;

show slave status\G

MySQL主主同步

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

 

先在 Master 1 上创建数据库 yucitest1

create database yucitest1;

show databases;     

MySQL主主同步

 

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

show databases;

drop database yucitest1;     

create database yucitest2;

MySQL主主同步

 

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

show databases;

MySQL主主同步

本文转自   mlwzby   51CTO博客,原文链接:http://blog.51cto.com/aby028/1893336