MySql 9 in Docker 利用克隆插件搭建主从

打印 上一主题 下一主题

主题 1022|帖子 1022|积分 3066

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
环境说明


  • Docker
  • Windows 11
  • MySql 9.1.0
搭建步调

1. 准备主库


  • 准备一个主库的配置文件 master.cnf
  1. [mysqld]
  2. server-id=1
  3. log-bin=mysql-bin
  4. binlog-format=ROW
  5. gtid_mode=ON
  6. enforce-gtid-consistency=ON
  7. log_slave_updates=ON
  8. read_only=OFF
  9. plugin-load=clone=mysql_clone.so
复制代码

  • 执行 Docker run 启动主库容器
  1. docker run --name mysql-master --restart=unless-stopped -p 5300:3306 -e MYSQL_ROOT_PASSWORD=123456 -v C:\Users\Administrator\docker\MySql\replication\master\conf\master.cnf:/etc/mysql/conf.d/master.cnf:ro -v C:\Users\Administrator\docker\MySql\replication\master\data:/var/lib/mysql -d mysql
复制代码

  • 进入容器并登陆mysql
  1. docker exec -it mysql-master bash
  2. mysql -u root -p
复制代码

  • 创建复制用户
  1. CREATE USER 'repl'@'%' IDENTIFIED with caching_sha2_password BY '123456';  
  2. GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';  
  3. FLUSH PRIVILEGES;
复制代码

  • 退出
  1. EXIT;
复制代码
2. 准备从库


  • 准备一个从库的配置文件 slave.cnf
  1. [mysqld]
  2. server-id=2
  3. log-bin=mysql-bin
  4. binlog-format=ROW
  5. gtid_mode=ON
  6. enforce-gtid-consistency=ON
  7. read_only=ON
  8. plugin-load=clone=mysql_clone.so
复制代码

  • 执行 Docker run
  1. docker run --name mysql-slave --restart=unless-stopped -p 5301:3306 -e MYSQL_ROOT_PASSWORD=123456 -v C:\Users\Administrator\docker\MySql\replication\slave\conf\slave.cnf:/etc/mysql/conf.d/slave.cnf:ro -v C:\Users\Administrator\docker\MySql\replication\slave\data:/var/lib/mysql -d mysql
复制代码

  • 进入容器并登陆mysql
  1. docker exec -it mysql-slave bash
  2. mysql -u root -p
复制代码

  • 允许克隆泉源
  1. SET GLOBAL clone_valid_donor_list = '172.17.0.6:3306';
复制代码

  • 执行克隆命令
  1. CLONE INSTANCE FROM 'root'@'172.17.0.6':3306 IDENTIFIED BY '123456';
复制代码

  • 克隆完成,从库会主动重启
  • 重新进入后可以查看克隆状态
  1. select * from performance_schema.clone_status;
复制代码

  • 从库即可开启主从复制
  1. CHANGE REPLICATION SOURCE TO
  2.         SOURCE_HOST='172.17.0.6',
  3.         SOURCE_PORT = 3306,
  4.         SOURCE_USER='repl',
  5.         SOURCE_PASSWORD='123456',
  6.         GET_SOURCE_PUBLIC_KEY=1,
  7.         SOURCE_AUTO_POSITION=1;
  8. start REPLICA;
  9. SHOW REPLICA STATUS\G;
复制代码
验证


  • 主库执行下列SQL,完成后查看从库是否同步
  1. CREATE DATABASE test_db2;  -- 创建数据库  
  2. USE test_db2;  -- 切换数据库  
  3. CREATE TABLE users (  
  4.                        id INT AUTO_INCREMENT PRIMARY KEY,  
  5.                        name VARCHAR(50) NOT NULL,  
  6.                        email VARCHAR(100) NOT NULL  
  7. );  -- 创建表  
  8. INSERT INTO users (name, email) VALUES ('tsj', 'tsj@example.com');  -- 插入数据  
  9. SELECT * FROM users;  -- 查看数据
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表