标签:sql bubuko 原因 docker 主从 img 搭建 虚拟 接收
因为最近在学习MySQL,看到很多地方有“分库分表”,“读写分离”的字眼,就想尝试一下吧!
首先,因为本人经济能力有限,买不起那么多服务器,所以就借用Docker来搭建虚拟机来作为两台服务器。
一、准备主从服务器
1、创建主服务器
$docker run -it --name=mysql_master ubuntu:14.04 /bin/bash
2、创建从服务器
$docker run -it --name=mysql_slave ubuntu:14.04 /bin/bash
至此,两台服务器准备完毕,参数如下:
操作系统(OS):Ubuntu 14.04
主服务器IP:172.17.0.2
从服务器IP:172.17.0.3
二、在主从服务器上安装MySQL
因为版本问题,需要先更新一下软件源(如果不更新的话,后面安装MySQL的时候会提示没有安装包)
$ apt-get update
我这里安装MySQL也只需要一步就可以了
apt-get install mysql-server
中间会出现确认的停止,按“y”即可。
最后会出现让你输入MySQL的root用户的登录密码,后面会用到。
再确认一次密码
至此,主从服务器MySQL的安装完成
三、搭建MySQL主从复制
这里简单说一下主从复制的原理,就是根据MySQL的日志文件,将主服务器的MySQL操作日志文件发送给从服务器,让从服务器执行日志文件,达到主从复制的目的。
1、配置主服务器(以下在主服务器中操作)
在主服务器中找到MySQL的配置文件(my.cnf),修改该配置文件。(最近也在学习Linux基础,小秀一把)
$ find -name mf.cnf
表示配置文件在这个目录
然后修改该文件
$ vi /etc/mysql/my.cnf
然后就进到这个界面
然后找到这么几行,这个就是我们要配置的地方了
把server-id和log_bin前面的“#”的注释符去掉即可。
server-id:用于识别服务器MySQL,以后只要是有关于做MySQL集群的,server-id在集群中一定是要唯一的。
log_bin:用于存放二进制日志文件的,其他MySQL就是根据这个文件进行复制的。
其他可以先不用管。
保存退出即可。之后需要重启MySQL服务(service mysql restart)
然后在MySQL进行授权,至于为什么要授权呢?其他服务器的MySQL要获取日志文件总要一些权限吧
登录MySQL
这个就比较尴尬,是MySQL服务没开起来的原因
出现红色一行即为开启成功,然后再登录MySQL就可以了。
然后就是授权了,因为是主从复制,所以授权命令有点特殊,正常的话可以看下我之前写的一篇。
其中以后会用到的是,用户名和密码,即“usr”和“123”,其中“flush privileges”是更新权限的命令。
然后就是查看主服务器相关日志文件的信息。
这里的文件“mysql-bin.000001”和“48481”我们会用到。
然后退出MySQL,再来看看我们的日志文件生产没有。日志文件生成的目录在上面的配置中也有。
有了这个文件就说配置已经生效了
2、配置从服务器
进入从服务器,也是一样,要修改MySQL的配置文件(my.cnf),server-id一定不能与主服务器的相同
这样既可
保存退出,重启MySQL服务(service mysql restart)
然后进入MySQL,接收主服务器的日志文件。
是不是在这里看到很多熟悉的信息?
master_host:发送日志文件的主机
master_user:被授权的用户
master_password:用户密码
master_log_file:日志文件名
master_log_pos:日志文件位置
最后在查看从服务器的状态。
红框里的两行都为Yes,即为成功了!!!
如果不是,就多检查检查以上步骤。
最后就来验证一下吧。
1、在主服务器创建数据库
2、在从服务器创建数据库
最后结果说明,主从复制只是单向的复制,那如何进行双向的复制,这个就是主主复制了。
实现主主复制的效果也很简单,在配置的时候,将在主从服务器所做的再反过做一次就好。
即,在从服务器进行一次授权,在主服务器MySQL进行配置就好
。
标签:sql bubuko 原因 docker 主从 img 搭建 虚拟 接收
原文地址:https://www.cnblogs.com/inttochar/p/9200953.html