mysql5.0主主备份_【mysql】数据库主主备份

2ff34e647e2e3cdfd8dca593e17d9b0a.png

我们先以A服务器为起点,配置它的数据库同步到B。这就是主-从复制了。

之后再反过来做一次,就可以互相备份了。

热备份的条件

(1) mysql的版本都要高于3.2。

(2) 两者数据库版本相同。

(3) 主主备份相当于在原先主从备份的基础上反过来再操作一次。

范例环境操作系统: windows7

MySQL版本: 5.7.18

服务器A的IP: 192.168.68.56

服务器B的IP: 192.168.68.139

主主备份实现

(3.1—-3.7 同主从备份)

增加一个用户账号(backup,密码centerm)作为同步用户账号A: mysql> Grant replication slave on *.* to backup@'192.168.68.139' identified by 'centerm';

B: mysql> Grant replication slave on *.* to backup@'192.168.68.56' identified by 'centerm';

注: (1). mysql> Grant 权限 on . to [email protected] identified by ‘用户密码’;

增加一个数据库(news)作为同步数据库A & B : create database news;

修改主数据库的my.ini配置

在原my.ini文件下添加server-id=1

#设置需要记录log 可以设置log-bin=backuplog 设置日志文件的名称

log-bin=backuplog

#日志文件在mysql数据库文件夹根目录下,mysql将建立不同扩展名,文件名为backuplog的几个日志文件。

#指定需要日志的数据库

binlog-do-db=news

获取file和position字段

完成之后保存,然后重启服务器net stop mysql & net start mysql

进入mysql数据库,输入命令:show master status;

记一下file,position两个字段(一般file会是mysql-bin.000006)

修改从数据库的my.ini配置

在原my.ini文件下添加server-id=2

#只同步news库

replicate-do-db=news

relay-log-index=slave-relay-bin.index

relay-log=slave-relay-bin

启动备份

保存之后重启数据库

进入mysql,

输入命令:change master to master_host='192.168.68.56',master_user='backup',master_password='centerm',master_log_file='mysql-bin.000006',master_log_pos=1606;

mysql-bin.000006→→→之前记录的file

1606→→→之前记录的position

输入命令:start slave;

输入命令:show slave status;

主从备份完成

在主数据库添加表查看是否同步到备数据库

以下开始配置主主备份:

开启主服务器的binarylog

在原my.ini文件下添加auto-increment-increment = 10

auto-increment-offset = 1

作用:用于在双主(多主循环)互相备份。 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。

解决这个问题的办法就是让每个数据库的自增主键不连续。上面的配置说是,我假设需要将来可能需要10台服务器做备份,所以auto-increment-increment设为10。而 auto-increment-offset=1 表示这台服务器的序号。从1开始,不超过auto-increment-increment。

这样做之后, 我在这台服务器上插入的第一个id就是1,第二行的id就是11了, 而不是2。(同理,在第二台服务器上插入的第一个id就是2, 第二行就是12, 这个后面再介绍) 这样就不会出现主键冲突了。

即:

auto-increment-increment表示可能用于做备份的服务器数量。

auto-increment-offset表示本台服务器的序号。

开启从服务器备份日志在原my.ini文件下添加log-slave-updates=ON

意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog。当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。就是双主互相备份,或者多主循环备份。 我们这里需要,所以打开。保存, 重启mysql。

开启从服务器备份日志

登录从服务器B的mysql(可以用super账号登录)

执行show slave statusG

59700c7cc1d7e.png

注意图中的红框,两个都是Yes,说明开启成功。Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果其中一个是No, 那就说明不成功。需要查看mysql的错误日志。

错误日志一般在data目录下,查看.err后缀的文件。

开启从服务器备份日志在原my.ini文件下添加auto-increment-increment = 10

auto-increment-offset = 2

(含义参考3.8)

保存, 重启mysql。

查看从服务器的

登录从服务器B的mysql(可以用super账号登录)

执行show master statusG

记住File和position的值

5971be1dd76a2.png

开启主服务器中继

在原my.ini文件下添加replicate-do-db=news

relay_log=slave-relay-bin

log-slave-updates=ON

启动主服务器同步

保存之后重启数据库

进入mysql,

输入命令:change master to master_host='192.168.68.139',master_user='backup',master_password='centerm',master_log_file='mysql-bin.000006',master_log_pos=1606;

mysql-bin.000006→→→之前记录的file

1606→→→之前记录的position

输入命令:start slave;

输入命令:show slave status;

查看服务状态,是否两个都是YES

重启mysql服务net stop mysql

net start mysql

如果3.14并不都是YES

说明slave没有成功, 即,从B到A的同步没有成功。去查看mysql错误日志,data目录下.err后缀的文件。

找到机器名.err文件,打开看看:

5971bfdb07c37.png

看图中的error信息。说找不到中继日志文件。

这是因为我们在配置A的中继文件时改了中继文件名,但是mysql没有同步。解决办法很简单。

5971bff28af3a.png

先停掉mysql服务。 找到这三个文件,把他们删掉。 一定要先停掉mysql服务。不然还是不成功。你需要重启一下机器了。 或者手动kill mysqld。

好了, 启动mysql之后。 再来检查一下slave状态。如果都是YES,则主主备份启动成功。

一些问题当发现双机备份启动有问题的时候,多看看.err日志,很快就能发现问题。

同步失败的时候,试一试stop slave和start slave。

多用show slave status/G和show master status/G命令,比较两台服务器的File和Position字段是否一致。不一致通过change master to ***来调整。

参考资料

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值