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就是同步成功。

相关推荐
还是鼠鼠15 分钟前
AI掘金头条新闻系统 (Toutiao News)-用户注册-创建用户
后端·python·mysql·fastapi·web
l1t26 分钟前
Hy-MT2-1.8B总结的pgvector 0.8.2解决了并行HNSW索引构建漏洞
数据库·人工智能·postgresql
我是一颗柠檬37 分钟前
【MySQL全面教学】MySQL条件查询与排序Day4(2026年)
数据库·后端·mysql
丷丩38 分钟前
Postgresql基础实践教程(四)
数据库·postgresql
六月雨滴41 分钟前
RMAN 增量备份(Incremental Backup)
数据库·oracle
2401_8788204742 分钟前
Redis+Lua脚本实现全局令牌桶限流
数据库·redis·lua
Slow菜鸟1 小时前
Maven 仓库下载机制
java·数据库·maven
身如柳絮随风扬1 小时前
Redis 主从复制与哨兵机制详解:从原理到高可用实战
数据库·redis·缓存
冰小忆1 小时前
类变量在继承场景下的初始化规则是怎样的?
java·前端·数据库
YL200404261 小时前
MySQL-运维篇-主从复制
运维·数据库·mysql