简介
主从复制是指从一个MySQL服务器(Master-主服务器)数据复制到一个或者多个服务器(Slave-从服务器)上。
单机Mysql的问题
- 服务器压力较大。
- 单机故障,导致项目不可用。
- MySQL对多核CPU利用率较低。
主从复制
MySQL主从复制是一个异步的数据复制过程,MySQL支持单向、双向、链表多种不同业务场景的复制,主要是基于MySQL数据库自带的二进制日志(BINLOG)来进行解析,更新到从库当中,从而使主从服务器达到一致。
二进制日志(BINLOG):主要记录了所有的
DDL
和DML
语句,MySQL的二进制日志是事务安全型的。BINLOG的主要目的是用来进行 复制和恢复。不过默认MySQL是未开启BINLOG日志的。
如何启用BINLOG
登录mysql服务
mysql -uroot -p
查看是否启用binlog日志
mysql> show variables like 'log_bin';
配置 /etc/my.cnf 中的 log-bin 选项 如下:
log-bin 设置启用二进制日志
server-id 设置服务器Id 主从不能一致
#启用二进制日志
log-bin=my-binlog-name
#设置服务器ID
server-id=110
重启MySQL服务
mysql> systemctl restart mysqld
配置主从复制
主库配置
步骤1.先配置上述启用BINLOG和服务器ID
步骤2.创建一个用户并授予复制 (REPLICATION SLAVE )的权限
GRANT REPLICATION SLAVE ON *.* to 'duck'@'%' identified by 'duck@sync';
步骤3.查看master的状态
show master status
主要查看生成的文件名File 和 随机写入点 Position 配置从库时会用到这两个参数
从库配置
步骤1.配置 /etc/my.cnf 中的 服务器ID server-id
#设置服务器ID 保证和主库不一致即可
server-id=111
步骤2.重启MySQL服务
mysql> systemctl restart mysqld
步骤3. 从库连接到主库
mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.110',
MASTER_USER='duck',MASTER_PASSWORD='duck@sync',
MASTER_LOG_FILE='binlog.000031',MASTER_LOG_POS=429327;
参数解析:
- MASTER_HOST: 主库的IP地址
- MASTER_USER : 主库主从复制的用户名(主库配置步骤2中配置的用户名)
- MASTER_PASSWORD : 访问主库进行主从复制的密码(主库配置步骤2中配置的密码)
- MASTER_LOG_FILE : 开始同步文件(主从配置步骤3中的File)
- MASTER_LOG_POS : 同步偏移量(主从配置步骤3中的Position)
步骤4. 启动从库
mysql> start slave;
步骤5.查看从库的状态
mysql> show slave status
主要查看 Slave_IO_Runing 和 Slave_SQL_Running两个参数为 Yes 则说明基本已经配置完成,自行创建数据库测试即可。