mysql 双主配置 基于docker 测试 及数据恢复测试

    xiaoxiao2025-09-03  328

    基于docker 1.10.3 镜像地址:https://hub.docker.com/_/mysql/ docker 相关的我就不介绍了,如果不是docker 也没有关系,自己装两个mysql  命令基本是一样的。都能看懂的。用docker 主要是测试方便 启动两个myql的容器 为了方便我们自己建容器网络(docker 1.9后) docker network create -d bridge --subnet=152.168.0.0/16 my_net mysql1  docker run --name mysql1 --net=my_net --ip=152.168.0.2 -v /etc/mysql1:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d 0bd9ef0792fa mysql2  docker run --name mysql2 --net=my_net --ip=152.168.0.3 -v /etc/mysql2:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d 0bd9ef0792fa 在mysql1 volume 中放入 config-file.cnf  扩展容器中的my.cnf [mysqld] log-bin   = mysql-bin  #名字 server-id = 1  # 各节点不同即可 expire-logs-days  = 100   #过多少天清除日志 binlog-ignore-db  = mysql  #忽略库 log-slave-updates # 这个参数用来配置从服务器的更新是否写入二进制日志,从库作为别人的主 需要 auto-increment-increment = 2  # 自增长度 auto-increment-offset = 1    # 从多少开始,防止自增主键同步重复 在mysql2 volume   中放入 config-file.cnf  扩展容器中的my.cnf [mysqld] log-bin   = mysql-bin server-id = 2  expire-logs-days  = 100  binlog-ignore-db  = mysql log-slave-updates auto-increment-increment = 2  auto-increment-offset = 2 开始设置主从复制 在mysql1执行 GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '123456'; 然后 执行show master staus; # 查看binlog信息 然后去mysql2 执行 change master to master_host='152.168.0.2',master_user='mysync',master_password='123456',  master_log_file='mysql-bin.000002',master_log_pos=228; start slave; show slave status\G   两个yes代表成功。不成功下面有错误信息和原因 然后在mysql2上执行 GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '123456'; 然后 执行show master staus; # 查看binlog信息 然后去mysql1 执行 change master to master_host='152.168.0.3',master_user='mysync',master_password='123456',  master_log_file='mysql-bin.000003',master_log_pos=228; start slave; show slave status\G   同样检查是否成功。 正常的mysql重启,slave现成也会自动重启,自动完成未完成的复制。 注意点:  如果双主 用keepalived做高可用 mysql1 挂了,切换到mysql2 ,然后mysql1 恢复,如果配置了keepalived 的切换,如果数据量大 则 会存在问题,小数据量不会有问题。 手动测试恢复: docker stop mysql2 docker exec -it mysql1 mysqldump -uroot -p123456 -B my_test my_test2 my_test3 -l -F > /mnt/0815.sql mysql执行备份语句 -l  加锁-F 重置 binglog,-B是有建库语句 ,然后mysql2  stop  slave,手动恢复数据: docker exec -it mysql2 mysql -uroot -p123456 < /mnt/0815.sql 然后从新binlog开始同步 ,注意修改mysql1 上show master status; 的结果 change master to master_host='152.168.0.2',master_user='mysync',master_password='123456',  master_log_file='mysql-bin.000002',master_log_pos=228; start slave; show slave status\G  
    转载请注明原文地址: https://ju.6miu.com/read-1302272.html
    最新回复(0)