搭建MySql主从复制
一、环境介绍
服务器都是用虚拟机代替
主:192.168.119.149
从:192.168.119.150
mysql版本:8.0.21
同步的数据库名称:php
二、主服务器配置
1.创建一个用于主从复制的用户,此用户在从服务器会用到。
create user `slave`@`%` identified by "root";
2.给slave用户赋予mysql权限
#*.* 表面这个权限是针对主库所有表,%表示所有地址。
grant all privileges on *.* to 'slave'@'%' with grant option;
3.刷新权限
flush privileges;
4.修改mysql配置文件
#打开文件 vim /etc/my.cnf #在配置文件中找到[mysqld]并在其下添加如下内容 log-bin=mysql-bin #开启二进制日志文件 server-id=1 #主库的ID,可以随意指定,跟其它库不一样就行
5.重启mysql
service mysql restart
三、从服务器配置
1.修改mysql配置文件
#打开文件 vim /etc/my.cnf #在配置文件中找到[mysqld]并在其下添加如下内容 log-bin=mysql-bin #开启二进制日志文件 server-id=2 #主库的ID,可以随意指定,跟其它库不一样就行
2.重启mysql
service mysql restart
3.进入mysql
mysql -uroot -p #回车后输入用户root的密码
4.选择数据库
use php
5.库配置主从信息
change master to master_host='192.168.119.149',master_port=3306,master_user='slave',master_password ='root',master_log_file='mysql-bin.000027',master_log_pos=496;
#字段介绍
5.1.master_log_file 和 master_log_pos 字段内容的获取:
登录主数据库,使用命令“show master status;”,结果如下:
6.启动主从配置
start slave
7.查看主从状态
show slave status\G
结果如下:
四、测试
php数据库中有个用户表user,我们用user表测试
1.看下图,在主和从库查询user表,表中暂时没有数据。
主库:
从库:
2.在主库插入数据,执行插入语句“INSERT INTO `user` (name, age) VALUES ('xiaohong', 25);”,结果如下图:
从库:
五、遇到的问题
1.问题如图,Slave_IO_Running: No
原因:主服务器安装好后我是直接克隆的整个虚拟机,所以MySQL的uuid是一样的,因此这里是No。(主从的数据库uuid每个都必须不一样)
解决:找到服务器mysql的安装目录,修改“安装目录/data/auto.cnf”文件中ID的任意一个值即可(也可以删除auto.cnf文件,删除后停机再启动)。注意:修改后的总长度不能变。修改后重启,或停机后再启动。
2.问题如图
原因:我两个数据库服务器都没有开放3306端口。
解决:
#开启3306端口 firewall-cmd --add-port=3306/tcp --permanent #重新载入配置 firewall-cmd --reload
本文来自博客园,作者:疯子丶pony,转载请注明原文链接:https://www.cnblogs.com/mklblog/articles/16397609.html