一、什么是 MySQL 双机热备?
双机热备的工作原理是设置一个数据库为主库,另一个数据库为从库。当主库出现故障时,从库能自动接管主库的功能,向外提供服务。两台数据库互相同步,协同工作。
另外 MySQL 主从同步还有一主一从、一主多从、主从从、双主、双主多从等模式。我们今天讲的就是双主结构。另外几种原理都是大同小异。
二、如何搭建 MySQL 的双机热备模式?
1、环境准备:CentOS7.x
2、安装docker :
yum update --确保yum是最新的
yum -y install docker-io -- 安装docker
systemctl start docker ##启动
systemctl enable docker ##设置docker开机启动
3、安装 MySQL8镜像
下载镜像 docker pull mysql
查看镜像 docker images
分别创建master 和 slave目录用来挂载配置文件
mkdir -p /home/mysql-master/conf
添加配置文件my.cnf 添加以下内容
[mysqld]
lower_case_table_names=1
##[必须]启用二进制日志
log-bin=mysql-bin
## [必须]服务器唯一ID,默认是1
server-id=1
replicate-ignore-db=mysql
default_authentication_plugin=mysql_native_password
mdir -p /home/mysql-slave/conf
添加配置文件my.cnf并添加以下内容
[mysqld]
lower_case_table_names=1
log-bin = mysql-bin
## id 一定要与 master 不一样
server-id = 2
replicate-ignore-db = mysql
创建并启动master 容器:
docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=root -v /home/mysql-master/:/etc/mysql/conf.d -p 13306:3306 -d mysql
创建并启动slave容器
docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=root -v /home/mysql-slave/:/etc/mysql/conf.d -p 13307:3306 -d mysql
4、MySQL 主从配置(双主)
使用navicate 连接 mysql-master
# 查看 master 状态,File 和 Position 需要填写到从服务中
连接mysql-slave,设置主从连接关系,执行同步 SQL 语句(需要主服务器主机名,二进制文件的名称和位置)实现同步。
CHANGE MASTER to MASTER_HOST="192.168.146.128",
MASTER_PORT=13307,MASTER_user="root",
MASTER_PASSWORD="root",
##执行show master status查询出来的File 和Position
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=273826;
开启 (从库模式):start SLAVE;
查看查看线程是否开启:当 Slave_IO_Running 和 Slave_SQL_Running 都为 YES 的时候就表示主从同步设置成功了。都可进行写入、读取,实现了数据库的互相同步。
对mysql-master 同样操作设置主从连接关系。
OK,至此 MySQL 主从也配置完成。