文章目录
MySQL主从复制
下面是基于于Docker配置MySQL主从复制。我们事先准备好MySQL的配置文件以及保存MySQL数据和运行日志的目录,然后通过Docker的数据目录挂载来指定容器的配置、数据和日志文件的位置。
root
└── mysql
├── master
│ ├── conf
| └── data
└── slave-1
| ├── conf
| └── data
└── slave-2
| ├── conf
| └── data
└── slave-3
├── conf
└── data
-
MySQL的配置文件(master和slave的配置文件需要不同的server-id)
[mysqld] pid-file=/var/run/mysqld/mysqld.pid #进程号保存文件 socket=/var/run/mysqld/mysqld.sock datadir=/var/lib/mysql #数据文件 log-error=/var/log/mysql/error.log #错误日志文件 server-id=1 #主机从机server-id不能一样 log-bin=/var/log/mysql/mysql-bin.log #二进制日志文件,记录了数据改变的操作 expire_logs_days=30 #日志过期时间 max_binlog_size=256M #二进制日志文件最大大小 symbolic-links=0 # slow_query_log=ON #开启慢查询 # slow_query_log_file=/var/log/mysql/slow.log #慢查询日志 # long_query_time=1 #超过 1秒为慢查询
-
创建和配置master
docker run -d -p 3306:3306 --name mysql-master \ -v /data/docker/mysql/master/conf:/etc/mysql/mysql.conf.d \ -v /data/docker/mysql/master/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=y123456! mysql:5.7 docker exec -it mysql-master /bin/bash
mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.7.23-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> grant replication slave on *.* to 'slave'@'%' identified by 'iamslave'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+-----------------