一、创建并授权用户
在每一台(主)服务器上创建一个用户,并为之授权,使它们可以互相访问彼此的数据库
在Server-1上:
创建一个充许Server-2来访问的用户server2,密码为:server2
mysql> GRANT REPLICATION SLAVE ON *.*
> TO ‘server2’@’192.168.0.2’ IDENTIFIED BY ‘server2’;
在Server-2上:
创建一个充许Server-1来访问的用户server1,密码为:server1
mysql> GRANT REPLICATION SLAVE ON *.*
> TO ‘server1’@’192.168.0.1’ IDENTIFIED BY ‘server1’;
编者注:最好整成同一个用户和同一个密码!!
二、修改MySQL主配置文件
在MySQL的主配置文件中修改/添加如下内容:
Server-1上:
[mysqld]
server-id = 10
log-bin = mysql-bin
replicate-do-db = mydb
auto-increment-increment = 2
# service mysqld restart
注:二者只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用来设定数据库中自动增长的起点的,因为这两台服务器都设定了同一个自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突
replicate-do-db 指定同步的数据库,我们只在两台服务器间同步mydb数据库
另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2
三、复制其中一台服务器的数据库到另外一台服务器
这一步中谁做为源数据不重要,重要的是在正式的复制(Replication)开始之前两台服务都能准确的反应彼此的数据。
我们可以先从源数据库中导出数据到备份文件,这里我们使用mysqldump命令
以Server-1上数据库为源数据库
备份数据前先锁表,保证数据一致性
mysql> FLUSH TABLES WITH READ LOCK;
> SHOW MASTER STATUS;
+—————–+————+—————-+——————–+
|File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————–+————+—————-+——————–+
|mysql-bin.000006 | 213 | | |
+—————–+————+—————-+——————–+
该结果显示,源服务器现在处于6号二进制文件的213位置
开始备份数据库
# mysqldump –user=root -p mydb > /tmp/mydb.sql
备份完毕,现在可以解锁数据库表
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
四、将备份数据导入Server-2
先在Server-2上创建一个与mydb同名的空数据库
# mysql
> CREATE DATABASE mydb;
>\q
# scp 192.168.0.1:/tmp/mydb.sql ./
# mysql -uroot -p mydb < /tmp/mydb.sql
此时,我们需要注意当前服务器的二进制日志的位置
# mysql
> LOCK TALBES WITH READ LOCK;
> SHOW MASTER STATUS;
+—————–+————+—————-+——————–+
|File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————–+————+—————-+——————–+
|mysql-bin.000001 | 106 | | |
+—————–+————+—————-+——————–+
1 row in set (0.00 sec)
> UNLOCK TABLES;
五、互相通告二进制日志位置
在Server-1上:
# mysql
> CHANGE MASTER TO
> MASTER_HOST=’192.168.0.2′,
> MASTER_USER=’server1′, //???
> MASTER_PASSWORD=’server1′,
> MASTER_LOG_FILE=’mysql-bin.000001′,
> MASTER_LOG_POS=106;
在Server-2上:
# mysql
> CHANGE MASTER TO
> MASTER_HOST=’192.168.0.1′,
> MASTER_USER=’server2′,
> MASTER_PASSWORD=’server2′,
> MASTER_LOG_FILE=’mysql-bin.000006′,
> MASTER_LOG_POS=213;
六、启动复制(Replication)功能
在两台主机上分别执行
# mysql
> START SLAVE;
配置到此完成!

MySQL主主复制3的更多相关文章

  1. mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  2. mysql数据库主从及主主复制配置演示

    实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 实验拓 ...

  3. MySQL复制环境(主从/主主)部署总结性梳理

    Mysql复制概念说明Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves) ...

  4. MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  5. MySQL主主复制

    MySQL5. 主主复制 环境如下: CentOS6.4_64 MySQL5. master1:192.168.10.11 master2:192.168.10.12 1.1 配置 master1 a ...

  6. 【MySQL】主备复制

    复制对于mysql的重要性不言而喻,mysql集群的负载均衡,读写分离和高可用都是基于复制实现.下文主要从4个方面展开,mysql的异步复制,半同步复制和并行复制,最后会简单聊下第三方复制工具.由于生 ...

  7. mysql主主复制(双主复制)配置步骤

    以前我们介绍的都是主从复制,这里给各位介绍一个双主复制了,下面都希望两个主服务器数据自动复制的话可参考一下此文章.   MySQL主主复制结构区别于主从复制结构.在主主复制结构中,两台服务器的任何一台 ...

  8. mysql主从复制 主主复制 读写分离

    首先是mysql的主从复制很简单 主主复制也就是互相主从最麻烦的最难的就是日志恢复,增量恢复什么的比较复杂 首先如果你不会安装mysql版本最好一样,或者往上的版本,因为mysql是向下兼容 请注意不 ...

  9. MYSQL的主从和主主复制模式

    一.复制介绍 MySQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录 ...

随机推荐

  1. SQL触发器中若取到null值可能引发的问题

    declare @code varchar(20), @cs varchar(20),@zc varchar(20)set @cs='('+@cs+'*'+@zc+')'print '字符'+@csi ...

  2. Class和ClassLoader的getResourceAsStream区别

    这两个方法还是略有区别的, 以前一直不加以区分,直到今天发现要写这样的代码的时候运行 错误, 才把这个问题澄清了一下. 基本上,两个都可以用于从 classpath 里面进行资源读取,  classp ...

  3. linux权限不够,sh不能用

    linux下权限不够 chmod +x 脚本命令 ./脚本命令  即可... sh startup.sh启动tomcat,出现 This file is needed to run this prog ...

  4. ghost xp 安装IIS,并配置WCF

    因要一台电脑做WCF服务的测试服务器,但只有一个台式机可能,配置就不用说了,2G内存.之前装的是win7,卡得要死.于是就想把它装回XP系统.但在网上找来找去,都是ghost xp,之前还很怕ghos ...

  5. rsync使用

    1)拷贝本地文件.当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式.     如:rsync -a  ./test.c  /backup 2)使用一个远程 ...

  6. IOS - ARC改为非ARC

    1.project -> Build settings -> Apple LLVM complier 3.0 - Language -> objective-C Automatic ...

  7. php dirname($path) 中文路径不对问题

    将$path中的\改为/ $dir=__FILE__;$dir = str_replace("\\","/", $dir);$dir=dirname($dir) ...

  8. SQL语句删除重复数据

    1.如表中没有主键,先添加自动增长主键 alter table 表名 add 列名 int identity (1,1) primary key 2.删除重复数据 delete from 表名 whe ...

  9. Runtime.getRuntime().exec()

    Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象 的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实 ...

  10. Android Stutio -- 编译报错: Error:File path too long on Windows, keep below 240

    原文:http://blog.csdn.net/qq_28195645/article/details/51556975 目录太长,解决办法: 1.将整个project移到更外层的目录,直至没有报错, ...