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

相关推荐
XDHCOM1 天前
ORA-32484重复列名错误,ORACLE数据库CYCLE子句故障修复与远程处理方案
数据库·oracle
翻斗包菜1 天前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
呆瑜nuage1 天前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql
liliangcsdn1 天前
Agent Memory智能体记忆系统的示例分析
数据库·人工智能·全文检索
那个失眠的夜1 天前
Mybatis延迟加载策略
xml·java·数据库·maven·mybatis
Rick19931 天前
SQL 执行流程
数据库·sql
M--Y1 天前
Redis常用数据类型
数据结构·数据库·redis
元宝骑士1 天前
FIND_IN_SET使用指南:场景、优缺点与MySQL优化策略
后端·mysql
猿小喵1 天前
MySQL慢查询分析与处理-第二篇
数据库·mysql·性能优化
Y001112361 天前
MySQL-进阶
开发语言·数据库·sql·mysql