数据库之主从复制实验(小飞侠原创最全最新版本)

  • 实验思路:先配置好主服务器和从服务器的相关信息,然后启动MySQL的主从复制,再对主服务器的数据进行修改,观察从服务器是否可以监听到修改并及时对自己的数据库内容进行更改。

这里先对主服务器进行配置,具体实验流程如下:

(1)打开主服务器的my.ini文件,并修改对应的参数。这里对my.ini文件做的修改主要是设置server-id=1,并且开启MySQL的二进制日志,如图所示:
在这里插入图片描述

(2)重新启动MySQL80服务,确保更改生效。
在这里插入图片描述

(3)为了便于后续进行主从复制,需要给两个服务器配置相同的初始数据库example,主服务器执行source语句的结果如下图所示:
在这里插入图片描述
这里直接给出dbcreate.sql里面的内容,不用大家一个个用手敲了!

CREATE DATABASE IF NOT EXISTS `example` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `example`;

Create Table dept
(
  Deptno int primary key,
  Dname varchar(20),
  Loc varchar(10),
  sumsalary int,
  persons  int
);

Create Table emp
(
  empno int primary key,
  ename varchar(10),
  Job varchar(10),
  Mgr int,
  Hiredate datetime,
  Sal float,
  Comm float,
  deptno int ,
  Foreign key (mgr) references emp(empno),
  Foreign key (deptno) references dept(deptno)
 );


insert into dept values(1,'Research','New York',0,0);

insert into dept values(2,'Office','New York',0,0);
insert into dept values(3,'Finance','Iowa',0,0);

insert into dept values(4,'Factory','Iowa',0,0);
insert into dept values(5,'Market','New York',0,0);

insert into emp values(1,'Smith','Manager',null,'2008-10-10',2345.9,200,1);
insert into emp values(2,'John','Manager',null,'2010-1-20',4345.9,600,2);

insert into emp values(3,'Allen','SALESMAN',1,'2015-10-10',1800,180,1);
insert into emp values(4,'Ward','CLERK',null,'2013-11-20',2345.9,300,3);

insert into emp values(5,'MARTIN','SALESMAN',1,'2014-1-10',2300,180,1);
insert into emp values(6,'KING','ANALYST',4,'2013-11-20',2745.9,300,3);

insert into emp values(7,'SCOTT','ANALYST',1,'2014-1-10',2600,280,1);
insert into emp values(8,'KING','ANALYST',2,'2013-11-20',2787,320,2);

insert into emp values(9,'JAMES','CLERK',1,'2014-1-10',2300,280,1);
insert into emp values(10,'BLAKE','SALESMAN',null,'2013-11-20',2587,290,4);

insert into emp values(11,'CLARK','SALESMAN',1,'2013-5-10',2300,280,1);
insert into emp values(12,'MILLER','SALESMAN',10,'2012-9-20',2587,290,4);

insert into emp values(13,'Ali','CLERK',1,'2013-5-10',2800,290,1);
insert into emp values(14,'Kong','ANALYST',2,'2014-9-20',3587,290,2);

insert into emp values(15,'Cheng','ANALYST',10,'2013-5-10',3800,340,4);
insert into emp values(16,'Wang','ANALYST',4,'2016-9-20',3887,290,3);

insert into emp values(17,'Zhangsan','Manager',1,'2013-7-10',2350,450,1);
insert into emp values(18,'Lisi','CLERK',10,'2015-4-20',2347,480,4);

insert into emp values(19,'Wangfang','ANALYST',1,'2013-5-10',3800,390,1);
insert into emp values(20,'Kongzi','Manager',2,'2012-9-20',3587,290,2);

insert into emp values(21,'Chengdong','SALESMAN',10,'2013-5-10',3800,340,4);
insert into emp values(22,'Hewang','ANALYST',4,'2016-9-20',3887,290,3);

(4)用主服务器创建一个新用户,并给其配置主从复制的权限,如图所示:
在这里插入图片描述

(5)刷新权限使其生效,如图所示:
在这里插入图片描述

(6)使用刚刚创建好的用户登录主服务器,确保可以正常登录,如图所示:
在这里插入图片描述
(7)此时再切换回root,便于后续操作(刚刚新建的用户slaa我记得是不能进行数据库修改操作的),如图所示:
在这里插入图片描述
(8)查看主服务的状态,记录下供配置从服务器使用,如图所示:
在这里插入图片描述
可以看到,此时的日志文件对应为mysql-bin.000001号日志,位置是3128

  • 下面再对从服务器进行配置,具体实验流程如下:

(1)打开my.ini文件,设置server-id为2,并设置log-bin为"mysql_bin",然后重新启动MySQL80服务,如图所示:
在这里插入图片描述
在这里插入图片描述注意1:我自己电脑上面的MySQL服务名称叫“MySQL80”,可能你们电脑上面的MySQL服务名叫“mysql”或者“mysql8”等等,具体是什么可以通过windows服务找到(即,按下win键,然后输入“服务”,就可以找到对应的程序,进去即可找到相应的服务名)
注意2:有些教程上面会让大家把从服务器的端口号修改为3308或者3307(区别于主库的3306),但我在做实验的时候发现不修改从库的port也是OK的!
(2)为便于后续实验,这里给从库也配置相同的数据库,即执行与主库相同的sql文件,如图所示:
在这里插入图片描述

(3)配置复制的参数,在配置以下信息之前一定要先关闭主从复制,然后再进行参数的配置,如图所示:
在这里插入图片描述
代码直接给大家,便于复制,注意了里面的参数要进行修改,修改OK之后直接在mysql登录的状态下运行即可

CHANGE MASTER TO
   MASTER_HOST='10.65.246.82',  // 这里要修改成主服务器的ip地址
   MASTER_PORT=3306,  // 这是主服务器的端口号,一般是3306
   MASTER_USER='slaa',   // 这里的用户名是上面刚刚创建的用户的用户名
   MASTER_PASSWORD='123456', // 这里的密码是上面刚刚创建的用户的密码
   MASTER_LOG_FILE='mysql-bin.000001',  // 这是主服务器的日志名称,通过show master status;命令可以查到
   MASTER_LOG_POS=3128;  // 这是主服务器的日志的当前记录位置,通过show master status;命令可以查到

(4)开始从服务器上面的slave服务,如图所示:
在这里插入图片描述
(5)使用“show slave status\G;”命令查看主从复制是否已经成功,如图所示:
在这里插入图片描述

可以看到,Slave_IO_Running和Slave_SQL_Running都已经为YES,说明前面的配置等工作都是顺利无误的,主从复制已经成功。
接下来对数据库进行操作,验证主从复制是否可以顺利实现。
(1)在主服务器上面使用sql语句“update emp set sal=1314520 where ename=‘Zhangsan’;”修改员工Zhangsan的薪水为1314520 ,如图所示:
在这里插入图片描述

(2)查看从库中数据是否已经被修改,如图所示:
在这里插入图片描述
查询结果表明,从库中相应的数据已经被修改,说明主从复制确实已经成功实现,主服务器和从服务器可以正常进行工作。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值