MySQL 主从配置

目录

一、基于mysqldump实现,主从同步

二、基于xtrabackup实现,不停机主从同步


一、基于mysqldump实现,主从同步


1、修改主库配置
[mysqld] 
#开启日志 
log-bin = mysql-bin 
#设置服务id,主从不能一致 
server‐id = 131
#设置需要同步的数据库 
binlog-do-db=test_db 
#屏蔽系统库同步 
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema


#配置GTID,如需要通过GTID同步则需要配置以下参数
#(必选)
gtid_mode=on
#(必选)
enforce_gtid_consistency=1
#(可选)高可用切换,最好开启该功能
log_bin=mysql-bin

2、修改从库配置
[mysqld]
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
serverid = 132
#设置需要同步的数据库
replicate_wild_do_table=test_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=sys.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

#配置GTID,如需要通过GTID同步则需要配置以下参数
gtid_mode=ON
enforce_gtid_consistency=on
relay_log_recovery = 1
master_info_repository = TABLE
relay_log_info_repository = TABLE

3、在主库创建用于主从复制的账号
#切换至主库bin目录,登录主库
mysql ‐h localhost ‐uroot ‐p
#授权主备复制专用账号
CREATE USER 'db_syn'@'%' IDENTIFIED with mysql_native_password  BY 'syn-123';
GRANT REPLICATION SLAVE ON *.* TO 'db_syn'@'%';
#刷新权限
FLUSH PRIVILEGES;
#确认位点 记录下文件名以及位点
show master status;

MySQL 主从配置_第1张图片

4、基于mysqldump实现,备份主库数据
5.7使用 --master-data=2
mysqldump -u root -p  --master-data=2  --single-transaction --databases test_db > test_db.sql
8.0使用 --source-data
mysqldump -u root -p  --source-data  --single-transaction --databases test_db > test_db.sql

当master_data和 single_transaction 同时使用时,先加全局读锁,然后设置事务一致性和使用一致性快照开始事务,然后马上就取消锁,然后执行导出。

MySQL 主从配置_第2张图片

5、将主库备份数据同步到从库,并导入到从库
 导入数据:
mysql -u root -p < test_db.sql

使用head命令查看导出文件binlog信息

MySQL 主从配置_第3张图片

 配置从库信息
 STOP SLAVE;
基于binlog实现
 CHANGE MASTER TO master_host = '192.168.1.219',master_user = 'db_syn',master_password = 'syn-123',master_log_file = 'mysql-bin.000006',master_log_pos = 197;
 基于GTID实现
 change master to master_host = '192.168.1.219',master_user='db_syn' , master_password = 'syn-123' ,master_auto_position=1;
    
 START SLAVE;
 show slave status\G;

MySQL 主从配置_第4张图片

#注意 如果之前此从库已有主库指向 需要先执行以下命令清空
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;


6、验证主从同步
  主库插入
  MySQL 主从配置_第5张图片
  从库查询

MySQL 主从配置_第6张图片

二、基于xtrabackup实现,不停机主从同步


存在大量历史数据的时候使用这个方式。

1、下载mysql对应版本解压即可使用
2、备份数据
 /data/opt/xtrabackup/bin/xtrabackup --user=root --password=wsx-123 --port=3306 --compress --compress-threads=4 --socket=/tmp/mysql.sock --backup --target-dir=./mysql_backup >> backup.log 2>&1
 
3、 迁移数据到从库
 scp -r mysql_backup [email protected]:
 
 4、停止从库,清空mysql数据目录
 rm -rf /data/mysql/*
 
5、解压数据(如果备份时使用compress压缩)
 /data/opt/xtrabackup/bin/xtrabackup --decompress --target-dir=./mysql_backup
解压需要安装qpress,具体可参考https://rhel.pkgs.org/7/percona-x86_64/qpress-11-3.el7.x86_64.rpm.html

 6、预处理数据
 /data/opt/xtrabackup/bin/xtrabackup --prepare --target-dir=./mysql_backup--prepare
 
7 导入数据
 /data/opt/xtrabackup/bin/xtrabackup --defaults-file=/etc/my.cnf --copy-back --datadir=/data/mysql/  --target-dir=./mysql_backup

8、修改数据文件权限
chown -R mysql:mysql /data/mysql
9、使用cat命令查看导出文件binlog信息

MySQL 主从配置_第7张图片
10、启动从库,参考上一节配置从库信息

你可能感兴趣的:(mysql)