zoukankan      html  css  js  c++  java
  • mysql5.6数据库双机热备、主从备份

    主题:mysql5.6数据库双机热备、主从备份

    缘由:

    在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一。尤其是在大规模系统中,数据库集群已经成为必备的配置之一。集群的好处主要有:查询负载、数据库复制备份等。其中Master负责写操作的负载,也就是说一切写的操作都在Master上进行,而读的操作则分摊到Slave上进行。这样一来的可以大大提高读取的效率。写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情。我们这样的分离是把写操作集中在一个节点上,而读操作其其他的N个节点上进行,从另一个方面有效的提高了读的效率,保证了系统的高可用性。——就不多说了,网上千篇一律,这段也是摘抄并整理的。

    环境:

      操作系统:WIndows7

      数据库:mysql5.6,并确保数据库是启动成功的。

      PC机或服务器:2台(假设分别命令为master服务器和slave服务器,这两台电脑相互可通信),环境均为以上配置。

    主过程:

    1、在master服务器配置mysql的my.ini文件中最小配置3个参数

    2、在slave服务器中最小配置2个参数

    3、完成之后在master服务器建立账号并做slave行为赋权,在slave服务器设定master行为赋权

    4、同步数据库。

    5、开启slave服务器的slave服务

    其实做之前觉得复杂,其实就这几个步骤,操作之后就会觉得so easy.

    具体过程:

    注意事项:

    1、关于参数中的横线及下划线:server-id或server_id一样,使用横线或下划线是一样的。

    2、关于my.ini的位置:如果是WINDOWS操作系统,从控制面板中打开服务,找到mysql服务,从服务器属性中可以看到my.ini的具体位置,别以为在默认的mysql文件夹的mydefault就是,不一定,我就是犯了这个错误,配置半天发现都无效,最后从服务中看到my.ini在C:ProgramDataMySQLMySQL Server 5.6/my.ini这个位置。

    1、在master服务器配置mysql的my.ini文件中最小配置3个参数

    server-id=1 #这是数据库ID,此ID是唯一的,ID值不能重复,否则会同步出错,值区间为1-32.

    log-bin = mysql-bin#二进制日志文件,此项为必填项,否则不能同步数据;如果不取名字的话,那么就会以    计算机的名字加编号来命名二进制文件;

    binlog-do-db = masters#需要同步的数据库,如果还需要同步另外的数据库,那么继续逐条添加,如果    不写,那么默认同步所有的数据库;

    binlog-ignore-db = mysql 不需要同步的数据库;

    以上参数设定好之后输入命令show master status,如果以上配置都成功就会出现一个列表,请记录里面的file和position参数。

    2、在slave服务器中最小配置2个参数

    从数据库的话只需要配置server-id,binlog-do-db,binlog-ignore-db即可。

    serverid需要和master服务器的区分开,binlog-do-db,binlog-ignore-d的参数需要和主服务器一致。

    3、完成之后在master服务器建立账号并做slave行为赋权,在slave服务器设定master行为赋权。

    1、在master服务器主数据库添加同步账号,这个账号用于salve服务器用这个账号登录master服务器并读取bin-log文件同步数据用,执行如下命令:

    命令格式:grant replication slave on *.* to '用户名称'@'SLAVE服务器地址' identified by '用户密码';
    例如执行:grant replication slave on *.* to 'slave'@'%' identified by 'slave';

    2、在slave服务器设定同步账号,这个账号用于salve服务器用这个账号登录master服务器并读取bin-log文件同步数据用,执行如下命令:

    mysql> change master to

           -> master_host='master服务器IP',

           -> master_user='master服务器设定的同步用户',

           -> master_password='master服务器设定的同步用户密码',

           -> master_log_file='上面我们提到的master服务器看到的file名称',

           -> master_log_pos=上面我们看到的master服务器看到的position参数;

    4、同步数据库。

    一切就绪,只欠东风!现在需要我们在同步之前把两台服务器的数据库做一下同步,并且确保master服务器这期间是不被写入和更改数据的。

    网上有很多锁库然后备份,完事在解锁的方式,就不多介绍了,我自己用的是navicat,直接在slave服务器建立一个库,库名和master服务器一致,然后打开master服务器这个库 拷贝所有表,粘贴到slave这个库上就可以了,比较简单而且快。

    5、开启slave服务器的slave服务即可。

    在slave服务器执行slave start命令,启动服务。

    验证是否同步:

    执行show slave statusG;

    slave_io_running和slave_sql_running两个参数均为YES就可以了。

    这时候随便你更改master上的这个数据库,都可以看到slave服务器的数据库被同步了。

  • 相关阅读:
    Cenots6.5 安装 Intel I219-V 网卡驱动
    nginx的安装
    NGINX 简介
    HTTP 并发响应模型
    日志相关的服务器参数详解:
    使用mysqlbinlog提取二进制日志(zz)
    浅谈mysql日志
    mysql DDL&DML 语言
    fastcgi与cgi的区别(zz)
    基于rancher部署Spring-cloud微服务系统
  • 原文地址:https://www.cnblogs.com/fan-yuan/p/7249249.html
Copyright © 2011-2022 走看看