CentOS7虚拟机环境配置
-
使用Virtualbox安装CentOS7虚拟机
-
网络设置,这样可以通过virtualbox的端口转发,在外部访问虚拟机端口
-
设置要对外开放的端口
# 查询已开放的端口 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 -
Virtualbox的端口转发
-
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 -
设置docker自定义网络
# 查看当前所有网络 docker network ls # 新建网络 docker network create --subnet=172.18.0.0/16 my-network -
设置CentOS虚拟开机自启
# 在启动文件夹放置后台启动虚拟机的脚本(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp) $VIRTUAL_PATH\VBoxManage startvm centos7 --type headless
Mysql主从同步配置
-
建立目录
-
配置主从配置文件
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/ -
创建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 -
主从同步配置
# 进入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;
# 获取masterip
docker inspect mysql-master-01
# 进入slave容器
docker exec -it mysql-slave-01 bash
mysql -uroot -p
# 设置主库连接
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;