`
wb284551926
  • 浏览: 556586 次
文章分类
社区版块
存档分类
最新评论

MySQL双Master配置的方法详解(转载)

 
阅读更多
本篇文章是对MySQL双Master配置进行了详细的分析介绍,需要的朋友参考下
 
 
刚刚抽空做了一下MYSQL 的主主同步。
把步骤写下来,至于会出现的什么问题,以后随时更新。这里我同步的数据库是TEST
1、环境描述。
主机:192.168.0.231(A)
主机:192.168.0.232(B)
MYSQL 版本为5.1.21
2、授权用户。
A:
mysql> grant replication slave,file on *.* to 'repl1'@'192.168.0.232' identified
 by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
B:
mysql> grant replication slave,file on *.* to 'repl2'@'192.168.0.231' identified
 by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
然后都停止MYSQL 服务器。

3、配置文件。
在两个机器上的my.cnf里面都开启二进制日志 。
A:
user = mysql
log-bin=mysql-bin
server-id       = 1
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1

B:
user = mysql
log-bin=mysql-bin
server-id       = 2
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
至于这些参数的说明具体看手册。
红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。
紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步 。
4、重新启动MYSQL服务器。
在A和B上执行相同的步骤
[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe &
[1] 4264
[root@localhost ~]# 071213 14:53:20 mysqld_safe Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
/usr/local/mysql/bin/mysqld_safe: line 366: [: -eq: unary operator expected
071213 14:53:20 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

5、进入MYSQL的SHELL。
A:
mysql> flush tables with read lock\G
Query OK, 0 rows affected (0.00 sec)

mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000007
Position: 528
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)

B:
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000004
Position: 595
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
然后备份自己的数据,保持两个机器的数据一致。
方法很多。完了后看下一步。
6、在各自机器上执行CHANGE MASTER TO命令。
A:
mysql> change master to
    -> master_host='192.168.0.232',
    -> master_user='repl2',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000004',
    -> master_log_pos=595;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)


B:
mysql> change master to
    -> master_host='192.168.0.231',
    -> master_user='repl1',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000007',
    -> master_log_pos=528;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

7、查看各自机器上的IO进程和 SLAVE进程是否都开启。
A:

mysql> show processlist\G
*************************** 1. row ***************************
Id: 2
User: repl
Host: 192.168.0.232:54475
db: NULL
Command: Binlog Dump
Time: 1590
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
*************************** 2. row ***************************
Id: 3
User: system user
Host: 
db: NULL
Command: Connect
Time: 1350
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 4
User: system user
Host: 
db: NULL
Command: Connect
Time: 1149
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
*************************** 4. row ***************************
Id: 5
User: root
Host: localhost
db: test
Command: Query
Time: 0
State: NULL
Info: show processlist
4 rows in set (0.00 sec)

B:

mysql> show processlist\G
*************************** 1. row ***************************
Id: 1
User: system user
Host: 
db: NULL
Command: Connect
Time: 2130
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host: 
db: NULL
Command: Connect
Time: 1223
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
*************************** 3. row ***************************
Id: 4
User: root
Host: localhost
db: test
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 4. row ***************************
Id: 5
User: repl2
Host: 192.168.0.231:50718
db: NULL
Command: Binlog Dump
Time: 1398
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
4 rows in set (0.00 sec)

如果红色部分没有出现,检查DATA目录下的错误文件。

8、释放掉各自的锁,然后进行插数据测试。
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

插入之前两个机器表的对比:
A:

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t11_innodb     | 
| t22            | 
+----------------+
B:

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t11_innodb     | 
| t22            | 
+----------------+
从A机器上进行插入
A:
mysql> create table t11_replicas
    -> (id int not null auto_increment primary key,
    -> str varchar(255) not null) engine myisam;
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t11_replicas(str) values
    -> ('This is a master to master test table');
Query OK, 1 row affected (0.01 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t11_innodb     | 
| t11_replicas   | 
| t22            | 
+----------------+
3 rows in set (0.00 sec)

mysql> select * from t11_replicas;
+----+---------------------------------------+
| id | str                                   |
+----+---------------------------------------+
|  1 | This is a master to master test table | 
+----+---------------------------------------+
1 row in set (0.00 sec)


现在来看B机器:

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t11_innodb     | 
| t11_replicas   | 
| t22            | 
+----------------+
3 rows in set (0.00 sec)

mysql> select * from t11_replicas;
+----+---------------------------------------+
| id | str                                   |
+----+---------------------------------------+
|  1 | This is a master to master test table | 
+----+---------------------------------------+
1 row in set (0.00 sec)

现在反过来从B机器上插入数据:
B:

mysql> insert into t11_replicas(str) values('This is a test 2');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t11_replicas;
+----+---------------------------------------+
| id | str                                   |
+----+---------------------------------------+
|  1 | This is a master to master test table | 
|  2 | This is a test 2                      | 
+----+---------------------------------------+
2 rows in set (0.00 sec)
我们来看A
A:
mysql> select * from t11_replicas;
+----+---------------------------------------+
| id | str                                   |
+----+---------------------------------------+
|  1 | This is a master to master test table | 
|  2 | This is a test 2                      | 
+----+---------------------------------------+
2 rows in set (0.00 sec)

好了。现在两个表互相为MASTER。
 
原文地址:http://www.jb51.net/article/38657.htm
分享到:
评论

相关推荐

    MySQL双Master配置的方法详解

    MySQL双Master配置的方法详解,希望对大家有所帮助!谢谢大家!

    Mysql-MHA配置详解.pdf

    根据所提供的文件内容,我们将详细介绍MHA(Master High Availability)在MySQL环境中的配置要点和知识点。 ### MHA简介 MHA(Master High Availability)是一个开源的MySQL高可用程序,专注于为MySQL主从复制架构...

    Mysql HA 配置方法—masterslave模式

    ### MySQL HA 配置方法 — Master/Slave 模式 #### 概述 在 OpenStack 架构下,所有组件通常依赖于一个中心化的 MySQL 数据库。这种设计虽然简化了数据库管理,但也引入了一个明显的单点故障问题。一旦 MySQL 服务...

    mysql主从同步及canal配置详解.docx

    MySQL 主从同步及 Canal 配置详解 MySQL 主从同步是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器上,以保证数据的一致性和高可用性。该技术主要基于 binlog 技术,下面将详细介绍 MySQL 主从同步的...

    基于Mycat的MySQL主从读写分离配置详解与示例

    ### 基于Mycat的MySQL主从读写分离配置详解与示例 #### 一、概述 在高并发的互联网应用场景下,单一数据库往往难以承受大量的读写请求,因此,采用主从架构实现读写分离是提高系统稳定性和响应速度的有效方法之一...

    Mysql主从配置详解

    ### MySQL主从配置详解 #### 一、MySQL主从配置概述 MySQL的主从复制机制是一种数据同步方式,主要用于实现数据库的数据备份与高可用性。通过设置一个或多个从服务器来复制主服务器上的数据更新操作,可以有效分散...

    mysql5.7 主从配置

    MySQL 5.7 主从配置详解 MySQL 5.7 主从配置是指在两个或多个 MySQL 服务器之间实现数据的实时同步复制,主服务器作为数据的写入入口,slave 服务器作为数据的读取入口。这种配置可以提高数据库的高可用性和读取...

    MySQL主从配置详解.pdf

    MySQL的主从复制是一种数据库同步技术,它允许数据从一个主数据库服务器(Master)复制到一个或多个从数据库服务器(Slave)。主从复制是一种异步复制过程,主要基于MySQL的二进制日志(Binary Log)实现。主服务器...

    MySQL主从同步配置图文详解(案例).pdf

    接着,为Master和Slave分别设定不同的数据库密码,例如`mysqlmaster`和`mysqlslave`。授权远程登录是必要的步骤,允许从服务器连接到主服务器,这可以通过GRANT ALL PRIVILEGES语句实现,指定数据库、表、用户和远程...

    mysql主从库配置

    ### MySQL 主从库配置详解 #### 一、MySQL 安装与环境变量设置 在进行 MySQL 主从库配置之前,我们需要确保已经正确安装了 MySQL,并设置了相应的环境变量。以下是具体的步骤: 1. **下载 MySQL 免安装版**: - ...

    MySQL主从同步与读写分离配置图文详解

    ### MySQL主从同步与读写分离配置详解 #### 一、实验目的 在现代的生产环境中,单一的MySQL服务器往往无法满足对数据处理的安全性、高可用性和高并发的需求。因此,采用**主从同步(Master-Slave Replication)**...

    Mysql双服务器互为主从和读写分离配置

    ### MySQL 双服务器互为主从与读写分离配置详解 #### 一、基础知识与预备工作 **MySQL 主从复制机制**是一种数据复制技术,通过它可以让一个MySQL服务器(主服务器)的数据自动同步到另一个或多个MySQL服务器(从...

    MySQL数据库双活同步复制方案详解.pdf

    MySQL数据库双活同步复制方案是为了实现数据库的高可用性和数据一致性,确保在主数据库出现故障时,能够无缝切换到备用数据库,保持业务连续性。以下将详细解释几种常见的双活同步复制策略。 **1. 基于MySQL原生...

    mysql同步,双向同步

    MySQL双向同步配置详解 MySQL同步是指将多个数据库服务器之间的数据保持实时同步的过程。这种技术可以应用于分布式系统、数据备份、灾难恢复等场景。在这个资源中,我们将详细介绍如何配置 MySQL 双向同步。 MySQL...

    Mysql5.1.7以上版本主从同步配置方法

    本文将深入探讨Mysql 5.1.7及以上版本的主从双向同步配置方法,为数据库管理员提供一份详尽的指南。 ### Mysql主从同步基本原理 在Mysql的主从复制模型中,主服务器(Master)负责写入操作,而从服务器(Slave)...

    mysql主主从配置

    ### MySQL主主从配置详解 #### 一、概念与架构 MySQL主主从配置是一种高可用性和负载均衡的实现方式,通过将数据同步到多个主服务器,并由这些主服务器向从服务器分发数据来实现。这种配置下,任何一台主服务器都...

    mysql双主带双从

    ### MySQL双主带双从架构详解与搭建步骤 在高可用性和数据冗余需求日益增长的背景下,MySQL的双主带双从(Multi-Master with Slave Replication)架构成为了一种有效的解决方案。此架构不仅提高了数据库系统的可用...

    MySQL读写分离配置图文详解(案例).pdf

    本文将详细介绍如何配置MySQL的读写分离,以案例的形式进行阐述。 首先,理解读写分离的基本原理:在数据库系统中,读操作通常比写操作更为频繁,读写分离就是将读操作和写操作分配到不同的数据库实例上,通常主库...

Global site tag (gtag.js) - Google Analytics