4、MYSQL主主热备

docker 测试mysql

# A
sudo docker run -p 12345:3306 --name mysql_master \
-v /docker/mysql_master/conf:/etc/mysql/conf.d \
-v /docker/mysql_master/logs:/logs \
-v /docker/mysql_master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7



# B
sudo docker run -p 12346:3306 --name mysql_slave \
-v /docker/mysql_slave/conf:/etc/mysql/conf.d \
-v /docker/mysql_slave/logs:/logs \
-v /docker/mysql_slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

查看容器IP地址

sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql_master 
sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql_slave

查看 skip_networking 的状态

确保在主服务器上 skip_networking 选项处于 OFF 关闭状态, 这是默认值。如果是启用的,则从站无法与主站通信,并且复制失败。

Mysql 双机热备

  • A: 172.17.0.2

  • B: 172.17.0.3

1. 首先创建测试数据库, <A、B 都需要创建>

create database test default charset utf8;

2. 创建同步用户,<A、B 都需要创建>

3. 修改数据库配置文件,然后重启

3. 修改mysql配置文件,重启 MySQL 服务

5. 分别在AB服务器上启动从服务线程,并查看

6. 测试写数据

7. 测试宕机

==注意,如果是在生成环境中,需要先锁表:==

参数说明:

参数
详解

server-id

唯一标识,1~232之间

log-bin

表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提

binlog-do-db

表示需要记录二进制日志的数据库,如果有多个数据可以用逗号分隔,或者使用多个binlog-do-dg选项

binglog-ingore-db

表示不需要记录二进制日志的数据库,如果有多个数据库可用逗号分隔,或者使用多binglog-ignore-db选项。

replicate-do-db

表示需要同步的数据库,如果有多个数据可用逗号分隔,或者使用多个replicate-do-db选项。

replicate-ignore-db

表示不需要同步的数据库,如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项。

master-connect-retry

表示主、从连接没有成功,等待时间,默认60s)。如果从服务器存在mater.info文件,它将忽略些选项。

log-slave-updates

配置操作是否写入二进制文件,如果是从库,还要做其他从库的主库,那么就需要打这个参数

slave-skip-errors

定义忽略错误号。如果从库只做备份,那就不配置。如果是分担主库的查询压力,可以考虑。

sync_binlog

0 不同步到磁盘, 1 同步到磁盘(防止系统崩溃丢失数据)

auto_increment_increment

控制列中的值的增量值,用于主-主服务器(master-to-master)复制

auto_increment_offset

确定AUTO_INCREMENT列值的起点。用于主-主服务器(master-to-master)复制

Last updated