Mysql主从复制搭建


1. 环境信息

在这里插入图片描述
克隆好两台虚拟机进行测试
操作系统:centos6.8

   #mysql版本
   mysql-community-client-5.7.25-1.el6.x86_64.rpm
   mysql-community-server-5.7.25-1.el6.x86_64.rpm
   
   #节点
   192.168.57.201(主)、192.168.57.202(从)

在这里插入图片描述
192.168.88.128为主节点,192.168.88.129为从节点

2. 安装mysql数据库

#192.168.57.202

[root@test202 redis-cluster]# find / -name mysql
/var/lib/mysql
/usr/local/mysql
[root@test202 redis-cluster]# rm -rf /var/lib/mysql
[root@test202 redis-cluster]# rm -rf /usr/local/mysql
[root@test202 redis-cluster]# 

#安装server
rpm -ivh mysql-community-server-5.7.25-1.el6.x86_64.rpm --force --nodeps
#安装client

#修改mysql登录密码
#my.cnf
[mysqld]
skip-grant-tables

#直接登录mysql,不需要输入密码
#修改root的密码
flush privileges;

set password for root@localhost = password('123456');

flush privileges;

#注释掉my.cnf
[mysqld]
#skip-grant-tables

#重启mysqld 服务
 service mysqld restart
      

3. 配置主从同步

进入配置修改编辑添加命令如下: #vi /etc/my.cnf

[mysqld]
#日志文件名称
log-bin=master-a-bin            
#二进制日志的格式,有row、statement和mixed三种类型                         
binlog-format=ROW    
#要求各个服务器的这个id必须不一样
server-id=1          
#同步的数据库名称
binlog-do-db=yidiankt  

4. 配置从服务器登录主服务器的账号授权

grant replication slave on *.* to 'root'@'192.168.57.201' identified by '123456';
#刷新配置
flush privileges;

5. 从服务器的配置(my.cnf)

#日志文件名称
log-bin=master-a-bin		
#二进制日志的格式,跟主服务器一样
binlog-format=ROW			
#要求各个服务器的这个id必须不一样
server-id=2		
#中继日志执行之后,这些变化是否需要计入自己的binarylog。当你的从服务器需要作为另外一个服务器的主服务器的时候需要打开。就是双主互相备份,或者多主循环备份。
log-slave-updates=true

6. 重启主服务器

service mysqld restart
show master status;展示binlog状态用于同步
在这里插入图片描述

7. 从服务器配置

       #重启
service mysqld restart

       
 change master to master_host='192.168.57.201',master_user='root',master_password='123456',master_port=3306,master_log_file='master-a-bin.000001',master_log_pos=154;
       
#开启从服务器
 start slave;
       
#查看状态
show slave status \G;

8. 测试主从同步

展示主从状态命令

show slave status \G

在这里插入图片描述

9 遇到的问题

后续遇到问题继续补充

9.1 uuid重复造成io为No

mysql> show variables like '%dir%';

在这里插入图片描述
查询命令找此auto.cnf一般在datadir目录下/var/lib/mysql/加载uuid修改uuid即可:

MySQL启动时,会自动从data_dir/auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。

# 原内容
[auto]
server-uuid=64cbb3d1-e150-11eb-81a2-000c2972fe1f

# 调整后内容,自定义即可,把最后一位f替换为a
[auto]
server-uuid=64cbb3d1-e150-11eb-81a2-000c2972fe1a

重新启动mysql

# centos7.x
systemctl restart mysql

# centos6.x
service myqld restart

登录mysql,重启slave,再次验证

# 登录mysql
 mysql -uroot -p
Enter password:123456 

# 停止链路
stop slave;

# 主从数据库名映射
 change replication filter replicate_rewrite_db=((imooc_db,order_db));

# 启动链路
start slave;

# 查看链路
show slave status \G
posted @ 2021-09-12 13:06  赵广陆  阅读(55)  评论(0编辑  收藏  举报