image.png

实现集群(主从同步、读写分离、分片机制)

主从同步

1.在my.cnf配置主从关系

配置链接:https://pan.baidu.com/s/1mvX_iXnmgQ7Xhh_LG4T5zA 提取码:dong

包含mysql编码、时区、连接数、验证机制、版本5.7后分组问题处理

2.挂载运行Mysql8.0.21

  1. docker run --name mysql-latest -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -v /var/run/docker.sock:/var/run/docker.sock -v /root/mysql/conf.d:/etc/mysql/conf.d -v /root/data:/var/lib/mysql -v /home/mysql/my.cnf:/etc/mysql/my.cnf -d mysql:latest

详情参照地址:https://www.yuque.com/docs/share/db61bc50-fe76-4a38-9c18-925a1ff01538

3.登录Mysql创建数据同步用户slave1、slave2,并授权

  1. CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
  2. alter user 'slave'@'%' identified with mysql_native_password BY '123456';

创建用户slave,密码123456

  1. 同版本 GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'slave'@'%';
  2. 不同版本 GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

授予slave用户 REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主 从 数据库之间同步数据

授予所有权限则执行命令: GRANT ALL PRIVILEGES ON . TO ‘slave’@’%’;

  1. FLUSH PRIVILEGES

4.查询状态中的File和Position用于从服务连接

  1. show master status;

5.在slave1服务器中登录mysql,启动主从同步

  1. change master to master_host='192.168.10.223',master_port=3307, master_user='slave2', master_password='123456', master_log_file='mysql-bin.000002', master_log_pos= 23693875, master_connect_retry=30;
  2. start slave;

关闭同步:stop slave;RESET slave;

6.查看同步状态

  1. show slave status

IO_Running与SQL_Running为Yes表示成功

读写分离

1.配置scheam.xml中的主从节点关系与server.xml中的用户权限信息

配置链接:https://pan.baidu.com/s/14l5fSdIIVLmAlG3hSkXN9w 提取码:dong

2.挂载运行

  1. docker run --name mycat_server -d -p 8066:8066 -p 9066:9066 --restart=always -v /home/mycat/server.xml:/usr/local/mycat/conf/server.xml -v /home/mycat/schema.xml:/usr/local/mycat/conf/schema.xml longhronshens/mycat-docker

切片规则配置

1.在rule.xml中定义切片规则

image.png

2.在scheam.xml中对指定表选取规则

image.png