Mysql主从互备环境搭建
一、环境准备和部署架构主从复制,是用来建立一个和主数据库完全一样的数据库环境,主数据库一般是准实时的业务数据库,主从复制的作用如下:
l 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
l 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
l 读写分离,使数据库能支持更大的并发。
规划:
l 服务器操作系统为centos7.9,为最小化安装。
l 主机A和主机B均关闭防火墙和SELINUX 。
l IP地址分别为192.168.10.62和192.168.10.63.
l MySQL版本为 mysql:8.0 ,为Docker镜像安装。
二、安装mysql
2.1、安装docker
l Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本。
l 使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum update
l 卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
l 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
l 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
l 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
l 安装docker
yum install docker-ce-18.03.1.ce-1.el7.centos docker-ce-cli-1:20.10.8-3.el7 containerd.io
l 启动并加入开机启动
systemctl start docker
systemctl enable docker
l 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
2.2、安装mysql8.0
2.2.1、主mysql 192.168.10.62
l 拉取镜像:
docker pull mysql:8.0
l 创建容器:
docker run --restart=always --privileged=true -p 3306:3306 --name mysqlmaster -e MYSQL_ROOT_PASSWORD=password123 -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/data:/var/lib/mysql -d mysql:8.0
2.2.2、从mysql 192.168.10.63
l 拉取镜像
docker pull mysql:8.0
l 创建容器:
docker run --restart=always --privileged=true -p 3306:3306 --name mysqlslave -e MYSQL_ROOT_PASSWORD=password123 -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/data:/var/lib/mysql -d mysql:8.0
l 修改主从配置:参考命令
docker cp 本地路径/my.cnf mysql:/etc/mysql,将本地文件替换掉mysql容器里面的文件
2.2.3、远程访问授权
use mysql;
ALTER USER 'root'@'%' IDENTIFIED BY 'password123' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED with mysql_native_password by 'password123';
flush privileges;
2.3、配置mysql主从复制
2.3.1、主从复制---Master主机上执行以下步骤
1、配置my.cnf
2、创建备机链接主机的账号 授权
2.3.2、开启主从同步 从机上执行
1、my.cnf 添加
server-id=63
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-63
三、配置mysql主从关系3.1、在从(Slave)节点的mysql执行以下命令:
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.10.62',
MASTER_USER='repl',
MASTER_PASSWORD='password123',
MASTER_LOG_FILE='mysql-bin-200.000010',
MASTER_LOG_POS=156;
3.2、开启复制监听
start slave;
3.3、检查状态
show slave status \G
确保以下参数是yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3.4、复制关系问题修复:
1、检查mysql的service_id
show variables like 'server_id';
2、修改从链接主的配置信息
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.10.62';
CHANGE MASTER TO MASTER_USER='repl';
CHANGE MASTER TO MASTER_PASSWORD='password123';
#来自主机的show master
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-200.000010';
#来自主机的show master
CHANGE MASTER TO MASTER_LOG_POS=156; start slave;
show slave stauts \G;
四、主从复制测试l Master 库中创建表 test-replication
l slave库中显示结果
五、参考
5.1:docker:https://www.runoob.com/docker/centos-docker-install.html
5.2:docker hub:https://hub.docker.com/