Mysql 如何做双机热备和负载均衡

做双机热备和负载均衡,master/slave , master/master

 

(1)

先简要介绍一下mysql双向热备:mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式(A->B),互相备份模式(A<=>B)的功能。

mysql数据库双向热备的操作实际说明:

1、mysql数据库同步复制功能的设置都在mysql的配置文件中体现。在linux环境下的配置文件一般在/etc/mysql/my.cnf或者在 mysql用户的home目录下的my.cnf,笔者的my.cnf则在/etc/my.cnf;windows环境下则可到mysql安装路径下找到 my.ini。

2、配置数据同步(A->B)(以mysql版本 5.0.26为例):

假设数据库A为主机:
A机器:
IP = 192.168.1.101
B机器:
IP = 192.168.1.102

(1)在A机器中有数据库如下:

//数据库A

   
   
   
   
  1. CREATE DATABASE backup_db;

  2. USE backup_db;

 

(2)

MySQL数据库没有增量备份的机制,但它提供了一种主从备份的机制,就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备份。

下面是具体的主从热备份的步骤:
假设主服务器A(master)、从服务器为B(slave)
A:192.168.0.104
B:192.168.0.169
1.主服务器授权
授权副服务器可以连接主服务器并可以进行更新。这是在主服务器上进行的,创建一个username和password供副服务器访问时使用。也可以使用主服务器默认的帐号和密码。
2.数据复制
将master上已有的数据复制到slave上,以便主从数据库建立的时候两个数据库的数据保持一致。导出导入数据库就不详述了。
3.配置主服务器
修改master上mysql的根目录下的my.ini配置文件
在选项配置文件中赋予主服务器一个server-id,该id必须是1到2^23-1范围内的唯一值。主服务器和副服务器的server-id不能相同。另外,还需要配置主服务器,使之启用二进制日志,即在选项配置文件中添加log-bin启动选项。
注意:如果主服务器的二进制日志已经启用,关闭并重新启动之前应该对以前的二进制日志进行备份。重新启动后,应使用RESET MASTER语句清空以前的日志。
原因:master上对数据库cartrader的一切操作都记录在日志文件中,然后会把日志发给slave,slave接收到master传来的日志文 件之后就会执行相应的操作,使slave中的数据库做和master数据库相同的操作。所以为了保持数据的一致性,必须保证日志文件没有脏数据。
4.重启master
配置好以上选项后,重启MySQL服务,新选项将生效。现在,所有对数据库中信息的更新操作将被写进日志中。
5.配置slave
在副服务器上的MySQL选项配置文件中添加以下参数:

     
     
     
     
  1. [mysqld]

  2. #唯一,并与主服务器上的server-id不同。

  3. server-id=2

  4. #主服务器的主机名或者ip地址

  5. master-host=192.168.0.104

  6. #如果主服务器没有在默认的端口上监听,则需确定master-port选项

  7. master-port=3306

  8. #步骤2.1中创建的用户名和密码

  9. master-user=root

  10. master-password=123456

  11. #复制操作要针对的数据库(可选,默认为全部)

  12. replicate-do-db=cartrader

  13. #如果主副服务器间连接经常失败,需增加master-retry-count和master-connect-retry

  14. #master-retry-count连接重试的次数

  15. #master-connect-retry 连接失败后等待的秒数

  16. master-retry-count =999

  17. master-connect-retry=60

5.重启slave
副服务器上MySQL服务重启后,还在数据目录中创建一个master.info文件,其中包含
所有有关复制过程的信息(连接主服务器的相关信息及与主服务器交换数据的相关信息)。在初次启动以后,副服务器将检查这个master.info文件,以得到相关信息。
如果想修改复制选项,删除master.info并重启MySQL服务,在启动过程中使用选项配置文件中的新选项进行重新创建了master.info文件。
将主服务器上备份好的数据库脚本文件(cartrader.sql)导入到副服务器数据库中,以便保
证主-副服务器上进行复制操作的起点一样。
6.查看master的状态与设置的是否一致
7.查看slave
一般情况下重启了slave之后,自动就会开启复制功能,可以通过下面的语句查看
在slave上

     
     
     
     
  1. mysql>show slave status

如果显示waiting for master to send event 的话就表示已经启动了,反之就运行

     
     
     
     
  1. mysql>start slave

来启动slave

在SHOW SLAVE STATUS的命令输出后,应该包含Slave_IO_Running对应的值为YES,
Slave_SQL_Running对应的值为YES,只有这样才保证主从机能正常备份。

暂时停止主从热备份的命令是:

     
     
     
     
  1. mysql>stop slave

  1. CREATE TABLE `backup_table`(

  2. `id`int(11) NOT NULL auto_increment,

  3. `name` varchar(20) character set utf8 NOT NULL,

  4. `sex` varchar(2) character set utf8 NOT NULL,

  5. PRIMARY KEY (`id`)

  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

A机器的my.cnf(或my.ini)中应该配置:

   
   
   
   
  1. server-id=1

  2. log-bin=c:\mysqlback #同步事件的日志记录文件

  3. binlog-do-db=backup_db #提供数据同步服务的数据库

(2)在B机器中有数据库如下:

//数据库B

   
   
   
   
  1. CREATE DATABASE backup_db;

  2. USE backup_db;

  3. CREATE TABLE `backup_table`(

  4. `id`int(11) NOT NULL auto_increment,

  5. `name` varchar(20) character set utf8 NOT NULL,

  6. `sex` varchar(2) character set utf8 NOT NULL,

  7. PRIMARY KEY (`id`)

  8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

注:数据库A和B的数据库结构一定要相同,否则无法构成同步。

B机器的my.cnf(或my.ini)中应该配置:

   
   
   
   
  1. server-id=2

  2. master-host=192.168.1.101#主机A的地址

  3. master-user=ym #主机A提供给B的用户,该用户中需要包括数据库backup_db的权限

  4. master-password=ym #访问密码

  5. master-port=3306#端口,主机的MYSQL端口

  6. master-connect-retry=60#重试间隔60秒

  7. replicate-do-db=backup_db #同步的数据库

(3)完成了以上配置之后,将A的mysql数据的权限给B。

A机器:

   
   
   
   
  1. mysql>GRANT FILE ON *.* TO ym@192.168.1.102 IDENTIFIEDBY ym’;

(4)重启AB数据库,后:

B机器:

   
   
   
   
  1. mysql>slave start;

查看同步配置情况

A机器:

   
   
   
   
  1. mysql>show master status;

B机器:

   
   
   
   
  1. mysql>show slave status;

(5)在A中的backup_db.backup_table表中插入一些数据,查看B中的backup_db.backup_table表是否同步了数据改动。如果没有看到同步数据结果,即同步不成功,请查看错误(如下)。

当有错误产生时*.err日志文件(可到mysql安装目录下找),同步的线程退出。当纠正错误后重复步骤(4)。

3、实现双向热备(A<=>B):

将以上的(1)-(5)步骤按A-B双向配置即可。

总结一下:

主要是两边建立同样的数据库,然后在数据库配置文件里加入更新的语句即可。
相互开通互有权限的用户,然后这条命令就是同步频率和同步数据库:

   
   
   
   
  1. master-connect-retry=60#重试间隔60秒

  2. replicate-do-db=backup_db #同步的数据库

 

 

 

 

转自:http://www.dewen.org/q/51/Mysql+%E5%A6%82%E4%BD%95%E5%81%9A%E5%8F%8C%E6%9C%BA%E7%83%AD%E5%A4%87%E5%92%8C%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1

你可能感兴趣的:(mysql,负载均衡,master,slave,双机热备)