MySql自动备份数据库, 数据库主(master)从(slave)配置

 

MySql 数据库主从配置

一.MySql复制环境:

原理: MySql复制是指将主数据库的ddl和dml语言操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重做,从而使得从服务器和主服务器的数据保持同步!

目的:方便不停止数据库而备份主服务器,实现主从服务器数据同步!

现有两台机器A、B需要实施MySql的主从热备份,A作为主服务器,B作为从服务器

环境:Windows Server 2003、MySql5.5

A、B的操作系统一样,MySql版本均为5.5

A主服务器ip:192.168.2.2

B从服务器ip:192.168.2.3

二.MySql复制的优点:

1.如果主服务器上出现了问题可以切换到从服务器上

2.可以在从服务器上执行查询操作,降低主服务器的访问压力

3.可以在从服务器上进行备份,以避免备份期间影响主服务器的服务

三.MySql复制操作步骤:

1、主服务器授权

授权从服务器(192.168.2.3)可以连接主服务器(192.168.2.2)并进行更新。也就是在A服务器上添加一个MySql账号让B服务器(从)可以通过这个账号连接A服务器(主)的MySql并进行相关更新操作。 http://bolg.rekfan.com

MySql> grant replication slave on *.* to 'rekfan.com'@'192.168.2.3' identified by 'password';

Rekfan.com --- MySql用户名

192.168.2.3 --- 从服务器ip

Password --- MySql密码

注意:如果有多台丛机,就执行多次,只需更换从服务器的ip.

2、数据复制

建立好访问许可之后,接下来是从主服务器向从服务器复制数据。

在A服务器上有个rekfan_db数据库,我们现在假设以这个数据库来作同步,将A的

rekfan_db数据库复制到B服务器上,可以使用MySqldump工具

复制之后

A 服务器:(主服务器)

B 服务器:(从服务器)

现在A、B 服务器都有rekfan_db数据库了,复制完成

3、配置主服务器(A 服务器)

修改MySql 的配置文件my.ini,Linux下是(/etc/my.cnf)

找到server-id,给主服务器的server-id 指定一个值(注意:主服务器和从服务器的server-id的值不能相同)。另外还要在主服务器启动二进制日志,即在选项配置文件中添加log-bin启动选项。配置示例如下:

[MySqld]

# 主机标识,整数值(唯一),并不能与从服务器的值相同

server-id=1

#日志文件以mysql-bin 为前缀

log-bin = mysql-bin

#主机,读写都可以

read-only =0

#不需要备份的数据库,多个写多行(可选属性)

binlog-ignore-db=MySql

#需要备份数据,多个写多行(可选属性)

binlog-do-db=rekfan_db

注:这几个参数一定要放在[Mysqld]结点下,都是小写,如果大写,服务会启动不了,错误日志会有如下提示:

111012 16:52:24 InnoDB: 1.1.8 started; log sequence number 1595675

111012 16:52:24 [ERROR] C:Program FilesMySQLMySQL Server 5.5binmysqld: unknown variable 'Server-id=1'

111012 16:52:24 [ERROR] Aborting

配置好之后重启MySql服务器,在重启之后清空二进制日志(reset master 命令)  http://bolg.rekfan.com

运行show variables like '%server%'; 可以看到配置成功

4、配置从服务器(B 服务器)

修改从服务器的MySql配置文件my.ini文件。

[MySqld]

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

server-id=2

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

master-host=192.168.10.110

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

master-port=3306

#主服务器中创建的用户名和密码

master-user=rekfan.com

master-password=password

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

replicate-do-db=rekfan_db

#不复制某个库

replicate-ignore-db=mysql

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

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

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

master-retry-count = 999

master-connect-retry = 60

注:Mysql版本从5.1.7以后开始就不支持“master-host”类似的参数;所以照上面的配置方法会启动不了MySql服务, 错误日志会有如下提示:   http://bolg.rekfan.com

111012 17:15:23 InnoDB: 1.1.8 started; log sequence number 1595675

111012 17:15:23 [ERROR] C:Program FilesMySQLMySQL Server 5.5binmysqld: unknown variable 'master-connect-retry=60'

111012 17:15:23 [ERROR] Aborting

排除些没有用的参数后,成如下的结构:

[mysqld]

server-id=2
replicate-do-db = rekfan_db

启动从服务器Mysql数据库,执行如下命令:

MySql> slave stop;

MySql> change master to master_host='192.168.2.2', master_user='rekfan.com', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=0;

MySql> slave start;

MySql> show slave status G ;

如果发现  

Slave_IO_Running: NO

Slave_SQL_Running: Yes

查看错误日志:

C:Program FilesMySQLMySQL Server 5.5dataxxxxxx.err

会发现如下错误:

111012 17:19:23 [ERROR] Error reading packet from server: Could not find first log file name in binary log index file ( server_errno=1236)

111012 17:19:24 [ERROR] Got fatal error 1236: 'Could not find first log file name in binary log index file' from master when reading data from binary log

一般出现这个错误是因为

一是权限问题

二是文件路径不多,或文件名不一样,Mysql对大小写很敏感,执行change master to master_host='192.168.2.2', master_user='rekfan.com', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=0;语句的时候,master_log_file的mysql-bin前缀一定要与主服务器的log-bin配置的相同!    http://bolg.rekfan.com

Master.info 文件

在日志目录下有个master.info 文件,其中包含所有有关复制过程的信息(连接主服务

器的相关信息及与主服务器交换数据的相关信息)。

在初次启动以后,从服务器将检查这个master.info 文件,以得到相关信息。如果想

修改复制选项,删除master.info 并重启MySql服务,在启动过程中使用选项配置文件

中的新选项进行重新创建了master.info 文件。

5、管理服务器过程

5.1、管理主服务器

显示数据库服务器上有关线程的信息,命令如下:

mysql> show processlist;

显示二进制日志信息,命令如下:

mysql> show binlog events;

显示主服务器二进制其他信息,命令如下:

mysql> show master status;

5.2、管理副服务器

在上面步骤4中配置好副服务器后需要重启MySql服务,进入MySql命令行用于开始复制,执行如下命令:

mysql> start slave;

查看服务器的状态信息,命令如下:

mysql> show slave  statys G;

其中Slave_IO_Running 对应的值为YES,

Slave_SQL_Running 对应的值为YES

6、查看数据同步情况

主服务器(A 服务器)的表中添加数据,看看副服务器(B 服务器)有没有同步数据

如果看到B 服务器也有数据了,即实现了数据的同步    http://bolg.rek

转自:转http://blog.rekfan.com/articles/60.htmln

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值