您的位置:首页 > 数据库 > MySQL

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

2012-02-23 16:42 405 查看
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 rep@'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 'backup@192.168.1.x: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 ............
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息