引言
本文介绍的是在虚拟机上搭建,实际情况其实和真正的线上环境一毛一样,使用的系统是Centos 7。
什么是主从复制?原理是什么?
答:简单点理解,主从复制其实就是两个数据库数据的项目备份过程。其原理就是主库产生的操作都会生成binlog
传入从库,从库通过I/O
线程把binlog
写入relaylog
,然后从库创建I/O
线程执行relaylog
进行数据备份。
流程图
为什么要做主从复制?
答:一方面是为了备份数据,防止数据丢失和破坏,另一方面是为读写分离做铺垫。
搭建步骤
新建虚拟机
首先在本地安装虚拟机,我个人比较推荐 VMware Workstation Pro
,当然也可以是使用其他的。
虚拟机的安装就不做介绍了,无非都是下一步下一步。安装好之后在需要下载对用的系统镜像,因为本文主要是在Centos
上做演示,所以我就下载了Centos
的镜像,但是无法分享给大家,因为太大了,足足4G
。
安装好之后新建两个虚拟机(怎么新建虚拟机就不做介绍了):
安装mysql
注意:尽量两个虚拟机上的mysql版本保持一直,避免出现不可预知的错误。
我安装的版本是5.7.1
2
3
4
5
6
7
8
9
10
11
12
13
14 进入
cd /usr/local/src
下载rpm包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
安装 mysql-server
yum install -y mysql-server
启动
systemctl start mysqld
设置开机自启
systemctl enable mysqld
登陆mysql
mysql -uroot -p
因为5.7之后的版本都是禁止匿名登陆的,你可以通过查看密码并登陆,然后修改密码,或者直接修改my.cnf
来禁止登陆验证。1
cat /var/log/mysqld.log|grep 'A temporary password'
因为系统给我的默认密码含有一些特殊符号,我没法输入,我只能使用第二种方法:1
2
3
4
5
6
7
8
9
10vi \etc\my.cnf
在最后增加一行
skip-grant-tables=1
登陆mysql,刷新权限
flush privileges;
修改密码
use mysql;
update user set password='password' where user='root';
修改成功后再次刷新权限
最后重启一下mysql服务
本地连接虚拟机上的mysql
1 | 查看IP |
使用telnet测试mysql连接状态
1 | telnet 192.168.22.130 3360 |
错误的情况(因我这里是好的,所以我把3306填成了3360)
检查虚拟机是否安装了iptables
1 | 关闭防火墙 |
再次使用telnet 192.168.22.130 3306
还是报错上边图片所示时。
配置权限
1 | 创建一个用户 |
出现这个说明已经成功了
使用navicat连接
到这里基础的安装已经完成了,如果遇到问题可在评论中提问,下一篇介绍主从复制如何配置。