行使Docker搭建主从服务器

首先拉取docker镜像,我们这里使用5.7版本的mysql:

docker pull mysql:5.7

然后使用此镜像启动容器,这里需要划分启动主从两个容器

Master(主):

docker run -p 3311:3306 --name mysql3311 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

Slave(从):

docker run -p 3312:3306 --name mysql3312 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

使用docker ps下令查看正在运行的容器:

接下来进入mysql3311(主服务器)容器中给mysql设置用户、赋权限、对外接见等
docker exec -it f08b1269478f /bin/bash

,

联博统计

www.th666888111.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。

,

进入mysql
mysql -uroot -p 密码为适才初始设置的root
然后设置对外接见权限,和建立一个用于备份的用户slave,并赋予相关的权限(CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'slave'@'%';)。
执行exit退出mysql,执行cd /etc/mysql切换到/etc/mysql目录下,然后vim my.cnf对my.cnf举行编辑,若是碰着报出bash: vim: command not found可以执行apt-get update和apt-get install vim来安装vim下令,接着可以修改my.cnf文件了,在文件中添加
[mysqld]
## 统一局域网内注重要唯一
server-id=100
## 开启二进制日志功效,可以随便取(要害)
log-bin=mysql-bin
保留退出,设置完成之后,需要重启mysql服务使设置生效。使用service mysql restart完成重启。重启mysql服务时会使得docker容器住手,我们还需要docker start mysql3311启动容器。再次进入mysql3311容器中进入mysql,执行show master status;看到图中File和Position字段的记下,后面从服务器会用到。
以上主服务已经设置好了,另有一个就要查看下主服务的ip(docker inspect 容器ID | grep IPAddress)
从服务设置,mysql的设置都可以参考主服务里的设置,只是my.cnf设置文件不一样,在Slave设置文件my.cnf中添加如下设置:
[mysqld]
## 设置server_id,注重要唯一
server-id=101
## 开启二进制日志功效,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log设置中继日志
relay_log=slave-mysql-relay-bin
保留退出并重启服务及容器。
再次进入mysql3312(从服务),进入mysql执行:
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 775, master_connect_retry=30;
使用start slave开启主从复制历程,然后查询主从同步状态show slave status \G;
,这2个值都为YES则说明已经设置乐成了,若是其中一个为no可以往下查看 ,
使用start slave开启主从复制历程后,若是SlaveIORunning一直是Connecting,则说明主从复制一直处于毗邻状态,这种情形一样平常是下面几种缘故原由造成的,我们可以凭据 Last_IO_Error提醒予以清扫。

1.网络不通

检查ip,端口

2.密码纰谬

检查是否建立用于同步的用户和用户密码是否准确

3.pos纰谬

检查Master的 Position