Mysql主从配置
- 1、环境准备
- 1)Linux采用CentOS 7.x
- 2)安装docker
- 3)新建存储配置文件
- 2、安装及配置Mysql master
- 1)启动docker服务
- 2)拉取镜像
- 3)查看镜像
- 4)创建容器
- 5)查看设置容器
- 6)配置mysql.cnf 文件
- 7)进入容器
- 8)重启Mysql
- 9)重启/再进入容器
- 10)登录mysql
- 11)查询状态
- 12)查询容器IP地址
- 3、安装及配置Mysql slave
- 4)创建容器
- 6)配置mysql.cnf 文件
- 11)指定master
- 12)启动slave
- 13)查询slave
- 4、验证
- 5、开启远程访问
- 1)mysql配置
- 2)刷新权限
- 3)阿里云添加访问规则
- 4)navicat连接
- 6、附录(相关命令)
1、环境准备
1)Linux采用CentOS 7.x
2)安装docker
安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker-CE
sudo yum install docker-ce
查看安装的docker
yum list installed | grep docker
启动docker服务
sudo systemctl start docker
设置开机自启
sudo systemctl enable docker
3)新建存储配置文件
在/etc目录下分别创建:mysqlMaster 和 mysqlSlave
进入/etc:cd /etc
mkdir mysqlMaster
mkdir mysqlSlave
2、安装及配置Mysql master
1)启动docker服务
sudo systemctl start docker
2)拉取镜像
docker pull mysql:5.7
3)查看镜像
docker images
4)创建容器
创建容器 mysql-1
docker run --name mysql-1 -v /etc/mysqlMaster:/etc/mysql/conf.d -p 3301:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
--name mysql-1 mysql的名字name
-v /etc/mysqlMaster:/etc/mysql/conf.d 映射容器内的配置到宿主机
-p 3301:3306 映射宿主机的端口到容器的端口
-e MYSQL_ROOT_PASSWORD=123456 指定Mysql 的登录密码
-d mysql:5.7 指定镜像
5)查看设置容器
docker ps -a
设置开机自启
docker update --restart=always mysql-1
6)配置mysql.cnf 文件
配置宿主机内的/etc/mysqlMaster 目录下创建 mysql.cnf 文件
创建:touch mysql.cnf
文件内容如下:
[mysqld]
server-id=1
log-bin=master-bin
编辑完,按ESC退出编辑模式,输入 :wq 保存退出。
7)进入容器
docker exec -it mysql-1 bash
mysql-1(容器名称或者ID)
8)重启Mysql
重启Mysql 导致容器退出,要重启容器
service mysql restart
9)重启/再进入容器
docker start mysql-1
docker exec -it mysql-1 bash
10)登录mysql
mysql -uroot -p123456
11)查询状态
show master status;
12)查询容器IP地址
(退出容器才能查, 退出命令 exit) 用2次exit
docker inspect mysql-1
mysql-1 是自己的名称
3、安装及配置Mysql slave
特别注意:前面10步和Mysql master的1-10步是一样配置的,只需要区别命名,下面我只写出4、6两步做参考而已。
4)创建容器
创建容器 mysql-2
docker run --name mysql-2 -v /etc/mysqlSlave:/etc/mysql/conf.d -p 3302:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
设置开机自启
docker update --restart=always mysql-2
6)配置mysql.cnf 文件
配置Mysql slave的/etc/mysqlSlave 目录下创建 mysql.cnf 文件
创建:touch mysql.cnf
文件内容如下:
[mysqld]
server-id=2
log-bin=master-bin
编辑完,按ESC退出编辑模式,输入 :wq 保存退出。
11)指定master
change master to master_host='172.17.0.2', master_user='root', master_password='123456', master_port=3306, master_log_file='master-bin.000001', master_log_pos=154, master_connect_retry=30;
12)启动slave
Start slave;
13)查询slave
Show slave status\G;
上图中Slave_IO_Running: Yes 和Slave_SQL_Running: Yes 都必须是Yes 表示配置成功
4、验证
登录master 创建数据库和表,可以看到在slave里面自动生成。
5、开启远程访问
1)mysql配置
# mysql,8.0
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
grant all privileges on *.* to root@'%' with grant option;
# 8.0以前的版本
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
2)刷新权限
flush privileges;
3)阿里云添加访问规则
4)navicat连接
6、附录(相关命令)
systemctl start firewalld 开启防火墙
systemctl stop firewalld 开启防火墙
systemctl status firewalld 查看防火墙状态
netstat -altupn|grep 3301 查询端口占用
chmod 0777 /etc/mysqlmaster 修改目录权限
mysql -h 172.17.0.2 -uroot -p123 slave 登录master
show variables like 'log_bin'; 查看日志是否开启
show variables like'char%'; 查看编码格式
set character_set_server=utf8; 设置编码格式
set character_set_client= utf8;
set character_set_connection =utf8;
set character_set_results=utf8;
systemctl restart docker 重启docker
docker start b9f53d9bc7c5 启动容器
# 下载镜像:docker pull <镜像名:tag> 如:下载centos镜像
docker pull centos
docker pull sameersbn/redmine:latest
# 查看已下载镜像
docker images
# 删除容器
docker rm <容器名 or ID>
# 查看容器日志
docker logs -f <容器名 or ID>
# 查看正在运行的容器
docker ps
# 查看所有的容器,包括已经停止的。
docker ps -a
# 删除所有容器
docker rm $(docker ps -a -q)
# 停止、启动、杀死指定容器
docker start <容器名 or ID> # 启动容器
docker stop <容器名 or ID> # 启动容器
docker kill <容器名 or ID> # 杀死容器
# 后台运行 docker run -d <Other Parameters>
docker run -d -p 127.0.0.1:33301:22 centos6-ssh
# 暴露端口: 一共有三种形式进行端口映射
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口
# 映射数据卷
docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址