222_mysql_复制技术_搭建主从异步复制

举报
alexsully 发表于 2021/11/12 12:58:05 2021/11/12
【摘要】 搭建复制

14 搭建主从环境

1 空库无数据 传统 & GTID复制

master
	grant replication slave on *.* to repl@"%" identified by "replpass";

slave 
    1 传统 binlog & pos
	change master to master_host="ip", master_user="repl", master_password="xxx", master_port=3306, 
	master_log_file="mysql-bin.000001" ,  master_log_pos=0;
	
	2 GITD方式_
	change master to master_host="ip", master_user="repl", master_password="xxx", master_port=3306, master_auto_position=1;
	
	start slave;
	show slave status \G;

2 已有数据场景 需要数据导入(mysqldump & xtrabackup

1 mysqldump + sysbench造数据 + 传统方式/GTID 

master 

1.1 压入数据 + 模拟持续写入业务
	 create database sysbench;
	 grant all on *.* to sysbench@"%" identified by "sysbench"
	 
	 sysbench --db-driver=mysql --time=180 --report-interval=1 --mysql-host=ip --mysql-port=3306 --mysql-user=sysbench --mysql-password=xxx
	 --mysql-db=sysbench --tables=8 --table-size=5000  --db-ps-mode=disable oltp_read_wirte prepare --thread =8 
	 
	 #–-db-ps-mode=STRING SQL是否需要预编译,模式有:auto/disable,默认为disable
	 # --table-size=5000 行
	 
	 grant replication slave on *.* to repl@"%" identified by "replpass";
	 
	 sysbench --db-driver=mysql --time=99999 --report-interval=1 --mysql-host=ip --mysql-port=3306 --mysql-user=sysbench --mysql-password=xxx
	 --mysql-db=sysbench --tables=8 --table-size=5000  --db-ps-mode=disable oltp_read_wirte run --thread =1
	 
	 
 1.2 mysqldump 备份
      #--master-data=2 以注释的形式,保存备份开始时间点的binlog的状态信息
     #--single-transaction,只对非InnoDB表进行锁表备份,InnoDB表进行热备,实际上是实现快照备份
	mysqldump -h ip -usysbench -pxxx -P3306 --single-transactioin --master-data=2 --triggers --routines --events --all-databases  --set-gtid-purged=ON  --max-allowed-packet= 256M > /data/back_up_`date +%F_%H_%M_%S`.sql
	scp /data/backup_2021-xx-xx_xx_xx_xx.sql ip:/data/

slave 
	1.1 导入数据
	    登录进去 set sql_log_bin=0; source   /data/backup_2021-xx-xx_xx_xx_xx.sql
		不登录: mysql -uroot -pxxxx -P3306  < /data/backup_2021-xx-xx_xx_xx_xx.sql
	
	1.2传统方式
		
	 查看位点信息
		head -100 /data/backup_2021-xx-xx_xx_xx_xx.sql  | grep -i "change master"
		 -- chanage master to  master_log_file="mysql-bin.000002", master_log_pos = 123456789;
		 
	 指定位点
			
		change master to master_host="ip", master_user="repl", master_password="xxx", master_port=3306, 
		master_log_file="mysql-bin.000001" ,  master_log_pos=123456789;
	
	
	1.3 GTID方式
	  查看位点信息:
		head -100 /data/backup_2021-xx-xx_xx_xx_xx.sql  | grep -i "gtid"
		--GTID state at beginning of the backup
		set @@GLOBAL.GTID_PURGED='XXXXXXX: 1-11322'
	  
	  指定位点
	    RESET MASTER;
		  #备份文件中有SET @@GLOBAL.GTID_PURGED='XXXXXXX: 1-11322'; 无需手动执行
		Change master to master_host="ip", master_user="repl", master_password="xxx", master_port=3306, master_auto_position=1;	
			
	1.4	 启动slave: start slave;

2 Xtrabackup

yum install percona-xtrabackup

8.0.20版本,需要使用PXB 8.0.12+以上版本;PXB 8.0 只能备份 MySQL 8.0 ,不能备份低版本 ; 低版本MySQL 使用PXB2.4版本

1.全量备份
innobackupex --defaults-file=/etc/my.cnf --host=ip --user=sysbench --password=xxx --port=3306 --no-timestamp --stream=tar ./ | cat - > /data/back_up_`date +%Y%m%d`.tar.gz  

2 传给slave: scp /data/back_up_20211105.tar.gz  ip:/data/

3 slave  #清空数据目录 和binlog 目录
	mkdir /data/newdata
	mv /data/back_up_20211105.tar.gz /data/newdata/
	tar -xf /data/back_up_20211105.tar.gz /data/newdata/
	cd /data/newdata/
	innobackupex --apply-log --user-memory =1G ./
	innobackupex --defaults-file = /etc/my.cnf --copy-back ./
	
或者使用参数--datadir替换掉参数--defaults-file.  同时会默认读配置文件
xtrabackup --host=ip --user=root --password=xxx --port=3306 --datadir=/data/xxx/ --backup --target-dir=/data/backup/full
xtrabackup (--host=10.0.0.51 --user=root --password=123 --port=3306) --prepare --target-dir=/data/backup/full
xtrabackup (--host=10.0.0.51 --user=root --password=123 --port=3306 --datadir=/数据库目录) --copy-back --target-dir=/data/backup/full

补充
cat xtrabackup_binlog_info
--mysql-bin.000001   XXXXXXX: 1-11322   或者 position号 xxxxxxx
cat xtrabackup_checkpoints
--backup_type = full-backuped from lsn =0 to_lsn=223224  last_lsn=2102332  flushed_lsh = 0
cat xtrabackup_info   # 记录全备相关信息 xtrabackup_binlog_info + xtrabackup_checkpoints


4 传统 & GTID 

	4.1 传统模式
		change master to master_host="ip", master_user="repl", master_password="xxx", master_port=3306, 
		master_log_file="mysql-bin.000001" ,  master_log_pos= XXXXXXX;
	4.2 GTID 模式
		  SET @@GLOBAL.GTID_PURGED='XXXXXXX: 1-11322'; 
		  Change master to master_host="ip", master_user="repl", master_password="xxx", master_port=3306, master_auto_position=1;	

5 启动start slave 

3 GTID复制相关配置
	GTID_MODE =ON
	Log_slave_updates = ON 
	enforce-gtid-consistency = true

4 8.0版本创建用户
	create user "repl"@"%" identified with mysql_native_password by "xxxxxxx" 
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。