云服务器 ECS Mysql主从配置

1、环境准备

1)Linux采用CentOS 7.x

2)安装docker

安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 

设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

安装 Docker-CE
sudo yum install docker-ce

查看安装的docker
yum list installed | grep docker

启动docker服务
sudo systemctl start docker

设置开机自启
sudo systemctl enable docker

3)新建存储配置文件

在/etc目录下分别创建:mysqlMaster 和 mysqlSlave

进入/etc:cd /etc
mkdir mysqlMaster
mkdir mysqlSlave

在这里插入图片描述

2、安装及配置Mysql master

1)启动docker服务

sudo systemctl start docker

2)拉取镜像

docker pull mysql:5.7

3)查看镜像

docker images

在这里插入图片描述

4)创建容器

创建容器 mysql-1

docker run --name mysql-1 -v /etc/mysqlMaster:/etc/mysql/conf.d -p 3301:3306 -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.7   

--name mysql-1	mysql的名字name
-v /etc/mysqlMaster:/etc/mysql/conf.d  映射容器内的配置到宿主机
-p 3301:3306  映射宿主机的端口到容器的端口
-e MYSQL_ROOT_PASSWORD=123456  指定Mysql 的登录密码
-d mysql:5.7   指定镜像

5)查看设置容器

docker ps -a 

设置开机自启
docker update --restart=always mysql-1

在这里插入图片描述

6)配置mysql.cnf 文件

配置宿主机内的/etc/mysqlMaster 目录下创建 mysql.cnf 文件
创建:touch mysql.cnf
文件内容如下:
[mysqld]
server-id=1
log-bin=master-bin
编辑完,按ESC退出编辑模式,输入 :wq 保存退出。

在这里插入图片描述

7)进入容器

docker exec -it mysql-1 bash 
mysql-1(容器名称或者ID)

8)重启Mysql

重启Mysql 导致容器退出,要重启容器
service mysql restart

在这里插入图片描述

9)重启/再进入容器

docker start mysql-1
docker exec -it mysql-1 bash  

在这里插入图片描述

10)登录mysql

mysql -uroot -p123456

11)查询状态

show master status; 

在这里插入图片描述

12)查询容器IP地址

(退出容器才能查, 退出命令 exit) 用2次exit
docker inspect mysql-1
mysql-1 是自己的名称

在这里插入图片描述

3、安装及配置Mysql slave

特别注意:​前面10步和Mysql master的1-10步是一样配置的,只需要区别命名,下面我只写出4、6两步做参考而已。

4)创建容器

创建容器 mysql-2

docker run --name mysql-2 -v /etc/mysqlSlave:/etc/mysql/conf.d -p 3302:3306 -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.7 

设置开机自启

docker update --restart=always mysql-2

6)配置mysql.cnf 文件

配置Mysql slave的/etc/mysqlSlave 目录下创建 mysql.cnf 文件
创建:touch mysql.cnf
文件内容如下:
[mysqld]
server-id=2
log-bin=master-bin
编辑完,按ESC退出编辑模式,输入 :wq 保存退出。

11)指定master

change master to master_host='172.17.0.2', master_user='root', master_password='123456', master_port=3306, master_log_file='master-bin.000001', master_log_pos=154, master_connect_retry=30;

12)启动slave

Start slave;

13)查询slave

Show slave status\G;

在这里插入图片描述

上图中Slave_IO_Running: Yes 和Slave_SQL_Running: Yes 都必须是Yes 表示配置成功

4、验证

登录master 创建数据库和表,可以看到在slave里面自动生成。

5、开启远程访问

1)mysql配置

# mysql,8.0
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
grant all privileges on *.* to root@'%' with grant option;

# 8.0以前的版本
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

2)刷新权限

flush privileges; 

在这里插入图片描述

3)阿里云添加访问规则

在这里插入图片描述

在这里插入图片描述

4)navicat连接

在这里插入图片描述

6、附录(相关命令)

systemctl start firewalld  开启防火墙
systemctl stop firewalld  开启防火墙
systemctl status firewalld  查看防火墙状态
netstat  -altupn|grep  3301    查询端口占用
chmod  0777  /etc/mysqlmaster  修改目录权限 
mysql -h 172.17.0.2 -uroot -p123   slave 登录master
show variables like 'log_bin'; 查看日志是否开启
show variables like'char%';  查看编码格式
set character_set_server=utf8;  设置编码格式
set character_set_client= utf8;
set character_set_connection =utf8;
set character_set_results=utf8;

systemctl restart docker  重启docker
docker start  b9f53d9bc7c5   启动容器
# 下载镜像:docker pull <镜像名:tag>    如:下载centos镜像
docker pull centos
docker pull sameersbn/redmine:latest
# 查看已下载镜像
docker images
# 删除容器
docker rm <容器名 or ID>
# 查看容器日志
docker logs -f <容器名 or ID>
# 查看正在运行的容器
docker ps
# 查看所有的容器,包括已经停止的。
docker ps -a 
# 删除所有容器
docker rm $(docker ps -a -q)
# 停止、启动、杀死指定容器
docker start <容器名 or ID> # 启动容器
docker stop <容器名 or ID> # 启动容器
docker kill <容器名 or ID> # 杀死容器
# 后台运行 docker run -d <Other Parameters>
docker run -d -p 127.0.0.1:33301:22 centos6-ssh
# 暴露端口: 一共有三种形式进行端口映射
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口
# 映射数据卷
docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值