mysql主从复制环境搭建

因为业务需要要做mysql读写分离,最近抽空研究了下,发现读写分离是以mysql主从复制为基础进行的,今天就先记录下搭建一个主从环境的过程,本文只会记录搭建过程,不会有任何主从原理等理论知识。
主库负责接受外部数据,系统在运行过程中的业务数据持久化是直接在主库中进行,不会涉及到从库(读写分离另论)。
本文中主库使用的windows环境,从库使用Ubuntu下docker环境。

过程

1:修改主库和从库的配置文件
2:重启服务
3:主库分配从库复制用的账号
4:从库使用主库分配的账号与主库进行连接
5:检查结果

修改配置文件

windows系统中,如果找不到mysql配置文件位置可以通过mysql服务找到,具体操作如下:
1:右键‘此电脑’,选择管理

2:选择服务和应用程序,然后选择服务,在服务列表中找到mysql
服务列表.png

3:右键MySQL,选择属性,红色标记就是配置文件地址,修改该文件就行
属性.png

修改配置文件后在这个界面进行mysql服务的重启,先停止后启动。
Linux系统中,查看mysql配置文件使用命令

mysql --help | grep my.cnf

找到配置文件后,编辑配置文件,在配置文件中添加

#id集群内唯一且为整数
server-id=1 
#二进制变更日志名称
log-bin=mysql-bin

修改完成后保存并重启服务。重启完成后进入mysql命令行,输入

show master status \G
master.png

到此主库搞定!
从库为了方便我使用的是docker环境,配置和主库配置一样,在配置文件中配置添加一个server-id即可。
docker环境搭建及使用这里就不详细说明了。直接说在docker中配置mysql从库步骤。
1.先从镜像库中下载官方mysql镜像并开启容器。进入该容器,找到配置文件,/etc/mysql文件夹下的my.cnf

docker run --name mysql -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql

2.将docker中的配置文件复制到宿主机中进行修改,使用如下命令将docker中文件复制到宿主机上

docker cp mysql容器id:/etc/mysql/my.cnf /home/mysqlconf/

3.修改上一步复制下来的my.cnf在其中添加

#id集群内唯一且为整数
server-id=1 
#二进制变更日志名称,如果从库不需要向其他节点继续同步则该配置可以不用
log-bin=mysql-bin

4.将修改后的文件替换掉docker容器中的my.cnf,重启容器,并检查mysql服务是否启动成功。

建立主库与从库的关系

1.打开主库的命令行工具,给从库分配账号及权限。

 GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO mysql_backup@'%' IDENTIFIED BY '123456';

2.打开从库mysql命令行工具

CHANGE MASTER TO 
MASTER_HOST='主库ip',
MASTER_PORT=主库端口,
MASTER_USER='mysql_backup',
MASTER_PASSWORD='123456';

3.在从库mysql命令行工具中输入

START SLAVE;
show slave status \G
slave.png

查看结果第一行是否是Waiting for master to send event,以及红色标记处是否都是yes。如果没有请检查配置。
如果配置没有问题,请检查两个网络情况,如果网络情况没问题,在命令行输入

stop slave ;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave ;

再查看下状态,此时为止,mysql主从复制环境搭建完成。

测试

使用navicat连接主库和从库,在主库中新建数据库或者表或者在表中添加数据,在从库中就能立即看到主库中添加的内容

你可能感兴趣的:(mysql主从复制环境搭建)