mysql主从配置一主一从

为什么需要主从配置??

主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展

多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能

下图就描述了一个多个数据库间主从复制与读写分离的模型:

此架构特点:

1、成本低,布署快速、方便

2、读写分离

3、还能通过及时增加从库来减少读库压力

4、主库单点故障

基础知识

主服务器(master):

  • 开启二进制日志
  • 配置唯一的server-id
  • 获取master二进制文件名及位置
  • 创建一个用于slave和master通信的用户账号

从服务器(slave):

  • 配置唯一的server-id
  • 二进制日志可开可不开
  • 使用master分配的用户账号读取master二进制日志
  • 启用slave服务

MySQL主从复制实践训练

环境准备

两台机器一主一从(生产环境中至少一主一从两台服务器)

注:ip地址必须不变

主库(mysql master):ip为192.168.126.131 port为3306

从库(mysql slave):ip为192.168.126.132 port为3306

MySQL版本要一致

主库配置

1.设置server-id 值并开启binlog参数

进入配置文件

bash 复制代码
vim /etc/my.cnf

添加

bash 复制代码
log-bin=mysql-bin
server-id=1

主从双备配置

log-bin=mysql-bin #开启二进制日志

server-id=1 #设置 server-id

之后重启MySQL库,使配置生效

sql 复制代码
systemctl  restart mysqld

2.建立同步账号

#创建用来传输数据的账号

create user 'rep'@'192.168.126.%' identified by 'Rep123456.';

#给这个账号赋予复制权限

grant replication slave on *.* to 'rep'@'192.168.126.%';

刷新授权

flush privileges;

查看权限情况

show grants for 'rep'@'192.168.126.%';

查看主库的状态

(MySQL9之后)

show binary log status;

(MySQL9之前)

show master status;

sql 复制代码
mysql> create user 'rep'@'192.168.126.%' identified by 'Rep123456.';
Query OK, 0 rows affected (0.01 sec)

mysql> grant replication slave on *.* to 'rep'@'192.168.126.%';
Query OK, 0 rows affected (0.00 sec)

mysql> 

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> 

mysql> show grants for 'rep'@'192.168.126.%';
+---------------------------------------------------------+
| Grants for rep@192.168.126.%                            |
+---------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `rep`@`192.168.126.%` |
+---------------------------------------------------------+
1 row in set (0.00 sec)


mysql> show binary log status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      880 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> 

注:需要记住主服务器的状态数据,从服务器需要配置:

从库配置

首先配置server-id ,注意server-id在进行主从配置的数据库服务器中是唯一的

主从双备配置

vim /etc/my.cnf

设置server-id,必须是唯一的

server-id=2

log-bin=mysql-bin

bash 复制代码
server-id=2
log-bin=mysql-bin

之后重启MySQL库,使配置生效

sql 复制代码
systemctl  restart mysqld

2.进入从服务器,执行命令

mysql -uroot -p

9版本中

mysql> change replication source to

-> source_host='192.168.126.131',

-> source_user='rep',

-> source_password='Rep123456.',

-> source_log_file='mysql-bin.000001',

-> source_log_pos=880,

-> source_port=3306;

9版本前

mysql> change master to

-> master_host='192.168.126.131',

-> master_user='rep'

-> ,master_password='Rep123456.',

-> master_log_file='mysql-bin.000001',

-> master_log_pos=880;

开始复制

启动从库同步开关

9后

start replica;

9前

start slave;

检查状态

show replica status\G;

MySQL9前

MySQL9后

完毕!!

相关推荐
聚美智数7 小时前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
JavaPub-rodert8 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
瀚高PG实验室8 小时前
SQL优化案例:存储过程、复杂SQL拆成简单SQL提升整体性能
数据库·sql·postgresql·瀚高数据库
Wang's Blog8 小时前
PostgreSQL笔记36:执行计划基础解读与优化器成本模型
数据库·笔记·postgresql
Wang's Blog8 小时前
PostgreSQL笔记35:索引常见问题诊断与解决方案全景解析
数据库·笔记·postgresql
LayZhangStrive8 小时前
后端通识 - 后端开发职位接触的开发流程
数据库·prd·技术方案·库表设计·后端开发流程
爱吃火鸡面呀9 小时前
MySQL 查询与函数详解:从基础条件筛选到高级字符处理
数据库·mysql
奥莱维9 小时前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库
牛大兵9 小时前
机顶盒获取局域网已经使用IP,开放的端口号,扫描摄像头,NAS,共享主机等开机自启局域网全量扫描工具
数据库·网络协议·tcp/ip
知行产研9 小时前
中国矿山无人驾驶出海的三重门
数据库·mysql·php