docker 配置MySql主从模式

docker 安装

master 服务器 centos 7.5 (腾讯) & slave 本地虚拟机 centos9 (MAC)

1.卸载旧的版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.安装包

sudo yum install -y yum-utils

3.设置镜像仓库(阿里)

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安装

> yum makecache fast
> sudo yum install docker-ce docker-ce-cli containerd.io

5.启动docker

sudo systemctl start docker

6.查看docker 版本

docker version

先把两个数据库都装好 配置文件后改

  1. pull
docker pull mysql/mysql-server:latest

2.run

docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --name mysql mysql/mysql-server:latest
  1. 查看是否启动
docker ps || docker ps -a
  1. 配置通用版文件
cd /usr/local/mysql/conf
vim my.cnf
#配置文件
[client]
default_character_set=utf8
[mysqld]
server-id=1 #[主为1,从为2]
collation_server=utf8_general_ci
character_set_server=utf8
# 还可以自己定义数据库
# 定时任务删除日志
# 超时
# 日志名字等                       

5.重启mysql

docker restart mysql

6.进入容器配置用户以及主服务器配置策略

docker exec -it mysql /bin/bash
mysql -u root -p
# 创建一个root用户,密码为root 并授权给root REPLICATION SLAVE 权限(master)
GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'root';
# 或者赋予用户权限
grant replication slave on *.* to 'root'@'%';
# 刷新权限
flush privileges;
# 查看master同步状态
show master status;
#应该有一行数据 00000.1
#如果为空,建议检查一下日志目录

7.配置从库
首先先把主库查到的master状态中 File, Position 中的值复制出来
进入到mysql 容器中

change master to master_host='192.168.65.128',master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=318;
## 开启从库功能
start slave;
## 查看是否成功
show slave status\G

成功Yes
如果Slave_IO… = No
可以进到目录里删除 auto.cnf 文件 并重启mysql 容器
如果还是不行,则使用sql语句

进入到sql 容器中…

show variables like 'server_id';
### 显示如下
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
## 更改它的值
set global server_id = 2;
# 开启从库功能
start slave;

成功了就给我点个赞!!!!!

配置 MySQL 主从复制在 Docker 中,你可以按照以下步骤进行操作: 1. 首先,创建一个用于存储 MySQL 数据的文件夹。例如,创建一个名为 `mysql-data` 的文件夹: ``` mkdir mysql-data ``` 2. 创建一个名为 `mysql-master` 的容器,并启动一个 MySQL 实例作为主数据库: ``` docker run -d --name mysql-master -v /path/to/mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<root密码> -e MYSQL_DATABASE=<数据库名> mysql:latest ``` 3. 创建一个名为 `mysql-slave` 的容器,并连接到主数据库的网络中。确保将 `<master_IP>` 替换为主数据库容器的 IP 地址: ``` docker run -d --name mysql-slave --network container:mysql-master -e MYSQL_ROOT_PASSWORD=<root密码> -e MYSQL_DATABASE=<数据库名> mysql:latest ``` 4. 检查容器是否正常运行: ``` docker ps ``` 5. 在主数据库中进行配置。进入 `mysql-master` 容器内部: ``` docker exec -it mysql-master bash ``` 6. 进入 MySQL 命令行: ``` mysql -uroot -p<root密码> ``` 7. 在 MySQL 命令行中执行以下命令来配置数据库: ``` GRANT REPLICATION SLAVE ON *.* TO '<用户名>'@'<从节点IP>' IDENTIFIED BY '<密码>'; FLUSH PRIVILEGES; SHOW MASTER STATUS; ``` 8. 记下 `SHOW MASTER STATUS;` 命令的输出内容,包括 `File` 和 `Position` 的值。 9. 在从数据库中进行配置。进入 `mysql-slave` 容器内部: ``` docker exec -it mysql-slave bash ``` 10. 进入 MySQL 命令行: ``` mysql -uroot -p<root密码> ``` 11. 在 MySQL 命令行中执行以下命令来配置数据库: ``` CHANGE MASTER TO MASTER_HOST='<主节点IP>', MASTER_USER='<用户名>', MASTER_PASSWORD='<密码>', MASTER_LOG_FILE='<主节点的File值>', MASTER_LOG_POS=<主节点的Position值>; START SLAVE; ``` 12. 检查主从复制是否正常运行: ``` SHOW SLAVE STATUS\G ``` 完成上述步骤后,你应该已经成功配置Docker 中的 MySQL 主从复制。请确保在命令中替换 `<root密码>`、`<数据库名>`、`<用户名>`、`<从节点IP>`、`<密码>`、`<主节点IP>`、`<主节点的File值>` 和 `<主节点的Position值>` 为实际的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值