mysql主从复制读写分离

mysql主从复制

  • mysql提高性能方法之一 [读写分离]

由于资源有限,我们用docker来演示多个mysql间实现主从复制

docker-compose配置参考

 mysql:
  image: mysql:5.7.35
  container_name: mysql
  ports:
   - 3406:3306
  environment:
   - MYSQL_ROOT_PASSWORD=lican520
   - TZ=Asia/Shanghai
  volumes:
   - ./mysql/lib/mysql:/var/lib/mysql
   - ./mysql/conf.d:/etc/mysql/conf.d
  logging:
   driver: json-file
   options:
    max-size: "10M"
    max-file: "10"
  restart: always


 mysql_slave:
  image: mysql:5.7.35
  container_name: mysql_slave
  ports:
   - 3407:3306
  environment:
   - MYSQL_ROOT_PASSWORD=lican520
   - TZ=Asia/Shanghai
  volumes:
   - ./mysql_slave/lib/mysql:/var/lib/mysql
   - ./mysql_slave/conf.d:/etc/mysql/conf.d
  logging:
   driver: json-file
   options:
    max-size: "10M"
    max-file: "10"
  restart: always

 mysql_slave2:
  image: mysql:5.7.35
  container_name: mysql_slave2
  ports:
   - 3408:3306
  environment:
   - MYSQL_ROOT_PASSWORD=lican520
   - TZ=Asia/Shanghai
  volumes:
   - ./mysql_slave2/lib/mysql:/var/lib/mysql
   - ./mysql_slave2/conf.d:/etc/mysql/conf.d
  logging:
   driver: json-file
   options:
    max-size: "10M"
    max-file: "10"
  restart: always

1.修改docker-compose.yaml文件,新增一主两从

2.重启docker-compose

docker-compose down
docker-compose up -d 

3.查看三个mysql容器启动状态

docker ps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aRZKrOmw-1679968813969)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1679966330845.png)]

4.修改主mysql配置文件

cd /home/work/dockerProject/mysql/conf.d
vim my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=device //同步到从服务器的数据库
expire_logs_days=7

5.进主mysql查看master-log-file和position

docker exec -it mysql /bin/bash
mysql -uroot -p lican520
show master status

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iPVo25IR-1679968813970)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1679966935160.png)]

6.新增同步用户

GRANT REPLICATION SLAVE ON *.* to 'master001'@'%' identified by 'lican520'

7.修改从mysql配置文件

cd /home/work/dockerProject/mysql_slave
vim my.cnf
[mysqld]
server-id=2
replicate_wild_do_table=device.%

cd /home/work/dockerProject/mysql_slave2
vim my.cnf
[mysqld]
server-id=3
replicate_wild_do_table=device.%

8.登录从服务器[这里演示mysql_slave2]

docker exec -it mysql_slave2 /bin/bash
mysql -uroot -p lican520
//设置同步指令
change master to master_host='175.24.207.175',master_port=3406,master_user='master001',master_password='lican520',master_log_file='mysql-bin.000003',master_log_pos=154;

9.开启同步

start slave

10.查看同步状态

show slave status\G;

11.验证

//1.在主服务器创建数据库,创建表,插入数据
insert into device value (2, 'device2');
查看从服务器的同步情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XaxWHnQf-1679968813971)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1679968634448.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值