Centos7 Mysql 5.7 读写分离

1.两台机器,一个主192.168.1.101,一个从192.168.1.102。

先在主机器上创建一个专用的复制用户repl

sql 复制代码
CREATE USER 'repl'@'192.168.1.102' IDENTIFIED BY 'R2026@copy01';

授权

sql 复制代码
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.102';

刷新缓存

sql 复制代码
FLUSH PRIVILEGES;

2.备份主库

指定要同步的数据库

sql 复制代码
mysqldump -uroot -p \
  --single-transaction --set-gtid-purged=ON --master-data=2 \
  --databases mydatabase > mydatabase_$(date +%F).sql

--single-transaction 的核心就是"在不加任何表锁的前提下拿到一致性快照 ",只对 InnoDB 表生效

全库备份

sql 复制代码
mysqldump -uroot -p \
  --single-transaction --master-data=2 \
  --set-gtid-purged=ON --all-databases \
  > all_$(date +%F).sql

从库必须是空实例 (或先 RESET MASTER; RESET SLAVE ALL;

3.将主库备份好的sql复制到从库服务器上,在从库服务器上执行以下语句进行恢复。

sql 复制代码
mysql -uroot -p < mybase_$(date +%F).sql

恢复完成后。

在从库执行以下语句:

sql 复制代码
CHANGE MASTER TO
  MASTER_HOST='192.168.1.101',
  MASTER_USER='repl',
  MASTER_PASSWORD='R2026@copy01',
   MASTER_AUTO_POSITION=1;

MASTER_AUTO_POSITION=1 接主库,从库会自动从"导出快照点"继续拉 binlog.

4.修改两边mysql的配置文件 /etc/my.cnf

主:

sql 复制代码
server_id               = 1
log_bin                 = /pub/data/log/mysql-bin
relay_log               = /pub/data/log/relay-bin
expire_logs_days        = 1
binlog_format           = ROW
binlog_cache_size       = 4M
gtid_mode               = on
enforce_gtid_consistency = 1
log_slave_updates       = 1
log_bin_trust_function_creators = 1
sync_binlog             = 1
innodb_flush_log_at_trx_commit = 1
binlog_checksum         = CRC32
slave_sql_verify_checksum = 1
slave_parallel_workers  = 12
slave_parallel_type     = LOGICAL_CLOCK

从:

sql 复制代码
server_id               = 2
log_bin                 = /pub/data/log/mysql-bin
relay_log               = /pub/data/log/relay-bin
expire_logs_days        = 1
binlog_format           = ROW
binlog_cache_size       = 4M
gtid_mode               = on
enforce_gtid_consistency = 1
log_slave_updates       = 1
log_bin_trust_function_creators = 1
sync_binlog             = 1
innodb_flush_log_at_trx_commit = 1
binlog_checksum         = CRC32
slave_sql_verify_checksum = 1
slave_parallel_workers  = 12
slave_parallel_type     = LOGICAL_CLOCK
read_only               = 1 
replicate-do-db         = mydatabase

用 replicate-do-db = mydatabase 指定要复制的数据库.

改完配置要重启数据库

sql 复制代码
systemctl restart mysqld

查看主节点状态:

sql 复制代码
SHOW MASTER STATUS

从库命令

sql 复制代码
 stop SLAVE;
 START SLAVE;
 SHOW SLAVE STATUS;

观察

都是Yes就是同步成功。

相关推荐
WangYaolove13141 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
山岚的运维笔记2 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
roman_日积跬步-终至千里3 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科3 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦3 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总3 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法
晚霞的不甘4 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
市场部需要一个软件开发岗位5 小时前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
海奥华25 小时前
mysql索引
数据库·mysql
2601_949593655 小时前
深入解析CANN-acl应用层接口:构建高效的AI应用开发框架
数据库·人工智能