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

相关推荐
布莱克60516 小时前
理解索引:从概念到实践
数据库·mysql
g105655913919 小时前
LAMP博客平台Wordpress实战
android·mysql·nginx·php
我不是疯子是傻子19 小时前
Qt CAN通信周期发送抖动?实测定时器精度校准与时间戳补偿方案
开发语言·数据库·qt
这个DBA有点耶19 小时前
数据库迁移怎么做到“零翻车“:金仓 KDMS/KDTS/KFS 工具链实测
数据库·架构·dba
2501_9378609420 小时前
MySQL联合查询(多表查询)
数据库·mysql
名字还没想好☜20 小时前
Next.js 用 Server Components 直连数据库:去掉 API 层的边界,和三条别踩的安全红线
前端·javascript·数据库·安全·react·next.js
迷迭香yy21 小时前
行业板块轮动因子实战从板块资金到因子建模的本地化Python全流程
数据库·人工智能·python
SelectDB21 小时前
抖音集团 实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB1 天前
网易 日志与时序数据分析:Apache Doris / SelectDB 的技术能力与实践
数据库
weixin_539446781 天前
Navicat Premium 17报缺少ODBC驱动
数据库