Mysql主从配置实施

创建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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容