Mysql主从互备环境搭建

Mysql主从互备环境搭建

一、环境准备和部署架构

主从复制,是用来建立一个和主数据库完全一样的数据库环境,主数据库一般是准实时的业务数据库,主从复制的作用如下:

l 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。

架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

l 读写分离,使数据库能支持更大的并发。

规划:

l 服务器操作系统为centos7.9,为最小化安装。

主机A和主机B均关闭防火墙和SELINUX 。

l IP地址分别为192.168.10.62192.168.10.63.

l MySQL版本为 mysql:8.0 ,为Docker镜像安装。

 

 

 

 

 

 

 

二、安装mysql

2.1、安装docker

l Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本。

     

 

 

使用 root 权限登录 Centos。确保 yum 包更新到最新。

yum update

卸载旧版本(如果安装过旧版本的话)

yum remove docker  docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

 yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

安装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

验证安装是否成功(有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、创建备机链接主机的账号  授权 https://blog.csdn.net/zyhlwzy/article/details/80569422

 

  

 

 

 

 

2.3.2、开启主从同步 从机上执行

 

 1my.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、检查mysqlservice_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;

四、主从复制测试

Master 库中创建表 test-replication

 

 

 

 

 

slave库中显示结果

 

 

 

五、参考

  5.1dockerhttps://www.runoob.com/docker/centos-docker-install.html

  5.2docker hubhttps://hub.docker.com/ 

docker安装:
https://www.cnblogs.com/yufeng218/p/8370670.html

https://hub.docker.com/_/mysql

MySQL双主配置
https://www.cnblogs.com/fengyutech/p/4967522.html
Mysql主从配置
https://blog.csdn.net/qq_33196814/article/details/81513907
如何修改 docker 容器的目录映射:
https://www.cnblogs.com/poloyy/p/13993832.html
MySQL 8.0主从(Master-Slave)配置:
https://blog.csdn.net/zyhlwzy/article/details/80569422

 

 

posted @ 2021-10-09 17:26  溶洞  阅读(491)  评论(0编辑  收藏  举报