时间:2021-07-01 10:21:17 帮助过:16人阅读
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 同步