mysql主从数据同步的部署与实现

一、安装环境说明

  1. centos6.8;
  2. mysql5.7;
  3. vmware虚拟主机(master)192.168.5.108
  4. vmware虚拟备机(slave)192.168.5.109 同时主从机之间需要可以ping通—linux默认22端口是开通的。

注意:主从节点mysql服务的3306端口需要开放,因为他们之间是需要通信的。我这里直接用命令service iptables stop 关闭了防火墙。(生产环境中,不允许直接关闭的。)不过这个命令只是本次登陆有效。需要永久关闭防火墙请用其他命令。

二、主节点的配置

  1. 配置 /etc/my.cnf —–这是mysql的配置文件
  2. 然后重启mysql:service mysqld restart。
  3. 用root用户登陆mysql服务,创建一个从库访问权限的用户,如下命令:

    >GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;(这是开放远程调用权限,暂时用不到)
    
    /*赋予192.168.5.109也就是Slave机器有File权限*/
    >GRANT FILE ON *.* TO 'root'@'192.168.5.109' IDENTIFIED BY 'root';
    /*赋予192.168.5.109也就是Slave机器有复制权限*/
    >GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.5.109' IDENTIFIED BY 'root';
    /*刷新*/
    >FLUSH PRIVILEGES;
    

    说明:这里只是为了演示,赋予的也是ROOT用户,在生产环境中请另外设置其他用户。

  4. 为从节点建立初态(其实就是备份的原始数据)

    比如这里我创建了一个appdb数据库,里面没有任何数据表。也就是说需要同步的appdb数据库的初态就是没有数据,这个简单,只需要在从库中建立一个相同的数据库。
    但往往实际环境中,有可能的场景是在一个已经上线的项目上扩展这个同步功能,此时需要同步的数据库是存在数据的,这时就需要先把数据复制到从节点,那么这时就可以用mysqldump命令来实现,导出一个xx.sql文件。然后在从节点导入这个sql文件即可实现从节点的初态。

  5. 重启mysql,登录mysql,显示主库信息

    >service mysqld restart
    >mysql -uroot -proot;
    >show master status;
    

    注意这里的File字段,Position字段必须记录下来,后面配置从节点时需要用到。

三、从节点的配置

  1. 配置 /etc/my.cnf —–这是mysql的配置文件
  2. 然后重启mysql:service mysqld restart。
  3. 用root用户登陆mysql服务,指定master的信息:

    mysql> stop slave;  #关闭Slave
    
    mysql> change master to master_host='192.168.5.108',master_user='root',master_password='root',master_log_file='mysql-bin.000002', master_log_pos=154;(这里的mysql-bin.000002和154就是对应主机mysql的二进制日志文件名和读写位置)
    
    mysql> start slave;  #开启Slave
    
  4. 验证配置是否成功 —命令:show slave status \G;


    请注意第九行的154,就是我们上面设置的位置,看到以上内容就证明配置成功了。

  5. 建立初态,虽然这里只需要简单的创建一个名称为appdb数据库,但却是同步的基础,当原始量有数据表数据时,这个时候就需要先导入上面的xx.sql文件。
  6. 测试

    在master上新建表test1,然后到slave上查看,会发现也多了个test1数据表(一开始是没有表的),
    在master上的test1表上插入一条数据,然后到slave的test1表中select查看一下,会发现同样的一条数据库。
    同样进行其他表的增删改,表数据的增删改,会发现slave已经完全同步了master中数据库为appdb的数据。
    

    到此已经成功的完成了一个mysql主从架构的备份,但是有个漏洞:
    比如说在数据同步中,如果我直接修改了从节点的数据,会怎样?这个我还没去验证,估计系统会报错,同时会停止slave的工作。毕竟这是已经违背了同步的初衷。所有需要完善,解决办法是不让用户修改从库中的数据。

  7. 待续

    既然有了同步数据,那么如何恢复?是否可以做mysql的HA?
    还有就是如果生产环境中误操作,如何回退数据?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值