MySQL双机热备(主主互备)

注:本次MySQL双机热备(主主互备)是在准备工作已经做好的前提下开始:

在此之前请确认前提工作已做好,前提准备工作包括:
#############################################################################
#    1.安装centos或者其他linux服务器版本(本文基于centos7)。                  #
#    2.安装MySQL数据库版本5.3以上(本文基于5.7.13版本)并最好已配好环境变量      #
#    (linux任何目录都可以直接使用mysql命令)。                                #
#    3.已经关闭防火墙iptables(开放MySQL的3306端口)以及SElinux安全机制)       #
#    【目的在于双机能相互ping通,如若能相互ping通,忽略第三步】                  #
#############################################################################

步入正题:
Ⅰ 双机热备背景
就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。这样做如果其中一台宕掉了可以切换到另一台。 2. 可以做负载均衡,可以将请求分摊到其中任何一台上。
Ⅱ MySQL前提准备工作
准备两台机器(因为是双机热备)
我的机器是:master(192.168.10.217) slave(192.168.10.224)
【在master(192.168.10.217)slave(192.168.10.224)机器上分别进行以下操作】
【在master(192.168.10.217)slave(192.168.10.224)机器上分别进行以下操作】
【在master(192.168.10.217)slave(192.168.10.224)机器上分别进行以下操作】
①首先用root账号登录MySQL。

        mysql -uroot -p密码  回车

有时登录上提示必须修改重置密码才能操作(如若没有提示请忽略下步)。

        set password = 'root密码'; 回车。

②分配两个供slave机器复制binary-log的MySQL账户。
本文采用root分配(注:如果没有权限登录到root,请先开启普通账户的所有授权尤其是replication slave权限),下面的操作是一样的:

 grant replication slave on *.* to '用户名'@'%' identified by '密码'; 回车
 flush privileges; 回车 (刷新权限使刚刚分配的账号生效)

注:(replication slave 是复制二进制日志的权限 其中%表示所有人都可已登录
如果改成第二台服务器地址则可以限制只能slave机器登录比如:‘用户名’@‘192.168.10.224’
,用户名和密码根据自己需求定义。其他不再赘述)

③修改MySQL配置文件(成败在此一举)
【在master(192.168.10.217)机器上修改配置文件】

vim /etc/my.cnf #回车 我的配置文件大约在第70行(:set number)加入以下配置(注意:server-id 已经存在,但是两台机器不能相同)

        server-id = 1
        log-bin=mysql-bin
        binlog-ignore-db= mysql
        log-slave-updates
        sync_binlog= 1
        auto_increment_offset= 1
        auto_increment_increment= 2
        replicate-do-db= mailgateway
        replicate-ignore-db= information_schema,performance_schema

        :wq 回车保存退出
        重启MySQL服务  /etc/init.d/mysqld restart 回车

【在slave(192.168.10.224)机器上修改配置文件】

vim /etc/my.cnf 回车 我的配置文件大约在第70行(:set number)加入以下配置(注意:server-id 已经存在,但是两台机器不能相同)

        server-id = 2
        log-bin=mysql-bin
        binlog-ignore-db= mysql
        log-slave-updates
        sync_binlog= 1
        auto_increment_offset= 2
        auto_increment_increment= 2
        replicate-do-db= mailgateway
        replicate-ignore-db= information_schema,performance_schema

 重启MySQL服务 /etc/init.d/mysqld restart 回车

④检查状态
运行(MySQL登录模式)

    show master status; 回车 已经状态记录不再是empty 便是已经配置生效
    show slave status;回车  可以看到目前为止slave状态:
    lave_IO_Running: Connecting
    Slave_SQL_Running: Yes

⑤注意,如果你要同步的数据库还在生产环境,请先进行锁表操作(flush tables read lock;回车)不再进入新的数据,待第一次同步完成后记得解锁(unlock tables;回车)。

⑥最为关键的最后一步:

在master机器(192.168.10.217)上执行:

        stop slave;回车    #执行同步前先关闭slave
        change master to  master_host='192.168.10.224',master_user='sunhong',master_password='sunhong',master_log_file='mysql-bin.000002',master_log_pos=154;
    在master机器(192.168.10.217)上执行:
        stop slave;回车    #执行同步前先关闭slave
        change master to  master_host='192.168.10.217',master_user='sunhong',master_password='sunhong',master_log_file='mysql-bin.000002',master_log_pos=154;
    【!!!注意!!!】
    上面的host user password不解释,是自己创建的。
    master_log_file 与 master_log_pos 这个是分别运行 show master status;回车得到的。对应的字段为(File 与 Position);

现在分别运行上面已经停止的slave服务:
start slave;回车;
现在再执行 show slave status\G 回车 查看两台机器从机状态均为:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

OK!大功告成!双机热备已经架构完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值