目录
0、环境部署
1、主服务器配置
1.1 修改mysql配置文件
1.2 重启mysql
1.3 为从服务器授权
1.4 查看二进制日志坐标
2、从服务器配置
2.1 修改mysql配置文件
2.2 重启mysql
2.3 配置主从同步
2.4 开启主从复制
3、验证主从复制
3.1 主服务器上创建test_db
3.2 从服务器上查看test_db
4、报错解决
Slave_IO_Running: No
Slave_IO_Running: Connecting
补充
| 设备 | 操作系统 | IP地址 | mysql版本 |
| master主服务器 | openEuler release 22.03 (LTS-SP2) | 192.168.48.131 | 8.0.37 for Linux on x86_64 (Source distribution) |
| slave从服务器 | openEuler release 22.03 (LTS-SP2) | 192.168.48.132 | 8.0.37 for Linux on x86_64 (Source distribution) |
注:openEuler release 22.03 (LTS-SP2)的内核为 Linux 5.10.0-153.12.0.92.oe2203sp2.x86_64

#下载mysql yum install -y mysql-server #防火墙放行mysql3306端口(防火墙没开忽略此操作) firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload firewall-cmd --zone=public --list-ports | grep 3306 #关闭selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config reboot #启动mysql systemctl start mysqld #检查mysql是否成功启动 ps -ef | grep mysql #设置mysql开机自启 systemctl enable mysqld #登录mysql mysql -uroot -p 该版本mysql首次登录密码为空,直接回车即可
vim /etc/my.sql
server-id=1#必选项
read-only=0
binlog_format=MIXED
log-slave-updates=true
log-bin=mysql-bin#不添加此项默认为binlog.0000x格式

systemctl restart mysqld mysql -uroot -p #创建elysia用户,允许登录远程主机IP为192.168.48.132,密码为elysia@123 CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED WITH mysql_native_password BY 'elysia@123'; #为elysia用户授予所有权限,包括了replication slave权限 GRANT ALL PRIVILEGES ON *.* TO 'elysia'@'192.168.48.132'; #刷新权限 flush privileges; show master status\G; 
当前使用的二进制文件的名字为:mysql-bin.000001
当前偏移量为:2405
echo server-id=2 >> /etc/my.cnf 从服务器server-id不能与主服务器一样

systemctl restart mysqld mysql -u root -p change master to master_host='192.168.48.131',#主服务器IP master_user='elysia',#用于复制的用户,必须有replication slave权限 master_password='elysia@123',#用于复制用户的密码 master_log_file='mysql-bin.000001',#当前使用的二进制日志文件binlog master_log_pos=2405;#binlog的位置 start slave; #查看当前主从复制状态 show slave status\G; 出现双yes即可

#创建一个test_db数据库 create database test_db; #创建一个dept表 use test_db; create table dept (dept1 int ,dept_name varchar(11)) charset=utf8; #插入数据 insert into dept values (101,'财务'), (102,'销售'), (103,'IT技术'), (104,'行政'); #查看当前数据库; show databases; #查看表的内容; select * from test_db.dept; 
从服务器上出现test_db,并且成功查询,主从复制搭建成功

查看 Last_IO_Error

报错原因:
二进制文件位置坐标错误
解决:将master_log_pos改为正确位置即可
其他可能错误:

查看 Last_IO_Error

报错原因:这个错误表明连接到MySQL数据库时,使用了caching_sha2_password身份验证插件,但是要求进行安全连接。也就是,你在主服务器mysql上使用了以下格式的命令创建了从服务器的登录用户
CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED BY 'elysia@123'; 解决方法:
ALTER USER 'elysia'@'192.168.48.132' IDENTIFIED WITH mysql_native_password BY 'elysia@123'; CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED BY 'elysia@123';
与
CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED WITH mysql_native_password BY 'elysia@123';
的区别:
这两个 SQL 语句的区别在于用户的身份验证机制。
因此,这两个语句的主要区别在于用户的身份验证机制。如果你的 MySQL 数据库版本是 MySQL 8.0 及以上,推荐使用第一个语句,因为它使用了更安全的默认身份验证插件。如果你需要与旧版本的 MySQL 数据库兼容,可以使用第二个语句指定使用 `mysql_native_password` 身份验证插件。