MySQL主从复制--一主两从部署
三台虚拟机都是欧拉系统。IP:主库 -- 192.168.1.200从库 -- 192.168.1.201、192.168.1.202虚拟机关闭防火墙、selinux安全。
实验准备
三台虚拟机都是欧拉系统。
IP:
主库 -- 192.168.1.200
从库 -- 192.168.1.201、192.168.1.202
虚拟机关闭防火墙、selinux安全。

安装MySQL
源码操作较为复杂,我这里通过dnf安装MySQL。

初始化配置
MySQL5.7版本以后,首次登录需要设置密码。
mysql_native_password:处理用户登录时的密码验证。
alter user 'root'@'localhost' identified with mysql_native_password by '密码'; #设置密码
flush privileges; #刷新策略

部署步骤
1、主库创建数据库,表
数据库:school
数据表:teacher
插入几条数据,方便后期测试,查看主从复制的效果。
主库192.168.1.200:

主从同步的前提是需要保证主库和从库的数据库一致,数据一致,因此从库需要创建与主库同名的数据库school,还需要将主库的数据进行导出,再导入到从库中。
2、主库全量备份数据
主库通过全量备份的方式导出数据,在本地生成以.sql结尾的文件。
再通过远程将数据发送到从库上。
mysql -uroot -p'密码' 数据库名 > 数据库名.sql #导出数据,生成.sql文件
scp 数据库.sql root@IP地址:/root/ #远程发送数据到/root/下

3、从库创建数据库
从库192.168.1.201、192.168.1.202:

4、从库导入数据表
mysql -uroot -p'密码' 数据库 < 数据库名.sql #将sql文件导入到数据库中
从库192.168.1.201、192.168.1.202:

5、主库开启二进制日志
主库192.168.1.200:
vim /etc/my.cnf.d/mysql-server.cnf
server-id=1 #标识ID
log-bin=mysql-bin #生成的二进制日志的名称
binlog_format=mixed #二进制日志记录的格式
systemctl restart mysqld #重启服务
注意:server-id是唯一的,每一台数据库的server-id不可相同。

6、主库授权用户
创建的用户,需要授权给从库有复制的权限,让从库用该用户登录到主库上,读取日志。
*.*:表示所有库.所有表。
replication:标识复制。
create user '用户名'@'%' identified with mysql_native_password by '密码'; #创建用户
grant replication 用户名 on *.* to '用户名'@'%'; #授权用户
flush privileges; #刷新策略

7、锁定主库
锁定主库,记录主库的file和position信息,用于从库连接主库。
主从复制完成后,即可解锁。
flush tables with read lock; #锁表
unlock tables; #解锁
8、从库开启中继日志
从库192.168.1.201、192.168.1.202:


9、从库连接主库
主库192.168.1.200:
show master status\G; #查看主库信息

从库192.168.1.201、192.168.1.202:
change master to
master_host='主库IP',
master_user='主库授权的用户',
master_password='用户的密码',
master_log_file='查看主库信息中的file文件名',
master_log_pos=查看主库信息中的position位置;
注意:前四个参数需要加引号,master_log_file的引号中不能有空格,master_log_pos不需要加引号。
start slave; #启动主从同步
stop slave; #停止主从同步
show slave status\G; #检查同步状态

注意:
Slave_IO_Runing和Slave_SQL_Runing均为yes,则同步成功。
Slave_IO_Runing和Slave_SQL_Runing均为no,或者某一个为no,则同步失败,需要先停止同步,检查所有配置,修改没问题后再开启主从同步。
解决方法:查看防火墙是否关闭、主库授权是否有问题、从库连接主库时的参数是否和主库对应。
测试
主库192.168.1.200插入数据:

从库192.168.1.201、192.168.1.202查看数据:

在主库中插入数据,从库也能查看到主库插入的数据,主从复制完成。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)