(5.9)mysql高可用系列——正常主从切换测试

【0】实验环境

操作系统:CentOS linux 7.5

数据库版本:5.7.24

数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制。

主库IP:192.168.1.201  端口:3306

从库IP:192.168.1.202  端口:3306

 

【1】主从切换

主从配置文件参数

(1)主库要把自 #slave replication 行下面的所有配置注释掉(其实主库也可以全部开启)

(2)从库可以把所有参数都开启

复制代码
#replication_new
log_bin=/mysql/log/3306/binlog/mysql-bin #开启binlog
log_bin_index=/mysql/log/3306/mysql-bin.index
binlog_format=row
binlog_rows_query_log_events=on
max_binlog_size=2048

bind-address=0.0.0.0
server_id=2013306 #注意,这里从库的server_id和主库一定不能一样
expire_logs_days=7 #超过7天的binlog清理
innodb_support_xa=1
binlog_cache_size=1M
log_bin_trust_function_creators=1 #同步存储过程、函数、触发器
innodb_flush_log_at_trx_commit=1
sync_binlog=1
transaction-isolation=read-committed

#增加的GTID参数
gtid_mode=on
enforce_gtid_consistency=1 #on:当发现语句/事务不支持GTID时,返回错误信息
log-slave-updates=1
binlog_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_CLOCK slave-parallel-workers=4 master_info_repository=table #master_info 会记录到 mysql.slave_master_info relay_log_info_repository=table #relay_log 会记录到,mysql.slave_relay_log_info relay_log_recovery=1 slave_skip_errors=ddl_exist_errors slave_preserve_commit_order=1
复制代码

 操作设置

复制代码
【1.1】主从都需要开二进制日志,切换的时候,确认从库的数据时最新的
-- 主库:192.168.1.201 set global read_only=1; -- 主库设置全局只读模式。
flush logs;        -- 刷新日志(binlog)
show master status;   -- 查看binlog状态,记录日志文件名和位置点pos

【1.2】确认从库202应用完了所有的中继日志
-- 从库:192.168.1.202
show slave status\G -- 或者也可以show processlist;查看
-- or select master_pos_wait(file,post); -- 用主库的文件在备库上查询,差距为0即为同步
stop slave;
reset master;
reset slave; -- 删除从数据库的中继日志文件,并且启用新的中继日志文件以及 重置change master信息
        -- 不清理掉,下次重启服务还会开启从线程,把自己当从库做。
show master status; -- 记录binlog状态,记录日志文件名和位置点pos

【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
vi /mysql/data/3306/mysql.cnf

从库: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
new从库:201
mysql -uroot -p123456

change master to
master_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核验
复制代码

 

参考:

  Mysql复制的日常维护管理:https://www.cnblogs.com/gered/p/11388986.html

posted @   郭大侠1  阅读(405)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2018-08-31 图形界面执行计划图标释义
点击右上角即可分享
微信分享提示