记一次服务器完整安装至上线的大部分流程(三、mysql主从)

mysql拉取镜像

docker pull mysql:8.0.22

mysql主数据库安装

docker run -p 10000:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=root  -d mysql:8.0.22

 

这就表示安装成功,我们可以用docker ps -a进行查看

 

注意看status的状态,如果是Exited请使用docker logs 容器id 查看报错日志

接着我们需要进入容器内部

docker exec -it mysql-master /bin/bash

 切换到目录到mysql下

cd /etc/mysql

由于是第一次进入该容器内部,没有vim命令,需要更新库并安装vim

apt-get update
apt-get install vim

中途会提示是否继续,输入y确认即可

接着编辑my.cnf文件,添加下面三行

[mysqld]
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能
log-bin=master-bin
## 二级制日志格式
binlog-format=ROW

完成后shift+:输入wq保存退出

接着我们需要通过命令连接到mysql,因为应用数据是分开的,需要调整数据库的远程登录方案

mysql -uroot -proot

 然后修改数据库root密码加密方式

ALTER USER 'root'@'%' IDENTIFIED BY 'root' password EXPIRE NEVER; 

修改数据库的root密码为root

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

刷新数据库的权限

FLUSH PRIVILEGES; 

输入quit退出数据库 ,然后输入exit退出容器执行docker restart mysql-master重启容器生效

主库到此结束

 

配置从库1

docker run -p 10001:3306 --name mysql-slave1 -e MYSQL_ROOT_PASSWORD=root  -d mysql:8.0.22

接着我们需要进入容器内部

docker exec -it mysql-slave1 /bin/bash

 切换到目录到mysql下

cd /etc/mysql

由于是第一次进入该容器内部,没有vim命令,需要更新库并安装vim

apt-get update
apt-get install vim

中途会提示是否继续,输入y确认即可

接着编辑my.cnf文件,添加下面四行

[mysqld]
## 同一局域网内注意要唯一
server-id=101  
## 开启二进制日志功能
log-bin=mysql-slave-bin
## 中继日志
relay_log=mysql-relay-bin
## 配置只读开启
read_only=1

完成后shift+:输入wq保存退出

接着我们需要通过命令连接到mysql,因为应用数据是分开的,需要调整数据库的远程登录方案

mysql -uroot -proot

 然后修改数据库密码加密方式

ALTER USER 'root'@'%' IDENTIFIED BY 'root' password EXPIRE NEVER; 

修改数据库的root密码为root

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

 刷新数据库的权限

FLUSH PRIVILEGES; 

输入quit退出数据库 ,然后输入exit退出容器执行docker restart mysql-slave1重启容器生效

从库1到此结束

配置从库2

docker run -p 10002:3306 --name mysql-slave2 -e MYSQL_ROOT_PASSWORD=root  -d mysql:8.0.22

接着我们需要进入容器内部

docker exec -it mysql-slave2 /bin/bash

 切换到目录到mysql下

cd /etc/mysql

由于是第一次进入该容器内部,没有vim命令,需要更新库并安装vim

apt-get update
apt-get install vim

中途会提示是否继续,输入y确认即可

接着编辑my.cnf文件,添加下面四行

[mysqld]
## 同一局域网内注意要唯一
server-id=102  
## 开启二进制日志功能
log-bin=mysql-slave-bin
## 中继日志
relay_log=mysql-relay-bin
## 配置只读开启
read_only=1

完成后shift+:输入wq保存退出

接着我们需要通过命令连接到mysql,因为应用数据是分开的,需要调整数据库的远程登录方案

mysql -uroot -proot

 然后修改数据库密码加密方式

ALTER USER 'root'@'%' IDENTIFIED BY 'root' password EXPIRE NEVER; 

修改数据库的root密码为root

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

 刷新数据库的权限

FLUSH PRIVILEGES; 

输入quit退出数据库 ,然后输入exit退出容器执行docker restart mysql-slave2重启容器生效

从库1到此结束

 

重启这三个容器,或者重启docker使配置生效

systemctl restart docker

接着开始配置主从连接

进入master容器

docker exec -it mysql-master /bin/bash
mysql -uroot -proot

输入show master status;查看Master状态: 

记下FilePosition,后面要用,接着quit退出数据库,exit退出容器

输入docker inspect mysql-master | grep "IPAddress" 查看master的docker内网地址并记下,后面要用

 接着进入从1库

docker exec -it mysql-slave1 /bin/bash
mysql -uroot -proot

 接着输入从库绑定主库

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

 注意这里面的host就是内网地址,账号密码为配置的主库的特定账号密码,再就是端口是内部的不是外部的,file为查看的主库file,pos一样,后面是重试次数

查看主从的状态

show slave status \G;

主要查看红框的状态现在是没有开启主从,如果出错在error中查找

接着输入start slave;开启主从(可配置其他账号,博主配制出错了),接着查看状态

show slave status \G;

 

这样就成功了,slave2同上

主从同步就ok了,切记不要对从库进行操作,只能读

参考 https://blog.csdn.net/abcde123_123/article/details/106244181

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值