zoukankan      html  css  js  c++  java
  • MySQL的复制

    MySQL复制
    复制比较常见的用途是:数据分享、负载均衡、备份、高可用和故障切换以及MySQL升级测试等。

    MySQL支持两种复制方式,基于行的复制和基于语句的复制。
    1、基于语句的复制发生问题容易定位,但是使用触发器或者存储过程时容易出现错误;
    2、基于行的复制几乎没有该复制模式无法处理的场景,但是出现问题时人难认为的查找问题点。

    这两种方式都是通过在主库上记录二进制日志,在备库重放日志的方式来实现异步的数据复制。
    MySQL能够在两种模式之间动态切换,默认情况是基于语句的复制,无法正确复制时就切换成基于行复制。

    复制有三个步骤:

      1、在主库上把数据更改记录记录到二进制日志(Binary Log)中;

      2、备库将主库上的二进制日志复制到自己的中继日志(Relay Log)中;

      3、备库读取中继日志中的事件,将其重放到备库数据之上。

       配置复制

          1、在每台服务器上创建复制账号;
            主库:grant replication savle,replication client on *.* to rep1@'192.168.0.%' identified by 'password';
              监控和管理复制账号需要用到replication client权限,用一个账号更方便。
          2、配置主库和备库(配置完成均需重启)
            主库my.cnf文件
              log_bin = 绝对路径/mysql-bin
              server_id = 10 #(唯一的服务器ID)
    推荐的复制配置
    sync_binlog = 1 #MySQL每次提交事务前会将二进制日志同步到磁盘,服务器崩溃时不丢失事件。
    如果主库使用innodb,强烈建议设置:均为MySQL5.0及新版本默认设置
    innodb_flush_logs_at_trx_commit #刷新日志写入
    innodb_support_xa = 1 #
    innodb_safe_binlog


         可以使用 show master status; 查询主库上的二进制文件是否创建

    备库my.cnf文件
              log_bin = mysql_bin #二进制文件命名
              server_id = 2 #备库服务器ID
              relay_log = 绝对路径/mysql-relay-bin #指定中继日志的位置和命名
              log_slave_updates = 1 #允许备库将重放的事件,也记录到自己的二进制日志中,方便备库成为其他服务器的主库
              read_only = 1 #设置只读形式,禁止没有超级管理员权限的线程修改数据
    skip_slave_start #阻止备库在崩溃后自动启动复制
    sync_master_info = 1
    sync_relay_log = 1
    sync_relay_log_info = 1 #将主库连接设置和中继日志同步到磁盘
    relay_log_purge # 延迟大时,重放完成后会删除执行过的中继日志
    relay_log_space_limit # 延迟非常严重时,中继日志大小超过此值,线程停止,等待释放空间
    expire_logs_days # 日志清理策略

    3、启动复制
    登录备库复制账号
    执行以下命令:change master to master_host='server1', #假设主库是服务器server1
    master_user='rep1',
    master_password='password',
    master_log_file='mysql-bin.000001',
    master_log_pos=0; #要从日志的开头读起
    可以使用 show slave status;查询复制是否正确执行
    start slave; #开始复制
    show prosslist 查看线程列表
    --实验MySQL复制,Giuseppe Maxia的沙箱脚本(http://mysqlsandbox.net)
    --能够帮助你从一个之前下载的安装包中一次性安装。通过如下命令:
    -- $ ./set_replication.pl /path/to/mysql-tarball.tar.gz
    克隆备库的方法
    1、冷备份 --缺点是需要关闭主库
    2、热备份 --如果仅使用MyISAM表,可在主库运行时使用mysqlhotcopy或rsync来复制数据
    3、使用mysqldump --如果只包含InnoDB表,
    4、使用快照或备份
    5、使用Percona Xtrbackup
    6、使用另外的备库

  • 相关阅读:
    从客户端(Content="<p>666</p>")中检测到有潜在危险的 Request.Form 值。
    VS插件集
    Carmack在QUAKE3中使用的计算平方根的函数
    自动匹配HTTP请求中对应实体参数名的数据(性能不是最优)
    webapi单元测试时出现的ConfigurationManager.ConnectionStrings为空错误
    @@IDENTITY在加触发器时返回错误的ID值
    Protobuf完整实例
    Apache配置多个监听端口和不同的网站目录的简单方法[转]
    ThinkPHP 小技巧
    复选框 ajax取得后台页面
  • 原文地址:https://www.cnblogs.com/restart-zjc/p/10568854.html
Copyright © 2011-2022 走看看