翼度科技»论坛 云主机 服务器技术 查看内容

Docker部署Mysql8.0.20并配置主从复制的实现步骤

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
1. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

2. 前提准备
  1. # 创建主从数据库文件夹
  2. mkdir -p /usr/local/mysql/master1/conf
  3. mkdir -p /usr/local/mysql/master1/data
  4. mkdir -p /usr/local/mysql/slave1/conf
  5. mkdir -p /usr/local/mysql/slave1/data

  6. # 初始化主数据库配置文件
  7. cd /usr/local/mysql/master1/conf
  8. touch my.cnf
  9. vi my.cnf

  10. # 粘贴以下内容
  11. [mysqld]
  12. datadir = /usr/local/mysql/master1/data
  13. character-set-server = utf8
  14. lower-case-table-names = 1

  15. # 主从复制-主机配置
  16. # 主服务器唯一ID
  17. server-id = 1
  18. # 启用二进制日志
  19. log-bin=mysql-bin
  20. # 设置logbin格式
  21. binlog_format = STATEMENT

  22. # 初始化从数据库配置文件
  23. cd /usr/local/mysql/slave1/conf
  24. touch my.cnf
  25. vi my.cnf

  26. # 粘贴以下内容
  27. [mysqld]
  28. datadir = /usr/local/mysql/slave1/data
  29. character-set-server = utf8
  30. lower-case-table-names = 1

  31. # 主从复制-从机配置
  32. # 从服务器唯一ID
  33. server-id = 2
  34. # 启用中继日志
  35. relay-log = mysql-relay

  36. # 文件夹授权
  37. chmod -R 777 /usr/local/mysql
复制代码
3. Docker部署Mysql8.0.20
  1. # 拉取镜像
  2. docker pull mysql:8.0.20

  3. # 查看镜像
  4. docker images

  5. # 构建主数据库容器
  6. docker run --name=mysql-master-1 --privileged=true -p 3306:3306 -v /usr/local/mysql/master1/data/:/var/lib/mysql -v /usr/local/mysql/master1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/master1/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1

  7. # 查询是否启动成功
  8. docker ps

  9. # 验证是否可以登录
  10. # 交互式进入容器
  11. docker exec -it mysql-master-1 /bin/bash

  12. # 登录(使用构建时指定的密码:3edc#EDC)
  13. mysql -uroot -p

  14. # 退出
  15. quit
  16. exit

  17. # 构建从数据库容器
  18. docker run --name=mysql-slave-1 --privileged=true -p 3307:3306 -v /usr/local/mysql/slave1/data/:/var/lib/mysql -v /usr/local/mysql/slave1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/slave1/mysql-files/:/var/lib/mysql-files/ -e  MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1

  19. # 查询是否启动成功
  20. docker ps

  21. # 验证是否可以登录
  22. # 交互式进入容器
  23. docker exec -it mysql-slave-1 /bin/bash

  24. # 登录(使用构建时指定的密码:3edc#EDC)
  25. mysql -uroot -p

  26. # 退出
  27. quit
  28. exit

  29. # 关闭防火墙
  30. # 查看防火墙状态
  31. systemctl status firewalld

  32. # 关闭防火墙
  33. systemctl stop firewalld
复制代码
4. 配置主从复制
  1. # 进入主数据库
  2. mysql -uroot -p -h192.168.10.234 -P3306

  3. - 主数据库创建用户slave并授权
  4. # 创建用户
  5. create user 'slave'@'%' identified with mysql_native_password by 'password';

  6. # 授权
  7. grant replication slave on *.* to 'slave'@'%';

  8. # 刷新权限
  9. flush privileges;

  10. # 查询server_id值
  11. show variables like 'server_id';

  12. # 也可临时(重启后失效)指定server_id的值(主从数据库的server_id不能相同)
  13. set global server_id = 1;

  14. # 查询Master状态,并记录File和Position的值
  15. show master status;

  16. # 注意:执行完此步骤后退出主数据库,防止再次操作导致File和Position的值发生变化

  17. # 验证slave用户是否可用
  18. mysql -uslave -p -h192.168.10.234 -P3306

  19. # 进入从数据库
  20. mysql -uroot -p -h192.168.10.234 -P3307

  21. # 查询server_id值
  22. show variables like 'server_id';

  23. # 也可临时(重启后失效)指定server_id的值(主从数据库的server_id不能相同)
  24. set global server_id = 2;

  25. # 若之前设置过同步,请先重置
  26. stop slave;
  27. reset slave;

  28. # 设置主数据库
  29. change master to master_host='192.168.10.234',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156;

  30. # 开始同步
  31. start slave;

  32. # 若出现错误,则停止同步,重置后再次启动
  33. stop slave;
  34. reset slave;
  35. start slave;

  36. # 查询Slave状态
  37. show slave status\G

  38. # 查看是否配置成功
  39. # 查看参数 Slave_IO_Running 和 Slave_SQL_Running 是否都为yes,则证明配置成功。若为no,则需要查看对应的 Last_IO_Error 或 Last_SQL_Error 的异常值。
复制代码
5. 测试

通过工具连接主从数据库或者在服务器连接。
  1. # 在主数据库创建数据库test
  2. create database test;

  3. # 从数据库查看
  4. show databases;

  5. # 在主数据库创建表
  6. use test;
  7. create table t_user(id int, name varchar(20));

  8. # 插入数据
  9. insert into t_user values(1, 'C3Stones');

  10. # 在从数据库查看
  11. use test;
  12. select * from t_user;

  13. # 其他删改查操作请自行测试
复制代码
到此这篇关于Docker部署Mysql8.0.20并配置主从复制的实现步骤的文章就介绍到这了,更多相关Docker部署Mysql主从复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/server/322198rp5.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具