本文共 2162 字,大约阅读时间需要 7 分钟。
【0】实验环境
操作系统:CentOS Linux 7.5
数据库版本:5.7.24数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制。主库IP:192.168.1.201 端口:3306
从库IP:192.168.1.202 端口:3306【1】主从切换
主从配置文件参数
(1)主库要把自 #slave replication 行下面的所有配置注释掉(实际主库也可以全部开启)
#replication_new
log_bin=/mysql/log/3306/binlog/mysql-bin #开启binlog
log_bin_index=/mysql/log/3306/mysql-bin.indexbinlog_format=rowbinlog_rows_query_log_events=onmax_binlog_size=2048bind-address=0.0.0.0server_id=2013306#注意,这里从库的server_id和主库一定不能一样expire_logs_days=7#超过7天的binlog清理innodb_support_xa=1binlog_cache_size=1Mlog_bin_trust_function_creators=1#同步存储过程、函数、触发器innodb_flush_log_at_trx_commit=1sync_binlog=1transaction-isolation=read-committed #增加的GTID参数
gtid_mode=on
enforce_gtid_consistency=1 #on:当发现语句/事务不支持GTID时,返回错误信息log-slave-updates=1binlog_gtid_simple-recovery=1 #5.7.6以下默认为off,5.7.6以上默认为on #slave replication ----从这行起,下面的所有行,在主库注释掉
relay_log=/mysql/log/3306/relaylog/mysql-relay.log
log-slave-updates=1#read_only=1 --主库要注释掉,从库最好放开slave-parallel-type=LOGICAL_CLOCKslave-parallel-workers=4master_info_repository=table #master_info 会记录到 mysql.slave_master_inforelay_log_info_repository=table #relay_log 会记录到,mysql.slave_relay_log_inforelay_log_recovery=1slave_skip_errors=ddl_exist_errorsslave_preserve_commit_order=1 操作设置
【1.1】主从都需要开二进制日志,切换的时候,确认从库的数据时最新的
-- 主库:192.168.1.201
set global read_only=1;flush logs;show master status; 【1.2】确认从库202应用完了所有的中继日志
-- 从库:192.168.1.202
show slave status\G或select master_pos_wait(file,post);stop slave;reset master;reset slave; 【1.3】如果从库202上没有复制账户,需要创建
【1.4】主库201上,也需要清理相关的master和slave信息
reset master;
reset slave;show master status; 【1.5】主从库的配置相关参数要改变启用
主库:201
cp /mysql/data/3306/my.cnf /mysql/data/3306/my.cnf.master 从库:202
cp /mysql/data/3306/my.cnf /mysql/data/3306/my.cnf.slave vi /mysql/data/3306/mysql.cnf
service mysql restart
【1.6】new_slave 201 连接 new master 202
mysql -uroot -p123456
change master tomaster_host='192.168.1.202',master_port=3306,master_user='rpl',master_password='123456'master_auto_position=1; start slave;
【1.7】数据测试new 主库:202
create database test;
use test;create table test1;insert into test1 values(1);commit; -- new从库201核验
参考:
转载地址:http://jhdfk.baihongyu.com/