zoukankan      html  css  js  c++  java
  • Mysql双机热备实现数据库高可用

    mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器。
    双机热备的条件是双机mysql版本必须一致。
    服务器分别为A(172.16.9.212)、B(172.16.9.213),配置步骤如下:
    一、A->B主从备份
    1、在主服务器A上创建从服务器备份的用户,IP地址为BIP
    grant replication slave on *.* to 'wuwei'@'172.16.9.213' identified by '123456';
    2、打开主服务器A的二进制日志binarylog
    vim /etc/my.cnf
    新增配置如下:

    要同步的数据库为smartmon
    配置好保存后需重启mysql
    3、如果初态不同,则要同步初态
    先锁定 smartmon数据库:
    FLUSH TABLES WITH READ LOCK;
      
    然后导出smartmon数据:
    mysqldump --master-data -uroot -p smartmon > /root/smartmon.sql
    解除锁定:
    UNLOCK TABLES;
      
     
    4、查看主服务器A的binary日志位置,配置从服务器需要用到:
    show master statusG
      
     
    5、打开从服务器B的中继日志relay_log
    新增配置如下:
      
     
    设置要备份的数据库为smartmon
    保存,重启mysql
    6、导入主服务器A的数据库初态
    拷贝A生成的smartmon.sqlB服务器,再导入
    mysql -uroot -p smartmon < smartmon.sql
    然后可以在mysql环境中查看到数据库的数据是一样的
    7、在从服务器B上开启主从同步,hostAIP,用户密码是在主服务器A上设置备份用户,log_filelog_pos是主服务器masterbinary看到的信息。
    MariaDB [smartmon]> change master to
        -> master_host='172.16.9.212',
        -> master_user='wuwei',
        -> master_password='123456',
        -> master_log_file='mysql-bin.000001',
        -> master_log_pos=2338575;
      
     
    8、在从服务器B上查看slave状态
    show slave statusG
     
      
     
    图中的红框, 两个都是Yes, 说明开启成功。
    从A到B的主从复制就完成了,所有在A中的修改都能自动同步到B,但是对B的修改却不能同步到A。因为是单向的,如果需要双向同步的话,需要再做一次从B到A的复制。
     
    二、B->A主从备份
    实际就是步骤一的逆向操作。将B(172.16.9.213)作为主服务器,A172.16.9.212)作为从服务器。步骤基本和上面一样:
    1、在B中创建备份用户
    grant replication slave on *.* to 'wuwei'@'172.16.9.212' identified by '123456';
    2、打开 /etc/my.cnf , 开启Bbinarylog
    新增配置如下:
      
     
    3、不需要导出B的初态同步到A上了,因为AB的初态是一样的(步骤一实现的),查看master日志状态。
    show master statusG
      
     
    4、登录到A服务器开启中继relay_log
      
     
    5、在A服务器上开启同步:
    MariaDB [smartmon]> change master to
        -> master_host='172.16.9.213',
        -> master_user='wuwei',
        -> master_password='123456',
        -> master_log_file='mysql-bin.000003',
        -> master_log_pos=2394;
    host为BIP地址,userpassword是在B上创建的备份用户,log_filelog_pos是在B上看到的master状态信息。
    6、在A上查看slave status.
      
     
    如果IO进程和SQL进程都为YES,说明从BA的同步成功。
     
    如果为NO或者执行步骤5失败的,则需要查看mysql日志文件/var/lib/mysql/主机名.err文件查找错误
      
     
    图中的error信息是说找不到中继日志文件。
    这是因为我们在配置A的中继文件时改了中继文件名,但是mysql没有同步。解决办法:
    先停掉mysql服务,然后删掉/var/lib/mysql下的relay-log.info、主机名-relay-bin.000001、主机名-relay-bin.index,再启动mysql查看slave status就变为YES了。
     
    配置完成。
  • 相关阅读:
    THD 变量存入threads中
    一个简单的optimizer_trace示例
    LINUX HOOK
    网易杭研后台技术中心的博客
    INNOSQL.官网
    淘宝 印风 UDF
    mysql原创博客
    mysql 主从图
    THD
    开源利器函数调用图
  • 原文地址:https://www.cnblogs.com/victorwu/p/7071321.html
Copyright © 2011-2022 走看看