MySQL环境配置

219 阅读3分钟

CentOS7虚拟机环境配置

  1. 使用Virtualbox安装CentOS7虚拟机

  2. 网络设置,这样可以通过virtualbox的端口转发,在外部访问虚拟机端口

network-scripts.png

  1. 设置要对外开放的端口

    # 查询已开放的端口
    netstat -anp
    # 查询指定端口是否已开启,提示yes标识开启,no标识未开启
    firewall-cmd --query-port=3306/tcp
    # 添加指定需要开放的端口
    firewall-cmd --add-port=3306/tcp --permanent
    # 重新载入添加的端口
    firewall-cmd --reload
    # 移除指定端口
    firewall-cmd --permanent --remove-port=3306/tcp
    # 查看防火墙状态
    systemctl status firewalld
    # 开启防火墙
    systemctl start firewalld
    # 关闭防火墙
    systemctl stop firewalld
    
  2. Virtualbox的端口转发

port-forward.png

  1. Docker安装

    curl -sSL https://get.daocloud.io/docker | sh
    # 开机自启
    systemctl enable docker
    # 镜像配置
    cd /etc/docker
    vi daemon.json
    
    {
        "registry-mirrors": ["https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://3laho3y3.mirror.aliyuncs.com", "http://f1361db2.m.daocloud.io", "https://mirror.ccs.tencentyun.com"]
    }
    
    # 重新加载
    systemctl daemon-reload
    systemctl restart docker
    
  2. 设置docker自定义网络

    # 查看当前所有网络
    docker network ls
    # 新建网络
    docker network create --subnet=172.18.0.0/16 my-network
    
  3. 设置CentOS虚拟开机自启

    # 在启动文件夹放置后台启动虚拟机的脚本(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp)
    $VIRTUAL_PATH\VBoxManage startvm centos7 --type headless
    

Mysql主从同步配置

  1. 建立目录

image-20210704222935168.png

  1. 配置主从配置文件

    cd /usr/local/mysql/cluster01/master/conf
    vi my.cnf
    
    [mysqld]
    # 用于标识不同的数据库服务器,而且唯一
    server_id = 1
    # 需要启用二进制日志
    log-bin=mysql-bin
    # 
    read-only=0
    # 需要记录二进制日志的数据库
    binlog-do-db=test
    # 忽略记录二进制日志的数据库
    # binlog-ignore-db=
    # 该服务器自增列的初始值
    # auto-increment-offset=
    # 该服务器自增列增量
    # auto-increment-increment=
    # 制定复制的数据库
    # replicat-do-db=
    # 不复制的数据库
    replicate-ignore-db=mysql
    # 从库的中继日志,主库日志写到中继日志,中继日志再重做到从库
    # relay_log=
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    !includedir/etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
    cd /usr/local/mysql/cluster01/slave/conf
    vi my.cnf
    
    [mysqld]
    server_id = 2
    log-bin=mysql-bin
    read-only=1
    binlog-do-db=test
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    relay_log=slaver_relay_log
    !includedir/etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
  2. 创建mysql主从容器

    docker pull mysql:5.7
    # 主库
    docker run --name mysql-master-01 --net my-network --ip 172.18.0.2 -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -v /usr/local/mysql/cluster01/master/data/:/var/lib/mysql -v /usr/local/mysql/cluster01/master/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7
    # 从库
    docker run --name mysql-slave-01 --net my-network --ip 172.18.0.3 -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root -v /usr/local/mysql/cluster01/slave/data/:/var/lib/mysql -v /usr/local/mysql/cluster01/slave/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7
    
    # 设置开机自启
    docker update --restart=always mysql-master-01
    docker update --restart=always mysql-slave-01
    
  3. 主从同步配置

    # 进入master容器
    docker exec -it mysql-master-01 bash
    # 登录mysql
    mysql -uroot -p
    
    # 创建用来同步的用户
    grant replication slave on *.* to 'replicat'@'%' identified by 'replicat'
    # 查看状态,记住file,position的值,在slave的配置中将用到
    show master status;
    

image-20210704224818931.png

# 获取masterip
docker inspect mysql-master-01
# 进入slave容器
docker exec -it mysql-slave-01 bash
mysql -uroot -p

image-20210704225333462.png

# 设置主库连接
change master to master_host='172.18.0.2',master_user='replicat',master_password='replicat',master_log_file='mysql-bin.000003',master_log_pos=441,master_port=3306;

stop slave io_thread for channel  '';
# 启动主从库同步
# 重启slave
reset slave;
start slave;
# 查看状态
show slave status\G;

image-20210704225725562.png