ubuntu16.04基于docker搭建MySQL8.0 主从同步,搭建不成功算我的

本文详细介绍了如何在Ubuntu16.04上使用Docker搭建MySQL8.0的主从同步环境。包括配置Docker、设置端口、创建配置文件、运行MySQL容器、配置主从服务器、解决主从同步问题以及应对数据不一致的策略。最后提到了MySQL8.0的加密方式更改和读写分离的解决方案。
摘要由CSDN通过智能技术生成

文章目录

1. 环境配置

当然如果是win10搭建MySQL8.0,一条主机搭建主从也是可以的,可以参考win10搭建主从
如下是我的主服务器配置

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
  
[mysqld]
# 设置3308端口
port = 3308
#唯一,要与从机的不同
server-id = 1
# Binary Logging.
#开启二进制日志
log-bin= mysql-bin-master
# 设置mysql的安装目录
basedir=D:\\mysql\\mysqlMaster
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=D:\\mysql\\mysqlMaster\\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

从服务器配置

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
  
[mysqld]
# 设置3309端口
port = 3309
log-bin=mysql-bin-slave
server_id=200
# 设置mysql的安装目录
basedir=D:\\mysql\\mysqlSlave
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=D:\\mysql\\mysqlSlave\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

1.1 docker

1.2 Ubuntu16.04

1.3 MySQL版本是:8.0.16

2. 两台MySQL端口配置10000和10001,确认阿里云开启

2.2 为啥用10000和10001,因为3306已经开启了一个,被占用了

阿里云

3. 在Linux上配置两台docker的server_id等配置

3.1 新建文件夹 /root/mysql/conf/master 并添加master.cnf文件

[mysqld]
log-bin=mysql-bin-master  //启用二进制日志
server_id=100   //xxx代表唯一ID,默认是1。特别注意,当前版本这里是server_id而不是server-id,有些版本可能会不一样

3.2 新建文件夹 /root/mysql/conf/slave并添加slave.cnf文件

[mysqld]
log-bin=mysql-bin-slave
server_id=200

PS: 如果是在Windows上面安装的docker-desktop安装的则在自己的盘下面建两个文件夹也是可以的,比如我的是:
D:/SoftTools/docker/masterD:/SoftTools/docker/slave

4. docker 运行两台MySQL

4.1 以10000端口运行第一台《主》,名字是:mysql-master并挂载刚才的配置文件

4.1.1 注意挂载位置一定是刚才你新建配置文件master.cnf的位置

4.1.2 注意MySQL版本是8.0.16并且两台MySQL的版本一定要一致

docker run --name mysql-master -v /root/mysql/conf/master:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 10000:3306 -d mysql:8.0.16     --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

4.2 以10001端口运行第2台《从》,名字是:mysql-slave并挂载刚才的配置文件

4.2.1 注意两台MySQL的用户名和密码都是root

 docker run --name mysql-slave -v /root/mysql/conf/slave:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 10001:3306 -d   mysql:8.0.16   --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

如果是windows安装的dockers,则可以

docker run --name mysql-master -v D:/SoftTools/docker/master:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 10000:3306 -d mysql:8.0.16 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci


docker run --name mysql-slave -v D:/SoftTools/docker/slave:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 10001:3306 -d mysql:8.0.16 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

5. 配置主服务器,在主服务器新建从服务器的连接账号

建议直接往下看5.1 ,这个先别用

 // 1.进入主库容器
docker exec -it mysql-master bash
// 2.登录mysql
mysql -uroot -proot
// 3.rep表示复制账号;<salve_ip>可修改为%,代表任意的主机;`IDENTIFIED BY`后面代表rep用户的认证密码
CREATE USER 'rep'@'<salve_ip>' IDENTIFIED WITH mysql_native_password BY 'reppassword';
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'<salve_ip>';

5.1 推荐直接用下面的这个,因为两台MySQL在一台服务器上面

// 1.进入主库容器
docker exec -it mysql-master bash
// 2.登录mysql
mysql -uroot -proot
// 3.rep表示复制账号;<salve_ip>可修改为%,代表任意的主机;`IDENTIFIED BY`后面代表rep用户的认证密码
CREATE USER 'rep'@'%' IDENTIFIED WITH mysql_native_password BY 'rep';
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%';

5.2 获取主服务器相关信息,记录File和Position值

show master status;

+-------------------------+----------+--------------+------------------+-------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-master.000003 |      656 |              |                  |                   |
+-------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

6. 配置从服务器

// 1.进入从库容器
docker exec -it mysql-slave bash
// 2.登录mysql
mysql -uroot -proot

不要直接复制,先看6.1

// 3.配置主库认证信息,<File>和<Position>同上
CHANGE MASTER TO MASTER_HOST='<master_ip>',MASTER_PORT=10000,MASTER_USER='rep',MASTER_PASSWORD='reppassword',MASTER_LOG_FILE=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值