GTID mysql双主模式docker8.0
时间: 2023-11-01 13:59:35 浏览: 163
GTID(Global Transaction Identifier)是MySQL 5.6及更高版本引入的一种复制标识符。它用于标识在主从复制中所有操作的全局唯一ID,可以确保在复制过程中不会产生重复的事务。GTID是在双主模式下非常有用的,因为它可以简化双主复制的配置和管理。
在Docker 8.0中配置GTID双主模式,可以按照以下步骤进行操作:
1. 创建一个可连接的overlay网络:
```shell
docker network create --driver overlay common-network --attachable
```
2. 在两个MySQL容器中分别编辑配置文件`master.cnf`和`slave.cnf`,并添加以下内容:
```
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
log-bin=...
gtid_mode=ON
enforce_gtid_consistency=true
binlog_format=ROW
```
3. 分别启动两个MySQL容器,并将配置文件和数据目录挂载到容器内部:
```shell
docker run --restart=always -d -v /data/software/mysql8/master/config/my.cnf:/etc/mysql/my.cnf -v /data/software/mysql8/master/logs:/logs -v /data/software/mysql8/master/data/mysql:/var/lib/mysql -p 3306:3306 --name mysql_master -e MYSQL_ROOT_PASSWORD=root mysql:8.0.23
```
```shell
docker run --restart=always -d -v /data/software/mysql8/slave/config/my.cnf:/etc/mysql/my.cnf -v /data/software/mysql8/slave/logs:/logs -v /data/software/mysql8/slave/data/mysql:/var/lib/mysql -p 3307:3306 --name mysql_slave -e MYSQL_ROOT_PASSWORD=root mysql:8.0.23
```
4. 在主节点上创建一个用于复制的用户,并授予适当的权限:
```shell
docker exec -it mysql_master bash
mysql -uroot -p
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
```
5. 在从节点上配置主节点的连接信息,并启动复制:
```shell
docker exec -it mysql_slave bash
mysql -uroot -p
CHANGE MASTER TO MASTER_HOST='mysql_master', MASTER_PORT=3306, MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;
START SLAVE;
```
完成上述步骤后,GTID双主模式的MySQL容器就配置好了。
阅读全文