创建Centos7服务器
使用vbox创建虚拟机
配置网络
cd /etc/sysconfig/network-scripts/
安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装docker-compose
#下载
curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#添加执行权限
chmod +x /usr/local/bin/docker-compose
#设置环境path路径
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#验证
docker-compose version
拉取镜像
docker pull mysql:5.6
测试镜像
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
移除测试容器
使用docker-compose创建主服务器
version: '3.1'
services:
db_master:
image: mysql:5.7
container_name: mysql57_master
restart: on-failure
environment:
TZ : "Asia/Shanghai"
ports:
- 3306:3306
environment:
- "MYSQL_ROOT_PASSWORD=root"
- "MYSQL_DATABASE=test"
- "TZ=Asia/Shanghai"
volumes:
- ./data/mydir:/mydir
- ./data/etc_mysql_mysql.conf.d:/etc/mysql/mysql.conf.d/
- ./data/etc_mysql_conf.d/:/etc/mysql/conf.d/
- ./data/var_lib_mysql:/var/lib/mysql
添加配置二进制日志etc_mysql_mysql.conf/binary_log.cnf
[mysqld]
server-id = 1 # 给主服务器分配一个唯一的ID
log-bin=mysql-bin # 开启二进制日志功能
binlog_format=row # 设置binlog格式为ROW,更适合复制
查看主服务器状态,注意主服务器的日志和偏移量,后面复制需要用到
SHOW MASTER STATUS;
创建复制用户,注意需要给用户添加复制权限
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;
使用docker-compose创建从服务器
version: '3.1'
services:
db_slave_1:
image: mysql:5.7
container_name: mysql57_slave_1
depends_on:
- db_master
restart: on-failure
environment:
TZ : "Asia/Shanghai"
ports:
- 33061:3306
environment:
- "MYSQL_ROOT_PASSWORD=root"
- "MYSQL_DATABASE=test"
- "TZ=Asia/Shanghai"
volumes:
- ./data_slave/mydir:/mydir
- ./data_slave/etc_mysql_mysql.conf.d:/etc/mysql/mysql.conf.d/
- ./data_slave/etc_mysql_conf.d/:/etc/mysql/conf.d/
- ./data_slave/var_lib_mysql:/var/lib/mysql
配置从服务器的id在./data_slave/etc_mysql_conf.d/文件夹下配置slave.cnf
[mysqld]
# 从分区id从100后开始配置
server-id = 102
设置从服务器连接到主服务器的参数
CHANGE MASTER TO
MASTER_HOST='192.168.56.102',
MASTER_PORT=3306,
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=0;
启动/停止从服务器复制
START SLAVE;
STOP SLAVE;
查看从服务器状态
SHOW SLAVE STATUS;