准备两台mysql服务器。主库称为master,从库称为slave。这节课只需要操作从库(192.168.127.145)
1、master: 192.168.127.138
2、slave: 192.168.127.145
在从库服务器开放指定的3306端口号
firewall-cmd --zone=public --add-port=3306/tcp -permanent
firewall-cmd -reload
或者在从库服务器直接把防火墙关掉(我们推荐使用这种,不使用上面开放3306端口的方式)
systemctl stop firewalld
systemctl disable firewalld
检查一下从库的mysql的服务是否开启
systemctl status mysqld
打开192.168.127.145。这节课只讲从库的配置。主库的操作在上节课
1、修改配置文件 /etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一,取值范围: 1~2^32-1,默认为1 #注意我们主库已经设置为1了,这里的从库我们就设置为2。从库id只要不跟主库重复,并且不超出范围就行
xxxxxxxxxx
server-id=2
#是否只读,1表示当前mysql服务器是只读型的,0表示读写型。对于从库来说,最大的功能是备份主库的数据,从库不需要增 #删改的功能,因此我们设置为只读型(只对普通用户来说是只读,如果用户有超级管理员super权限那么是可读写的,我们在具体操作会有解决)
xxxxxxxxxx
read-only=1
具体操作如下:
xxxxxxxxxx
vim /etc/my.cnf
会出现一个文本编辑页面,使用键盘的向下箭头,在末尾行输入如下三行,然后保存退出
xxxxxxxxxx
server-id=2 #配置从库的mysql服务器id
read-only=1 #当前mysql服务器是只读型的
super-read-only=1 #即使是超级管理员super权限,也是只读
2、重启mysql服务器
xxxxxxxxxx
systemctl restart mysqld
3、这个从库如何才能关联上节课的主库
change replication source to source_host='xxx.xxx',source_user='xxx',source_password='xxx',source_log_file='xxx',source_log_pos=xxx;
上述是8.0.23之后的语法,如果mysql是8.0.23之前的版本,那么就执行如下SQL,效果是一样的
change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
上面的xxx解释如下 (1)source_host: 要连接哪个主库,后面指定ip地址即可 (2)source_user: 要连接主库的哪个用户名,后面指定用户名即可 (3)source_password: 用户(你在上一行指定的用户)的密码是什么,后面指定密码即可 (4)source_log_file: 要读取主库的哪个二进制日志文件,也就是用于同步主库的数据 (5)source_log_pos: 要读取主库二进制文件的哪个位置开始的数据,也就是同步主库的哪里开始的数据
具体操作如下(需要登录进mysql从库192.168.127.145,才能进行如下操作):
mysql -u root -p
change replication source to source_host='192.168.127.138',source_user='huanf',source_password='228675',source_log_file='binlog.000007',source_log_pos=661;
注意: huanf、228675、binlog.000007、661是上节课我们主库配置的,不知道怎么写可以去上节课看看
4、在从库开启同步,即可同步主库的数据。也就是开启主从复制。具体操作如下(需要登录进mysql从库192.168.127.145,才能进行如下操作)
start replica; #8.0.22版本之后
start slave; #8.0.22版本之前
5、查看从库的状态。可以看到当前从库关联的是哪个主库、主库的端口号、主库的用户名、...。具体操作如下(需要登录进mysql从库192.168.127.145,才能进行如下操作)
show replica status; #8.0.22版本之后。或者show replica status\G; 。后者的命令可以在内容不变的情况下让页面简洁
show slave status; #8.0.22版本之前
\G: 表示把每一列的数据展示为每一行的数据,可以让数据展示更精简
我们在查看从库状态时,会查看到从库的配置信息,里面的内容代表什么,如下 (1)Source_Host: 当前关联的主库的ip地址 (2)Source_User: 当前关联的主库的用户名 (3)Source_Port: 当前关联的主库的端口号 (4)Source_Log_File: 从主库的哪个二进制文件开始读取 (5)Source_Log_Pos: 从主库的二进制文件的哪个位置开始读取 (6)Relay_Log_File: 涉及到的中继日志是哪个 (7)Relay_Log_Pos: 中继日志的位置 (8)Replica_IO_Running: IO线程(读取二进制日志并且写入中继日志,在前面的a_120_0课学过)运行是否正常,也就是主从复制是否正常,例如yes (9)Replica_SQL_Running: SQL线程运行是否正常,也就是主从复制是否正常,例如yes
接下来就是验证当我们在主库中进行相关操作之后,具体的数据能不能同步到从库,下节课揭晓