码迷,mamicode.com
首页 > 数据库 > 详细

MySQL的复制

时间:2019-03-21 00:50:33      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:场景   star   日志同步   sync   创建   commit   热备   ssl   同步   

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、使用另外的备库

MySQL的复制

标签:场景   star   日志同步   sync   创建   commit   热备   ssl   同步   

原文地址:https://www.cnblogs.com/restart-zjc/p/10568854.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!