mysql master master_如何设置MySQL主主(Master-Master )复制

MySQL Master-Slave复制是在主服务器完成更改后立即设置从服务器进行更新。但是如果在从属服务器上进行了任何更改,它将不会更新Master。本篇文章将介绍在MySQL服务器之间设置Master-Master复制。

8646a9455c81994b96a165400411e043.png

在此设置中,如果在任一服务器上进行的任何更改将都在另一台服务器上更新。

设置细节:Master-1: 192.168.1.15

Master-2: 192.168.1.16

Database: mydb

步骤1:设置MySQL Master-1服务器

编辑MySQL配置文件并在[mysqld]部分下添加以下代码。# vim /etc/my.cnf[mysqld]

log-bin=mysql-bin

binlog-do-db=mydb

server-id=1

重启MySQL服务器以使更改生效。# service mysqld restart

在Master-1服务器上创建一个具有REPLICATION SLAVE权限的mysql帐户,复制客户端将连接到master。mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword';

mysql> FLUSH PRIVILEGES;

所有表上都有block write语句,因此备份后不能进行任何更改。mysql> use mydb;

mysql> FLUSH TABLES WITH READ LOCK;

使用以下命令检查当前二进制日志文件名(File)和当前偏移量(Position)值。mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000003 | 332 | mydb | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

上面的输出显示当前的二进制文件使用的是mysql-bin.000003,偏移值为332。记下这些值,以便在下一步中在master-2服务器上使用。

备份数据库并将其复制到另一个mysql服务器。# mysqldump -u root -p mydb > mydb.sql

# scp mydb.sql 192.168.1.16:/opt/

完成备份后,从表中删除READ LOCK,以便进行更改。mysql> UNLOCK TABLES;

步骤2:设置MySQL Master-2服务器

编辑mysql Master-2配置文件并在[mysqld]部分下添加以下值。#vim /etc/my.cnf

[mysqld]

log-bin = mysql-bin

binlog-do-db = mydb

server-id = 1

server-id始终为非零数值。这些值永远不会与其他主服务器或从服务器相似。

重启MySQL服务器,如果已配置复制,请在启动时使用-skip-slave-start,不要立即连接到主服务器。#service mysqld restart

恢复从主服务器获取的数据库备份。#mysql -u root -p mydb

在Master-1服务器上创建一个具有REPLICATION SLAVE权限的mysql帐户,复制客户端将连接到master。mysql> GRANT REPLICATION SLAVE ON *.*''repl_user'@'%'IDENTIFIED BY'secretpassword';

mysql> FLUSH PRIVILEGES;

使用以下命令检查当前二进制日志文件名(File)和当前偏移量(Position)值。mysql > SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 | 847 | mydb | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

上面的输出显示当前二进制文件使用mysql-bin.000001,偏移值为847。记下这些值以在步骤3中使用。

使用以下命令在从属服务器上设置选项值。mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.15',

- > MASTER_USER ='repl_user',

- > MASTER_PASSWORD ='secretpassword',

- > MASTER_LOG_FILE ='mysql-bin.000003',

- > MASTER_LOG_POS = 332;

步骤3:完成MySQL Master-1的安装

登录MySQL Master-1服务器并执行以下命令。mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.16',

MASTER_USER ='repl_user',

MASTER_PASSWORD ='secretpassword',

MASTER_LOG_FILE ='mysql-bin.000001',

MASTER_LOG_POS = 847;

步骤4:在两台服务器上启动SLAVE

在两台服务器上执行以下命令以启动复制从属进程。mysql> SLAVE START;

MySQL Master-Master Replication已在您的系统和工作模式下成功配置。要测试复制是否正常,请在任一服务器上进行更改,并检查更改是否反映在其他服务器上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值