Mysql实现双机热备(主从复制)

Mysql实现双机热备(主从复制)

Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份的数据库中。实现mysql数据库的热备份。
要想实现双机的热备,首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都高于3.2。还有一个基本的原则就是作为从数据库的数据版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
当然要实现mysql双机热备,除了mysql本身自带的REPLICATION功能可以实现外,也可以用Heartbeat这个开源软件来实现。不过本文主要还是讲如何用mysql自带的REPLICATION来实现mysql双机热备的功能。

1. 准备服务器

由于Mysql不同版本之间的(二进制日志)binlog格式可能会不太一样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本。
本次我用于测试的两台服务器版本都是Mysql-5.5.17。

2. Mysql 建立主-从服务器双机热备配置步骤

2.1环境描述

A服务器(主服务器Master):59.151.15.36
B服务器(从服务器Slave):218.206.70.146
主从服务器的Mysql版本皆为5.5.17
Linux环境下
将主服务器需要同步的数据库内容进行备份一份,上传到从服务器上,保证始初时两服务器中数据库内容一致。
不过这里说明下,由于我是利用Mysql在安装后就有的数据库test进行测试的,所以两台服务器里面是没有建立表的,只不分别在test里面建立了同样的一张空表tb_mobile;
Sql语句如下:
mysql> create table tb_mobile( mobile VARCHAR(20) comment’手机号码’, time timestamp DEFAULT now() comment’时间’ );

2.2 主服务器Master配置

2.2.1 创建同步用户

进入mysql操作界面,在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。
操作指令如下:
mysql> grant replication slave on . to ‘replicate’@‘218.206.70.146’ identified by ‘123456’;
mysql> flush privileges;
创建好同步连接帐户后,我们可以通过在从服务器(Slave)上用replicat帐户对主服务器(Master)数据库进行访问下,看下是否能连接成功。
在从服务器(Slave)上输入如下指令:
[root@YD146 ~]# mysql -h59.151.15.36 -ureplicate -p123456
如果出现下面的结果,则表示能登录成功,说明可以对这两台服务器进行双机热备进行操作。
在这里插入图片描述

2.2.2 修改mysql配置文件

如果上面的准备工作做好,那边我们就可以进行对mysql配置文件进行修改了,首先找到mysql配置所有在目录,一般在安装好mysql服务后,都会将配置文件复制一一份出来放到/ect目录下面,并且配置文件命名为:my.cnf。即配置文件准确目录为/etc/my.cnf
(Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在点有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL,
解决方法,只需要复制一个/usr/share/mysql目录下的my-medium.cnf文件到/etc目录,并改名为my.cnf即可。)
找到配置文件my.cnf打开后,在[mysqld]下修改即可:
[mysqld]
server-id = 1        //唯一id
log-bin=mysql-bin //其中这两行是本来就有的,可以不用动,添加下面两行即可.指定日志文件
binlog-do-db = test     //记录日志的数据库
binlog-ignore-db = mysql //不记录日志的数据库

2.2.3 重启mysql服务

修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。
在这里插入图片描述

2.2.4 查看主服务器状态

进入mysql服务后,可通过指令查看Master状态,输入如下指令:
在这里插入图片描述
注意看里面的参数,特别前面两个File和Position,在从服务器(Slave)配置主从关系会有用到的。
注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。
在这里插入图片描述

2.3 从服务器Slave配置

2.3.1修改配置文件

因为这里面是以主-从方式实现mysql双机热备的,所以在从服务器就不用在建立同步帐户了,直接打开配置文件my.cnf进行修改即可,道理还是同修改主服务器上的一样,只不过需要修改的参数不一样而已。如下:
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = test
replicate-ignore-db = mysql,information_schema,performance_schema

2.3.2重启mysql服务

修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。
在这里插入图片描述

2.3.3用change mster 语句指定同步位置

这步是最关键的一步了,在进入mysql操作界面后,输入如下指令:
mysql>stop slave; //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql>change master to

master_host=‘59.151.15.36’,master_user=‘replicate’,master_password=‘123456’,
master_log_file=’ mysql-bin.000016 ',master_log_pos=107;
注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。
遇到的问题,如果按上面步骤之后还出现如下情况:
在这里插入图片描述
则要重新设置slave。指令如下
mysql>stop slave;
mysql>reset slave;
之后停止slave线程重新开始。成功后,则可以开启slave线程了。
mysql>start slave;

2.3.4查看从服务器(Slave)状态

用如下指令进行查看
mysql> show slave status\G;
在这里插入图片描述
查看下面两项值均为Yes,即表示设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

2.4 测试同步

之前开始已经说过了在数据库test只有一个表tb_mobile没有数据,我们可以先查看下两服务器的数据库是否有数据:
Master:59.151.15.36
在这里插入图片描述
Slave:218.206.70.146
在这里插入图片描述
好了,现在可以在Master服务器中插入数据看下是否能同步。
Master:59.151.15.36
在这里插入图片描述
Slave:218.206.70.146
在这里插入图片描述
可以从上面两个截图上看出,在Master服务器上进行插入的数据在Slave服务器可以查到,这就表示双机热备配置成功了。

3. Mysql 建立主-主服务器双机热备配置步骤

3.1创建同步用户

同时在主从服务器建立一个连接帐户,该帐户必须授予REPLIATION SLAVE权限。这里因为服务器A和服务器B互为主从,所以都要分别建立一个同步用户。
服务器A:
mysql> replication slave on . to ‘replicate’@‘218.206.70.146’ identified by ‘123456’;
mysql> flush privileges;
服务器B:
mysql> grant replication slave on . to ‘replicate’@‘59.151.15.36’ identified by ‘123456’;
mysql> flush privileges;

3.2修改配置文件my.cnf

服务器A
[mysqld]
server-id = 1
log-bin=mysql-bin
binlog-do-db = test
binlog-ignore-db = mysql
#主-主形式需要多添加的部分
log-slave-updates
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
replicate-do-db = test
replicate-ignore-db = mysql,information_schema
服务器B:
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = test
replicate-ignore-db = mysql,information_schema,performance_schema
#主-主形式需要多添加的部分
binlog-do-db = test
binlog-ignore-db = mysql
log-slave-updates
sync_binlog = 1
auto_increment_offset = 2
auto_increment_increment = 2

3.3分别重启A服务器和B服务器上的mysql服务

3.4分别查A服务器和B服务器作为主服务器的状态

服务器A:
在这里插入图片描述
服务器B:
在这里插入图片描述

3.5分别在A服务器和B服务器上用change master to 指定同步位置

服务器A:
mysql>change master to

master_host=‘218.206.70.146’,master_user=‘replicate’,master_password=‘123456’,
master_log_file=’ mysql-bin.000011 ‘,master_log_pos=497;
服务器B:
mysql>change master to
master_host=‘59.151.15.36’,master_user=‘replicate’,master_password=‘123456’,
master_log_file=’ mysql-bin.000016 ',master_log_pos=107;

3.6 分别在A和B服务器上重启从服务线程

mysql>start slave;

3.7 分别在A和B服务器上查看从服务器状态

mysql>show slave status\G;
查看下面两项值均为Yes,即表示设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

3.8 测试主-主同步例子

测试服务器A:
在服务器A上插入一条语句如下图所示:
在这里插入图片描述
之后在服务器B上查看是否同步如下图所示:
在这里插入图片描述
测试服务器B:
在服务器B上插入一条语句如下图所示:
在这里插入图片描述
然后在从服务器A上查看是否有同步数据如下图所示:
在这里插入图片描述
在这里插入图片描述

最后从结果可以看出主-主形式的双机热备是能成功实现的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值