centos7用docker部署Mysql主从复制

发布时间 2023-07-11 18:19:11作者: Sinsen柳

安装Docker和Docker Compose:

安装预置:
sudo yum update
yum install python3-pip
sudo yum group install "Development Tools"
sudo yum install epel-release
sudo yum install openssl-devel libffi-devel python3-devel

安装docker:
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
ls /var/lib/docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl start docker


安装docker-compose :
sudo rm /usr/local/bin/docker-compose (删除旧的)
sudo curl -L "https://developer.aliyun.com/compose/docker-compose/$(uname -s)/$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker compose version (验证版本,旧命令不能用了:docker-compose version)

创建一个目录用于存储MySQL数据和配置文件:mkdir mysql_replication
cd mysql_replication
mkdir data
mkdir data/master
mkdir data/slave


在mysql_replication目录下编辑docker-compose.yml文件:
对于使用Docker部署的MySQL容器,通过command选项提供了启动参数。其中的--log-bin参数用于开启二进制日志(binary log),--binlog-do-db=mydb则指定要记录二进制日志的数据库为mydb,其他参数根据需要进行配置。
version: '3'
services:
master:
image: mysql:5.7
command: --server-id=1 --log-bin --binlog-do-db=mydb --innodb_flush_log_at_trx_commit=1
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
volumes:
- ./data/master:/var/lib/mysql

slave:
image: mysql:5.7
command: --server-id=2 --log-bin --replicate-do-db=mydb --innodb_flush_log_at_trx_commit=1
restart: always
depends_on:
- master
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_MASTER_HOST: master
MYSQL_MASTER_PORT: 3306
MYSQL_MASTER_USER: root
MYSQL_MASTER_PASSWORD: rootpassword
volumes:
- ./data/slave:/var/lib/mysql

 

docker compose up -d (docker-compose 这个格式不能用了)


启动MySQL容器:

在mysql_replication目录下运行以下命令启动容器:sudo docker-compose up -d
配置主从复制:

进入Master容器:sudo docker exec -it mysql_replication_master_1 bash
登录MySQL服务器并创建用于复制的用户:
bash
mysql -uroot -p
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;
获取Master容器的IP地址:ifconfig(记下eth0网卡的IP地址)
进入Slave容器:sudo docker exec -it mysql_replication_slave_1 bash
登录MySQL服务器并配置复制:
bash
mysql -uroot -p
CHANGE MASTER TO MASTER_HOST='master', MASTER_PORT=3306, MASTER_USER='replication_user', MASTER_PASSWORD='password';
START SLAVE;
EXIT;
完成这些步骤后,您应该已经在CentOS 7上成功部署了具有主从复制功能的MySQL环境。Master容器将记录二进制日志并自动复制到Slave容器。如果需要,可以在mysql_replication目录中查看Master和Slave容器的数据。