搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > 数据库 > MYSQL
 1         
1楼  caimeng 2007-08-28

关于mysql实现双机热备实现办法(新人新手.水平一般大家找找毛病)

 
shmilygyy 发表于 2007-1-15 12:07:00
今天才写的.做个项目要用.已经在自己家的环境中实现了.但是心里没什么底.上来看看,正好看到有朋友问这方面的问题,所以发上来参考一下,也请大家找找行病.谢谢了.我水平一般.入行不久.大家多关照.我知道mysql实现双机热备是通过同步日志实现的,这样的方法有什么不好呢?如果日志过大的话,万一master或者slave出现问题,同步会不会出现问题?

MySql数据库同步复制20060114-v1.1



一,cluster模式配置

数据库同步复制功能的设置都在mysql的设置文件中体现。主要工作原理为slave端记录并且执行master端的操作日志.mysql的配置文件(Linux下为/etc/my.cnf)



1、实施环境:

  操作系统:2台linux AS 4,完全安装.

   Mysql为本机rpm.版本为4.17

   SvrA ip:192.168.0.111

   SvrB ip:192.168.0.112

2、配置方法

1:主从模式[Master->Slave]:A->B

====step 1:配置同步的用户帐号====

Step A:SvrA上配置

Shell->service mysqld start

Shell -> mysql ?u root

  1.增加一个用户最为同步的用户帐号:

   Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.112' IDENTIFIED BY '123456';

  2.增加一个数据库作为同步数据库:

   Mysql>create database backup;

Step B:SvrB上配置

Shell->service mysqld start

Shell -> mysql ?u root

  1.增加一个用户最为同步的用户帐号:

   Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.111' IDENTIFIED BY '123456';

  2.增加一个数据库作为同步数据库:

Mysql>create database backup;

关闭MYSQL 数据库。

  ====step 2:配置Master、Slave参数====== 

主从模式:A->B SvrA为master ,SvrB为slave

1.修改SvrA 中mysql的my.cnf文件。

#vi /etc/my.cnf

在mysqld配置项中加入下面配置:

server-id=1

log-bin

binlog-do-db=backup(此处数据库名为举例,可设置多个库,根据需求在此处按此格式添加)

log_err=my-err.log

max_binlog_size=104857600  配置完后重起数据库服务。

用show master status 命令看日志情况。

mysql> show master status;

1.修改SvrB中 mysql的my.cnf文件。

#vi /etc/my.cnf

在mysqld配置项中加入下面配置:

server-id=2

master-host=192.168.0.111

master-user=backup

master-password=123456

master-port=3306

master-connect-retry=60

replicate-do-db=backup

binlog-do-db=backup



====step 3:启动数据库和数据复制====

启动SLAVE从数据库:

Shell->service mysqld start

Shell -> mysql ?u root

Mysql>slave stop; #暂停slave从master同步数据.

启动MASTER从数据库:

Shell->service mysqld start

Shell -> mysql ?u root

回到SLAVE从数据库终端:

Mysql>start slave;

设置完成,启动成功:此处最好重启mysql服务,重新启动方法:

#service mysqld restart 注:有时候会启动失败,可采用下面启动方法

#usr/bin/mysqladmin ?u root shutdown #关闭数据库

#usr/bin/mysqld_safe & #启动数据库

查看是否启动同步复制线程:

Mysql>show slave status;

| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 30 | l2-bin.000014 | 79 | l1-relay-bin.000019 | 159 | l2-bin.000014 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 159 | None | | 0 | No | | | | | | 12 |

如果不同步的解决办法:

在master执行

Mysql>show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| l2-bin.000014 | 79 | backup | |

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

注意master中显示的记录点位置和正在记录的日志文件名,在slave中执行:

Mysql>change master to master_log_file='mysql.000014', MASTER_LOG_POS=79;

Mysql>quit

#service mysqld restart #重启master和slave的mysql.未成功的话执行:

#/usr/bin/mysqladmin ?u root shutdown

#/usr/bin/mysqld_safe &



二.双机热备配置

配置双机方法其实就是在上述的cluster基础上略加改动,既在从机上做主机配置,在主机上做从机配置。具体方法如下:

SvrA ip:192.168.0.111

   SvrB ip:192.168.0.112



在确定cluster模式配置成功后(确认方法上面有详述),关闭master(SvrA)数据库:

#service mysqld stop

#vi /etc/my.cnf

在配置文件中加入:

master-host=192.168.0.112 ###设置主机IP地址

master-user=backup ###设置主机同步库用户名

master-password=123456  ###设置主机同步库密码

replicate-do-db=backup ###设置主要同步数据库

master-connect-retry=60 ###设置心跳时间(库同步间隔)

log_err=my-err.log ###同步错误日志

完成后保存退出.启动:

#service mysqld start

或者:

#/usr/bin/mysql ?u root

配置slave(SvrB)端/etc/my.cnf,加入以下内容:

#vi /etc/mycnf

binlog-do-db=backup

log-bin=my_log

重启mysql服务:

#Service mysqld restart

在SvrA执行:

Mysql>start slave;

Mysql>show slave status;

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

| Waiting for master to send event | 192.168.0.112 | backup | 3306 | 60 | my_log.000024 | 79 | l2-relay-bin.000010 | 4 | my_log.000024 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 4 | None | | 0 | No | | | | | | 2741 |



在SvrB执行:;

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| my_log.000024 | 79 | backup | |

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

1 row in set (0.00 sec)

对比以上信息,日志记录文件名,同步数词库名和日志记录点,如果无误代表现在SvrB已经可以做为SvrA的master运行.但它本身也同时在做为SvrA的slave来运行.

在SvrA执行:

Mysql>show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mylog.000009 | 4 | backup | |

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

1 row in set (0.00 sec)

在SvrB执行

mysql> show slave status;

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

| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 60 | mylog.000009 | 4 | l1-relay-bin.000003 | 313 | mylog.000009 | Yes | Yes | backup | | | | | | 0 | | 0 | 4 | 313 | None | | 0 | No | | | | | | 3575 |

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

1 row in set (0.00 sec)

对比以上SvrA和SvrB中的主机ip,同步数词库,同步日志文件名,同步日志记录点.确认无误后完成.

注意:在对mysql进行配置后,master端var/lib/mysql/下生成的master.info内容可能会不正确。可能会导致的错误是在将SvrA配置成slave时执行slave start出现大概意思为:“本机未配置成slave服务器,请更改config文件或者执行change master to命令…”的提示,解决办法为:

#Vi /var/lib/mysql/master.info

14

mylog.000007 ###同步后要记录的日志文件

79 ###日志记录点

192.168.0.111 ###主机IP

Backup ###同步数据库

123456 ###同步数据库密码

3306 ###同步端口

60 ###心跳时间(同步间隔)

0

核对以上信息是否配置正确,为了更真实的测试同步准确性,建议在库中导入数据进行测试.以上mysql cluster模式和双机热备模式配置基本完成.

[ 本帖最后由 shmilygyy 于 2007-1-15 14:00 编辑 ]
 
 
 
 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:关于mysql实现双机热备实现办法
热门关注
标题回复点击
java 连接 SQLServer 20050652
PostgreSQL 8.1 中文文档(PostgreSQL 中国 制作)0644
mysql cluster 运用disk data storage 的测试0588
MYSQL 复制范例详解0552
mysql 5.1的计划任务 - Event0500
MySQL Performance Blog0320
老外的mysql consulting tools0314
SQL 语法参考0260
MySQL 5.1参考手册(中文版)0244
如何取得MySQL中下一个 Autoindex 的值0243
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源