centos oracle高可用,Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

我们前面几篇文章中有介绍了Keepalived的功能--HA,关于MySQL-HA,目前有多种解决方案,比如heartbeat、drbd、mmm、共享存储,但是它们各有优缺点。heartbeat、drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题;对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患。使用MySQL双master+keepalived是一种非常好的解决方案,今天我们介绍利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。

大概的思路是将两台MYSQL服务器配置双向复制,然后通过配置Keepalived指定realserver指向本地的Mysql服务器,实现高可用的切换。具体见下:

wKiom1hoyFCCiLpvAAEX7RfnvaM466.png

Hostname:DB01

IP:192.168.5.53

Role:Mariadb+Keepalived

Hostname:DB012

IP:192.168.5.54

Role:Mariadb+Keepalived

Virtual IP:192.168.5.88

从Centos7下mysql已经被遗弃了,变为Mariadb了,当然功能及配置是一样的。因为我们是Centos7,所以需要指定安装源,为后面yum安装服务提供支持需要执行以下命令:

wKioL1hoyFGT_kTWAABOyJOnWcg267.png

我们查看定义的源

wKiom1hoyFKx6faeAAA4GqnNpg4756.png

运行yum install MariaDB-server MariaDB-client命令安装 MariaDB

wKiom1hoyFSTqESZAAGGuhXJh8w618.png

安装完成后, 我们通过rpm查看安装的相关信息

wKiom1hoyFTxAdl4AACZtRhjT3c421.png

然后启动数据库

wKiom1hoyFXToslTAADjJZFj1BY626.png

接着运行 mysql_secure_installation配置MariaDB

wKioL1hoyFnjVJPCAAIy1TzcVdg275.png

wKiom1hoyFzTfQmmAADJTXZNGEw611.png

配置完成后,我们进入数据库

wKioL1hoyF2wRttLAADU2b27jew695.png

接下来我们创建一个数据库及表单信息

wKiom1hoyF6SN0jAAAB-HswaES0742.png

wKioL1hoyF-BIEBuAAA9vet65sA745.png

wKioL1hoyGDAS_zKAABXjOS1imE997.png

wKioL1hoyGGhrwUmAABguZ8DmnA215.png

我们可以根据自己的配置设置运行那些主机及用户进行mysql的连接;

如果我们需要配置任何主机都可以连接的话,可以使用一下命令

wKiom1hoyGXTZgJNAABpHMEb67E587.png

接下来我们修改默认的mysql配置文件

wKioL1hoyGaB_pHYAAGvuo57Kp0059.png

保存退出;先查看下log bin日志和pos值位置

注意:这里记住File的值:mysql-bin.000001和Position的值:245,后面会用到。

wKioL1hoyGeDYXhDAACF7iZ9W1s604.png

wKioL1hoyGjx77IoAAA3DUkJwqI190.png

添加防火墙端口

wKioL1hoyGrQQiB4AABmrUV_1GE460.png

wKiom1hoyGugOA4FAABZ9JpjKFc508.png

主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。

wKioL1hoyG2T-DCoAAGT54EYL4M099.png

我们也需要同时在第二台服务器上执行上面的所有操作。

我们在第二台服务器上也安装完成

wKiom1hoyHDBySmSAAG1TOFmTlo179.png

我们同样查看版本

wKiom1hoyHGRjBQ9AACd6eUgbcI303.png

然后启动数据库

wKiom1hoyHOTtn0SAADLtlth9NA177.png

wKioL1hoyHaDBYMaAAIq97uwK8Y351.png

wKiom1hoyHiz0i42AAC7P63JAfo006.png

接下来我们同样登陆到mysql服务

wKioL1hoyHmhWQl8AADy10ScS0E706.png

wKiom1hoyHnRyiwtAAB-HswaES0835.png

wKioL1hoyHqhxSsiAAA9vet65sA221.png

创建一个表及插入数据

wKioL1hoyHvyqyERAABXjOS1imE418.png

wKioL1hoyHyCQC82AABguZ8DmnA690.png

我们可以根据自己的配置设置运行那些主机及用户进行mysql的连接;

如果我们需要配置任何主机都可以连接的话,可以使用一下命令

wKioL1hoyH3B1qSLAABuDfol6gU721.png

接下来我们修改默认的mysql配置文件

wKioL1hoyH-gaTscAAGANHixfUo756.png

保存退出:  我们需要些对方的ip地址192.168.5.53

wKioL1hoyICwV1U1AAA0SSK0JCQ835.png

添加防火墙端口

wKiom1hoyIGBkLUmAAAZXfClGgo497.png

wKioL1hoyIGzSjQ1AABZ9JpjKFc079.png

主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。

wKiom1hoyITj-7_PAAGTlkqhCKQ450.png

接下来我们测试一下

我们在第一台Mariadb的数据库表中插入一条数据,然后在第二台服务器上进行查看,是否会同步;

因为我们在配置的时候指定了DB这个数据库才会同步,所以我们需要在DB数据库中插入数据

我们当前数据库表中的数据只有一条

wKiom1hoyIXBfsfWAAD5XcZiSFQ515.png

接下来我们插入一条数据;

wKioL1hoyIaCM0-FAACLw6luh3k800.png

插入完成后,我们在第二台服务器上进行查看;

我们查看到数据是已经同步了;

wKioL1hoyIfCXQgQAAC18bjZ-bI825.png

我们接下来在第二台服务器上进行插入一条数据,看看第一台服务器是否会同步;

wKioL1hoyIjTDnYMAACoghXs3uE342.png

接着我们在第一台服务器上进行查看

数据已经同步过来了

wKioL1hoyIrDClziAAB77KP7IRs879.png

配置keepalived实现热备

我们首先在第一台服务器上进行安装

wKioL1hoyIuRa02MAAFJ92VcHQA689.png

我们首先备份一下默认的配置文件;

wKiom1hoyIzD8U_xAABe4l3kMoI170.png

我们查看默认配置

通过修改后,我们将将默认的文件清空,然后粘贴下面内容

wKiom1hoyI3CmK5tAABShUYA-Eg655.png

然后粘贴以下内容

wKiom1hoyJCASnkRAAH7n6UVTN8895.png

我们启动keepalived服务

wKiom1hoyJCyLiF7AABad3-UxcM870.png

接下来我们在DATA目录下创建shell目录添加mysql.sh脚本

wKioL1hoyJHxxK_BAAET0O10cqE785.png

接着我们查看keepalived的网卡监听状态,虚拟IP已经监听

wKiom1hoyJKQ-8gRAAFRGoisL5I270.png

我们同样在第二台服务器上也安装keepalived

wKiom1hoyJSjJuZoAAFM5dX5wFU856.png

我们首先备份一下默认的配置文件;

wKiom1hoyJTijE6NAABlno4wgOc042.png

然后将第一台服务器上的keepalived拷贝到第二台服务器上的keepalived路劲下替换keepalived.conf文件

wKiom1hoyJbSyS0eAACzNGKb5_I656.png

然后我们将第一台服务器下的mysql.sh拷贝到第二台对应的路劲

wKioL1hoyJaQCdPbAAAxpcmx_ek131.png

然后,我们要修改第二台服务器的keepalived.conf文件,因为刚才拷贝过来的数据需要修改

我们需要修改realserver的地址,指向本地192.168.5.54,然后修改weight权重值,我们备服务器修改成50

wKiom1hoyJmBELgdAAHpd5ZpzbM041.png

保存退出后,我们启动keepalived服务

wKiom1hoyJqD_cRMAAB6toHPeYM265.png

我们第二台服务器的网卡监听状态,虚拟地址都 已经监听了

wKiom1hoyJyTQSg4AAFVO2D3QBE205.png

接下来我们需要在两台服务器上ping一下虚拟ip地址是否通

wKioL1hoyJygckaOAAE3reHcnu4356.png

wKioL1hoyJ7RIs_xAADj3yTHyt8726.png

我们找了一台windows机器进行测试

wKioL1hoyJ-jf94GAACHXlKfYRE954.png

然后使用myslq连接工具进行测试,测试通过

wKiom1hoyKCy_AzOAADg2P43dyE724.png

我们查看连接后所有的数据信息都可以看见

wKioL1hoyKKzAsMmAAEGd9CTmAI168.png

接下来我们将第一台服务器服务停止。

wKiom1hoyKPDjNh_AABTNnrH_1k015.png

客户端还是可以继续使用。

wKiom1hoyKTCh7yZAAEFDKluHs0087.png

接下来我们使用客户端插入一条数据

wKiom1hoyKawTrtAAAFTctM2eJ8184.png

我们查看插入的数据

wKiom1hoyKjjBMAQAAFtuRNaOZo036.png

我们在第二台服务器上查看数据

wKioL1hoyKmSrzt1AAGBZuDiMbw738.png

接下来我们将第一台服务器的mariadb和keepalived服务启动起来,然后再查看数据

wKioL1hoyKmC5NqhAABhRagl8lg929.png

查看第一台的数据也会自动同步

wKioL1hoyKvBp-EmAAEvHhTZv-Q099.png

本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1888036,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了实现Docker高可用MySQL的灾难恢复,可以按照以下步骤进行: 1. 备份数据:首先需要定期备份MySQL数据,以便在出现灾难时可以恢复数据。可以使用以下命令备份数据: ``` docker exec db sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /path/to/backup.sql ``` 这将在db容器中执行mysqldump命令,并将备份数据保存到本地文件中。 2. 恢复数据:如果出现灾难,需要使用备份数据来恢复MySQL。可以使用以下命令恢复数据: ``` docker exec -i db sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /path/to/backup.sql ``` 这将在db容器中执行mysql命令,并将备份数据导入到MySQL中。 3. 启动新的MySQL容器:如果出现灾难,可能需要启动一个新的MySQL容器来替换原来的容器。可以使用以下命令启动一个新的MySQL容器,并将备份数据导入到其中: ``` docker run --name=db-new -e MYSQL_ROOT_PASSWORD=example -v /path/to/backup.sql:/backup.sql mysql:5.7 docker exec -i db-new sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /backup.sql ``` 这将启动一个名为db-new的新MySQL容器,并将备份数据导入到其中。 4. 配置主从复制:如果启动了新的MySQL容器,需要配置主从复制以实现高可用性。可以按照之前的步骤配置主从复制。 总之,通过以上步骤,可以实现Docker高可用MySQL的灾难恢复,并确保数据的可靠性和完整性。需要定期备份数据,并在出现灾难时及时恢复和替换MySQL容器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值