目录
一、基于mysqldump实现,主从同步
二、基于xtrabackup实现,不停机主从同步
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;
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 同时使用时,先加全局读锁,然后设置事务一致性和使用一致性快照开始事务,然后马上就取消锁,然后执行导出。
5、将主库备份数据同步到从库,并导入到从库
导入数据:
mysql -u root -p < test_db.sql
使用head命令查看导出文件binlog信息
配置从库信息
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;
#注意 如果之前此从库已有主库指向 需要先执行以下命令清空
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;
存在大量历史数据的时候使用这个方式。
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信息