实际应用: 线上存在一个正在运行的mysql数据库,需要添加一个从节点用来实现读写分离环境。目前正在运行的数据库当作master节点用来写入,新添加一个从节点用来读取。
具体操作步骤
- 在master上对数据库做完全备份,并且拷贝到slave节点
线上mysql在docker 容器中,需要先进入docker 容器,再执行
1 | # 新建backup文件夹 |
- 在宿主机拷贝docker容器中的备份文件至宿主机,并传输到slave节点宿主机。
1 | sudo docker cp mysql:/backup/fullbackup_2021-09-24_16:08:16.sql /home/zhxy/ |
- 创建replication用户并授权
1 | CREATE USER 'replication'@'%' IDENTIFIED WITH mysql_native_password BY 'zxxy_slave'; |
- 创建slave节点mysql容器
文件目录结构
docker-compose.yml:
1 | version: '3' |
slave/.env.slave
1 | TZ=Asia/Shanghai |
slave/conf/my.cnf
1 | [mysqladmin] |
- 启动容器,并将备份的sql文件拷贝至容器中
1 | docker-compose up -d |
- 导入数据
1 | mysql -p < fullbackup_2021-09-24_16:08:16.sql |
查看数据库,可以看到已经导入成功 注:(导入成功后的用户会变成主节点的用户)
配置slave节点以实现同步数据
查找备份文件的position信息
1 | grep '^CHANGE MASTER' /recover/fullbackup_2021-09-24_16:08:16.sql |
- 创建slave
1 | CHANGE MASTER TO |
- 启动slave
1 | start slave; |