MySQL 数据同步 主主设置(互为主备)

标签: mysql 数据 同步 | 发表时间:2012-02-23 16:42 | 作者:chmo2011
出处:http://blog.csdn.net

MySQL 数据同步 主主设置(互为主备)

两台MySQL主机做为服务器:

master-1:192.168.1.66

master-2:192.168.1.68

一、创建并授权用户

这一步在每一台(主)服务器上创建一个用户,并为之授权,使它们可以互相访问彼此的数据库

在master-1上:

创建一个充许master-2来访问的用户rep,密码为rep

mysql>GRANT ALL PRIVILEGES ON *.* TO [email protected]'192.168.1.68'IDENTIFIED BY ' rep ';

在master-2上:

创建一个充许master-1来访问的用户rep密码为rep

mysql>GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.1.66' IDENTIFIED BY ' rep' ;

备注:为了操作方便,我们在两台服务器上,指定的访问权限时,设定的用户名和密码,一摸一样 


 注意一定要用 mysql –h 192.168.1.66–u rep  -prep测试,不然搞死都出现

Slave_IO_Running: No ;Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60  retries: 86400, Error_code: 1045

 

二、修改主配置文件

在MySQL的主配置文件中修改/添加如下内容:

master-1上:

[mysqld]

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
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1

 

master-2上

[mysqld]

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
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2

红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。
紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步 。

注:二都只有server-id不同和 auto-increment- offset不同

auto-increment-offset是用来设定数据库中自动增长的起点的,回为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突

replicate-do-db指定同步的数据库,我们只在两台服务器间同步test数据库

另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2

 

三、获取两台服务器的二进制日志名和偏移量

在master-1上:

mysql>show master status;

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

|File             | Position |Binlog_Do_DB | Binlog_Ignore_DB |

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

|mysql-bin.000001 |      106 |              |                  |

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

1row in set

在master-2上:

mysql>show master status;

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

|File             | Position |Binlog_Do_DB | Binlog_Ignore_DB |

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

|mysql-bin.000001 |      106 |              |                  |

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

1row in set

 

四、两台服务器互相做相应设置

在master-1上:

mysql>stopslave;

mysql>

change master to
 master_host='192.168.1.68',
 master_user='rep',
 master_password='rep',
 master_log_file=' mysql-bin.000001',
 master_log_pos=106;

在master-2上:

mysql>stopslave;

mysql>

change master to
 master_host='192.168.1.66',
 master_user='rep',
 master_password='rep',
 master_log_file=' mysql-bin.000001',
 master_log_pos=106;

五、启动slave线程

在两台主机上分别执行

mysql>START SLAVE;

六、查看slave状态

mysql>show slave status;

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

|Slave_IO_State    

| Waiting for master to send event

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

显示上述信息的时候,说明配置得很好,两台服务器,正在互相等待操作。

配置到此完成!

接下来,可以在两台服务器上,随意操作test数据库。就能看到明显的效果。

备注:这里我们默认两台服务器,test中的初始数据是相同的。不同的话,则要先从一台机子备份、拷贝

 

 如果不确定设置真确,可以用一下命令重新设置:

从服务器上删除掉所有二进制日志文件包括一个数据(data)目录下master.info文件和hostname-relay-bin开头文件

master.info::记录(record)了Mysql主服务器上日志文件和记录(record)位置连接密码(code) 


 

mysql>stop slave;

mysql>reset slave;

mysql>show slave status;

mysql> show slave status;


Empty set (0.00 sec)


mysql>change master to ............


作者:chmo2011 发表于2012-2-23 16:42:40 原文链接
阅读:7 评论:0 查看评论

相关 [mysql 数据 同步] 推荐:

同步mysql数据到hive

- - ITeye博客
地址为:http://archive.cloudera.com/cdh/3/下载相应版本,如sqoop-1.2.0-CDH3B4.tar.gz. 地址为:http://archive.cloudera.com/cdh/3/,版本可以为hadoop-0.20.2-CDH3B4.tar.gz. 3.解压 sqoop-1.2.0-CDH3B4.tar.gz ,hadoop-0.20.2-CDH3B4.tar.gz 到某目录如/home/hadoop/,解压后的目录为.

MySQL数据库设置主从同步

- - CSDN博客架构设计推荐文章
MYSQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力. 1、可以作为一种备份机制,相当于热备份. 2、可以用来做读写分离,均衡数据库负载. 1、主从数据库版本一致,建议版本5.5以上. # 日志文件名 log-bin = mysql-bin # 日志格式,建议mixed binlog_format = mixed # 主数据库端ID号 server-id = 1.

MySQL 数据同步 主主设置(互为主备)

- - CSDN博客推荐文章
MySQL 数据同步 主主设置(互为主备). 两台MySQL主机做为服务器:. 这一步在每一台(主)服务器上创建一个用户,并为之授权,使它们可以互相访问彼此的数据库. 创建一个充许master-2来访问的用户rep,密码为rep. 创建一个充许master-1来访问的用户rep密码为rep. 备注:为了操作方便,我们在两台服务器上,指定的访问权限时,设定的用户名和密码,一摸一样 .

Solr之Mysql数据库全量、增量同步-yellowcong

- - CSDN博客编程语言推荐文章
1 修改solrconfig.xml. 修改solrconfig.xml 文件. 2 创建data-config.xml. 在solrconfig.xml的同级目录下创建data-config.xml文件,配置数据库连接和Solr与mysql数据的对应关系和查询语句. 使用的是Mysql测试的,我的oracle完犊子了.

基于MySQL binlog的数据同步中间件 mbinlogmq

- - OSCHINA 社区最新软件
mbinlogmq 一个基于MySQL binlog协议的数据同步中间件 什么是mbinlogmq.

Mysql和Redis数据同步策略 - 元思 - 博客园

- -
不更新缓存是防止并发更新导致的数据不一致. 所以为了降低数据不一致的概率,不应该更新缓存,而是直接将其删除,. 然后等待下次发生cache miss时再把数据库中的数据同步到缓存. 如果先删除缓存,有一个明显的逻辑错误:考虑两个并发操作,线程A删除缓存后,线程B读该数据时会发生Cache Miss,然后从数据库中读出该数据并同步到缓存中,此时线程A更新了数据库.

JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制)

- - 企业架构 - ITeye博客
MySQL到Redis数据复制方案. 无论MySQL还是Redis,自身都带有数据同步的机制,像比较常用的 MySQL的Master/Slave模式 ,就是由Slave端分析Master的binlog来实现的,这样的数据复制其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略.

mysql 数据分离

- - 数据库 - ITeye博客
网上看到一个读写分离的帖子,感觉不错. 构建高性能web之路------mysql读写分离实战(转). 一个完整的mysql读写分离环境包括以下几个部分:. 在本次实战中,应用程序client基于c3p0连接后端的database proxy. database proxy负责管理client实际访问database的路由策略,采用开源框架amoeba.

MySQL如何实时同步数据到ES?试试这款阿里开源的神器!

- - 掘金后端本月最热
SpringBoot实战电商项目mall(40k+star)地址:. mall项目中的商品搜索功能,一直都没有做实时数据同步. 最近发现阿里巴巴开源的 canal可以把MySQL中的数据实时同步到Elasticsearch中,能很好地解决数据同步问题. 今天我们来讲讲 canal的使用,希望对大家有所帮助.

MYSQL logstash 同步数据到es的几种方案对比以及每种方案数据丢失原因分析。

- -
MYSQL logstash 同步增量数据到ES. 最近一段时间,在使用mysql通过logstash-jdbc同步数据到es,但是总是会有一定程度数据丢失. logstash-jdbc无非是通过sql遍历数据表的所有数据,然后同步到es. 对于表里面的所有字段都需要查出来然后同步到es中去. 数据同步脚本分为全量同步与增量同步.