前言
一般我们在服务器上做数据库集群部署的时候都是需要最少两台物理机器。那么我们做为个人学习或者模拟搭建的时候,就可以参考这篇博文,实现一台物理机照样搭建好MySQL主从环境
主从原理
MySQL主从复制是依靠bin-log二进制文件来完成的。主库开启biglog日志后,每一条执行过的新增和修改语句,都会被记录到biglog日志里。然后从库会监听这个文件,一旦发现biglog文件有改动,则会起一个线程将biglog日志文件拉到从库环境并执行。从而达到数据同步的效果。
一、准备工作
二、搭建步骤
1、正常下载安装MySQL。安装完成后,找到你安装的目录。默认安装的话会在系统C盘的Program Files文件夹下面。
找到安装目录后,这里在E盘下建一个MySQL2的文件夹(任意盘符都行),然后把上面这些文件复制一份到MySQL2的文件夹里
复制过来后,是没有data文件夹和my.ini文件的。这里要解释一下,5.7以前。安装目录里是有data和my.ini文件的。5.7将这两个文件放到了ProgramData文件夹下面。这是一个隐藏的文件夹,如果你没有勾选查看隐藏文件功能的话是看不到的。
我们把my.ini文件复制过去。data是存放表数据的,不需要复制。我们自己新建一个data文件夹。接下来就是对ini文件进行配置。
- 修改端口号:把所有的 port=3306 改成 port=3307
- 修改数据存放路径:datadir=E:/MySQL2/data(data是我们刚刚新建的文件)
- 修改serviceId:server-id=2。默认是1(主库配置),从库改成2(这里一般推荐用服务器IP地址后三位)
- 新增一行配置:replicate-do-db=yxj (replicate-do-db代表要复制主库里哪个库的数据,yxj就是你想做主从复制的数据库名。如果有多个库要复制,则重复设置此配置即可。这个可以去百度一下MySQL主从复制过滤机制了解。)
- 其他配置可保持不变,大致需要配置的属性如下:
[client]
port=3307
[mysql]
no-beep
default-character-set=utf8
[mysqld]
port=3307
datadir=E:/MySQL2/data
character-set-server=utf8
default-storage-engine=INNODB
replicate-do-db=yxj
server-id=2
到这里,从库配置就已经完成。接下来我们要安装一下从库服务。也就是MySQL2服务。
- 以管理员身份打开cmd 【注意是管理员身份,要不会报错】 进入E:\MySQL2\bin路径下,执行下面这个命令
mysqld install MySQL2 --defaults-file="E:\MySQL2\my.ini"
如果提示“Service successfully installed”,则说明mysql服务安装成功。
- 连接从服务器 :mysql -uroot -p -P3307 如果报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)。则启动mysql2服务 net start mysql2。
如果报错: Access denied for user’root’@‘localhost’ (using password: NO)参考这篇文章解决
从库配置完成后,就是主库。
-
同样,管理员打开cmd。进入主库安装目录下的bin目录 net stop mysql(mysql是服务名)。或者任务管理器里找到mysql服务,关闭。
-
回到C:\ProgramData\MySQL\MySQL Server 5.7目录,找到我们被隐藏的ini文件,编辑它。只需要在配置里加上这一行表示开启bin-log
-
主库配置完后,重启mysql。这个时候用Navicat新建一个查询,输入如下命令查看biglog配置(命令行也行)
show master status;
查看主库的biglog文件名以及偏移量。 -
在主库专门为从库创建一个用来同步数据的账号,并分配replication slave 权限:
create user 'yxj'@'127.0.0.1' identified by '123456';
grant replication slave on *.* to 'yxj'@'127.0.0.1' identified by '123456';
注:@后面的ip地址为允许连接的客户端的ip地址。mytest是用户名,123456是密码
主库到这里也配置完成。最后,我们回到从库,打开从库服务,在Navicat中新建一个查询。输入如下命令设置
change master to master_host='127.0.0.1',master_port=3306,master_user='yxj',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=5156;
master_log_file=’mysql-bin.000001’为上面的biglog日志文件名
master_log_pos=5156为上面的偏移量数值
接下来,我们在从库服务下执行show slave status;
。cmd命令行可用show slave status \G;
查看Slave_IO_Running 和 Slave_SQL_Running 两个线程状态是否都为yes。如果为yes。说明主从复制已经成功了,这个时候我们可以在主库做一些改变,看从库是否会跟着改变!
总结
关键步骤:主库开启biglog,给从库配置一个专门的账号(指定权限)。从库将主库给的账号,biglog日志文件名以及文件偏移量等参数配置进服务里。只要Slave_IO_Running 和 Slave_SQL_Running 两个线程状态为yes。就说明主从配置成功了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99055.html