MySQL主从模式是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。
MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,从节点可以复制主数据库 中的所有数据库,或者特定的数据库,或者特定的表。
Mysql主从同步是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,整个过程需要开启3个线程,分别是Master开启IO线程,slave开启IO线程和SQL线程。
主从复制的优点:
1.实时灾备,用于故障切换(高可用)。服务器或者数据库突然砸机了,可以立即切换到从数据库,然后修改读写设置。
2.读写分离,提供查询服务(读扩展)
3.数据备份,避免影响业务(高可用)
【具体操作】
两台服务器安装mysql后:
主master : 8.210.238.162
从slave : 47.243.35.119
【主库】
主节点(Master)配置。修改 Master 的配置文件/etc/my.cnf
```
vim /etc/my.cnf
```
在my.cnf文件中加入如下配置内容
```
[mysqld]
server_id=1
log-bin=mysql-bin
```
```
service mysqld restart # 重启mysql 方法1
```
mysql运行
```
mysql -u root -p
use mysql;
set global validate_password.policy=0; # 设置密码强度为low
set global validate_password.length=4; # 设置密码长度
CREATE USER 'user1'@'47.243.35.119' IDENTIFIED WITH mysql_native_password BY 'password1';
GRANT REPLICATION SLAVE ON *.* TO 'user1'@'47.243.35.119';
flush privileges;
```
```
SHOW MASTER STATUS; # 获取主节点当前binary log文件名和位置(position)
```
【从库】
从节点(Slave)配置。修改 Slave 的配置文件/etc/my.cnf
```
vim /etc/my.cnf
```
在my.cnf文件中加入如下配置内容
```
[mysqld]
server-id=2
```
```
systemctl restart mysqld # 重启mysql 方法2
```
mysql运行
```
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='8.210.238.162',
MASTER_USER='user1',
MASTER_PASSWORD='password1',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=156;
```
```
start slave; #开启主从同步
stop slave; #关闭主从同步
show slave status \G; 查看主从同步状态
```
清除主从配置
```
reset master; # 主库
reset slave all; # 从库,先stop slave; 参数all将内存中的数据也会被清除掉。
```
参考:
[https://www.cnblogs.com/atcloud/p/10773855.html](https://www.cnblogs.com/atcloud/p/10773855.html)
[https://www.freesion.com/article/9714681852/](https://www.freesion.com/article/9714681852/)
- 分布式架构设计概要
- 技术管理
- 1.流程规范
- 2.精准效率
- 3.同步工具
- 代码审核
- 编程思想
- 控制反转和依赖注入
- public、private、protected
- MySQL
- MySQL安装
- MySQL常用
- MySQL主从配置
- 读写分离
- 分库分表
- 高可用
- MySQL集群
- MySQL优化
- MySQL慢查询优化
- 数据结构
- MySQL备份
- MySQL導出導入
- MSSQL
- 導出導入
- Redis
- Redis日常操作
- Redis安装
- Redis主从配置
- Redis哨兵
- 队列
- 分布式式锁
- Redis集群
- redis的缓存雪崩与缓存穿透
- Linux
- Linux基本操作
- Linux基础操作1
- Linux安装
- Linux安装Nginx
- Linux安装MySQL
- Linux安装PHP
- Linux安装Redis
- Linux安装Swoole
- Linux安装Elasticsearch
- Linux安装Mycat
- Linux优化
- 集群
- 服务器管理
- Nginx
- Nginx 首页外链接出现404问题
- Nginx常用命令行
- LNMP一键安装的404错误
- http和https站点设置
- Linux shell expect spawn
- Ubuntu环境
- 宝塔
- 定时任务
- Windows
- 生成OpenSSL证书
- Git
- Git基本操作
- Git练习
- Git上传到远程仓库,远程仓库更新到指定文件夹
- Git案例1
- Git案例2
- Git部署
- 远程连接
- 服务器原理
- 进程和线程
- 腾讯云
- 宝塔命令行
- 消息队列系统
- RabbitMQ
- RabbitMQ+Laravel
- Kafka
- Elasticsearch
- Laravel+Elasticsearch
- Elasticsearch Demo:ES搜索题目和内容
- 分布式
- PHP
- Laravel高级集成开发
- PHP技术栈
- LNMP
- LNMP+Laravel出现问题
- PHP+MySQL
- PHP连接MySQL
- PHP+Redis
- PHP连接Redis
- PHP+Redis简单操作
- Laravel+Redis
- Laravel+Swoole
- Swoole
- Swoole TCP案例
- Swoole HTTP案例
- Sswoole WebSocket案例
- Swoole发短信案例
- ThinkPHP
- Java技术栈
- 文档参考
- docker
- docker一般使用
- docker项目1
- docker+lnmp
- docker搭建wordpress
- Docker部署单体到微服务架构(Laravel)
- Docker部署单体到微服务架构(Spring Boot)
- docker部署vue项目
- Dockerfile
- 其他
- 笔记1
- 笔记2
- 开发速度
- 代码质量
- 踩过的坑
- 编辑器
- VSCode