一、主从复制原理
二、环境准备
192.168.140.131 主库
192.168.140.132 从库
三、主库配置
1、修改配置文件 /etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一,取值范围:1-232-1,默认为1 server-id=1 #是否只读,1代表只读,0代表读写 read-only=0 #忽略的数据,指不需要同步的数据库 #binlog-ignore-db=mysql #指定同步的数据库 #binlog-do-db=db01
2、重启mysql服务
systemctl restart mysqld
3、登录mysql,创建远程连接的账号,并授予主从复制权限
#创建itcast用户,并设置密码,该用户可在任意主机连接该mysql服务 create user 'itcast'@'%' identified by 'Xiaohemiao_123'; #为'itcast'@'%'用户分配主从复制权限 GRANT REPLICATION SLAVE ON *.* TO 'itcast'@'%';
4、通过指令,查看二进制日志坐标
show master status;
字段含义说明:
file:从哪个日志文件开始推送日志文件
position:从哪个位置开始推送日志
binlog_ignore_db:指定不需要同步的数据库
四、从库配置
1、修改配置文件 /etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一,取值范围:1-232-1,默认为1 server-id=2 #是否只读,1代表只读,0代表读写 read-only=1
2、重启mysql服务
systemctl restart mysqld
3、登录mysql ,设置主库配置
CHANGE REPLICATION SOURCE TO SOURCE_HOST='',SOURCE_USER='',SOURCE_PASSWORD='',SOURCE_LOG_FILE='',SOURCE_LOG_POS=; 上述是8.0.23中的语法,如果mysql是8.0.23之前的版本,执行如下sql CHANGE MASTER TO MASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='',MASTER_LOG_FILE='',MASTER_LOG_POS=; #示例: CHANGE MASTER TO MASTER_HOST='192.168.140.131',MASTER_USER='itcast',MASTER_PASSWORD='Xiaohemiao_123',MASTER_LOG_FILE='mysql-bin.000010',MASTER_LOG_POS=766;
4、开启同步操作
start replica; #8.0.22版本之后 start slave; #8.0.22之前版本
# 停止slave
stop slave;
5、查看主从同步状态
show replica status\G; #8.0.22版本之后 show slave status\G; #8.0.22之前版本
-- 负责把主库bin日志(Master_Log)内容投递到从库的中继日志上(Relay_Log) Slave_IO_Running: Yes -- 负责把中继日志上的语句在从库上执行一遍 Slave_SQL_Running: Yes -- Yes:表示正常, No:表示异常
五、测试并验证
首先我们在主库192.168.140.131上创建数据库TestDB并创建表t_user,此时我们在从库192.168.140.132上也会看到同样的数据库和表名,如图:
此时,,,,,,,,,,,,,,,,,,读写分离大功告成,,,,,,,,,,,,,,,,,,,,,,,