【Linux下实现Mysql的主从复制】

前言

  • 本篇是基于CentOs7下,以及mysql8的版本进行配置主从复制

条件准备

  • 已经安装好CentOs7系统的虚拟机两台
  • 两台虚拟机上都配置好了ip地址以及都安装好了mysql数据库
  • 第一台虚拟机的ip : 192.168.226.129
  • 第二台虚拟机的ip : 192.168.226.130

配置主库

  • 任选一个虚拟机上的mysql作为主库,假设我选择ip地址为192.168.226.129的这台虚拟机上的mysql作为主库,选择ip地址为192.168.226.130的这台虚拟机上的mysql作为从库

配置主库步骤:

1. 配置主库的配置文件

  • 一般来说mysql的配置文件都存放在/etc目录下,叫做my.cnf,但是mysql8默认是没有这个文件的,如果没有的话,需要自己手动创建,配置文件的内容在Linux下安装mysql里面有,使用命令:vim /etc/my.cnf
  • 添加以下内容在[mysqld]下
log-bin=mysql-bin #开启二进制日志
server-id=100 #服务器唯一标识,id不一定要是100,可以自定义数字,只要保证主库和从库的id不一样就行。

在这里插入图片描述

2.重新启动mysql服务

systemctl restart mysqld

3.在主库中创建一个用户,用于进行主从库之间通信

需要分两步进行:
第一步:create user 用户名 identified with 'mysql_native_password'by '密码'; 创建一个用户
第二步:grant replication slave on *.* to 用户名; 给该用户授权

//登录主库,并输入主库密码
mysql -uroot -p 
//创建一个用户,作为信任用户进行主从库之间通信
mysql> create user xiaoming identified with 'mysql_native_password'by 'Root@123456';
mysql> grant replication slave on *.* to xiaoming;
//刷新
mysql> flush privileges;

4.执行以下Sql,记录下File和Position的值

//查看主库状态
mysql> show master status;

在这里插入图片描述
这里的File = mysql-bin.000003 , Position = 50483

到这里之后,主库就最好不要再动了,现在去配置从库。

配置从库

配置从库步骤:

1.配置从库的配置文件

  • 一般来说mysql的配置文件都存放在/etc目录下,叫做my.cnf,但是mysql8默认是没有这个文件的,如果没有的话,需要自己手动创建,配置文件的内容在Linux下安装mysql里面有,使用命令:vim /etc/my.cnf
  • 添加以下内容在[mysqld]下
    注意:从库只需要配置server-id ,不需要配置log-bin,且需要保证主从库的server-id不一样就行了
server-id=101 #服务器唯一标识,id不一定要是100,可以自定义数字,只要保证主库和从库的id不一样就行。

2.重新启动mysql服务

systemctl restart mysqld

3.登录进去之后,配置关于主库的信息

  • 我们需要告诉从库关于主库的信息,这样它才知道复制哪个库
//登录从库,并输入从库密码
mysql -uroot -p 

// 关键:在从库中配置主库的信息
mysql> change master to master_host='192.168.226.129',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000003',master_log_pos=50483;

注意:这句change命令中
master_host : 填写主库的所在linux的ip地址
master_user : 填写主库中创建的那个用于主从库之间通信的用户名
master_password : 填写主库中创建的那个用于主从库之间通信的用户密码
master_log_file : 填写主库中我们记录下来的File的值
master_log_pos : 填写主库中我们记录下来的Position的值

  • 执行完成之后,可能会报错,就是说已经有一个线程在执行了,需要先执行命令stop slave;,如果没报错则直接忽略本句
  • 接着执行命令 start slave;命令来开启从机的IO
  • 最后,来查看是否配置成功:执行命令show slave status;,该命令会返回一个表格
  • 其中:
    在这里插入图片描述
    在这里插入图片描述
    结果只要显示 :
    Slave_IO_State 为:Waiting for master to send event
    Slave_IO_Running 为:Yes
    Slave_SQL_Running 为:Yes
    则说明配置没啥问题

测试是否主从复制有效

步骤:

  1. 在两个库中分别执行下面的命令,打开端口3306
//这是直接开启3306端口
[root@localhost bin]# firewall-cmd --zone=public --add-port=3306/tcp --permanent 
//重新加载一下防火墙
[root@localhost bin]# firewall-cmd --reload 

//查看当前防火墙开放的端口号
[root@localhost bin]# firewall-cmd --zone=public --list-ports

2.使用MysqlWorkbench分别连接主库和从库
在这里插入图片描述
输入对应linux的地址,以及数据库的密码,点击确定
在这里插入图片描述
在这里插入图片描述

  • 在主库的user表中插入一条数据
    在这里插入图片描述
  • 到从库中的user表中查看该数据是否加上了
    在这里插入图片描述
  • 显示也有该条记录,说明配置主从复制成功!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值